
    i7                         d dl mZm Z mZ d dlmZmZmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZmZ  G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )datedatetimetime)	BaseModel
ConfigDictFieldfield_validatormodel_validator)ReservationSourceReservationStatus)CustomerRead)TableCombinationRead	TableRead)normalize_customer_phone!normalize_optional_customer_emailc                   X    e Zd ZU eed<   eed<   edz  ed<   eed<   eed<    ed      Zy)	ReservationStatusHistoryReadidreservation_idN
old_status
new_status
changed_atTfrom_attributes)	__name__
__module____qualname__int__annotations__r   r   r   model_config     @/var/www/html/PRENOTAZIONI_IA/backend/app/schemas/reservation.pyr   r      s.    G!D((!!d3Lr"   r   c                       e Zd ZU eed<   eed<   eed<    edd      Zeed<    edd      Z	eed	<   e
j                  Ze
ed
<   ej                  Zeed<   dZedz  ed<    edd      Zedz  ed<   y)ReservationBasevenue_idreservation_date
start_timer   X  )gtleduration_minutesx   guestsstatussourceNnotesdefault
max_lengtharea_preference)r   r   r   r   r   r   r   r   r,   r.   r   pendingr/   r   manualr0   r1   strr5   r!   r"   r#   r%   r%      s{    M!Q3/c/1%FC% 1 9 9F9 1 8 8F8E3:"'"EOS4ZEr"   r%   c                   .   e Zd ZU dZedz  ed<    eddd      Zedz  ed<    eddd      Z	edz  ed	<   dZ
edz  ed
<   dZedz  ed<    ed      dd       Z ed	      ededz  dedz  fd              Z ed
      ededz  dedz  fd              Zy)ReservationCreateNcustomer_id   r-   r3   
min_lengthr4   customer_name   (   customer_phonecustomer_emailcustomer_notesafter)modereturnc                 d    | j                   #| j                  r| j                  st        d      | S )Nu;   È richiesto customer_id oppure nome e telefono del cliente)r;   r?   rB   
ValueError)selfs    r#   validate_customer_inputz)ReservationCreate.validate_customer_input(   s/    #T-?-?tGZGZZ[[r"   valuec                     |y t        |      S Nr   clsrL   s     r#   validate_customer_phonez)ReservationCreate.validate_customer_phone.        ='..r"   c                     t        |      S rN   r   rP   s     r#   validate_customer_emailz)ReservationCreate.validate_customer_email5        177r"   )rG   r:   )r   r   r   r;   r   r   r   r?   r8   rB   rC   rD   r
   rK   r	   classmethodrR   rV   r!   r"   r#   r:   r:   !   s    "Kt" %dqS QM3:Q!&tb!QNC$JQ!%NC$J%!%NC$J%'" #
 %&/C$J /3: /  '/
 %&8C$J 83: 8  '8r"   r:   c                      e Zd ZU dZedz  ed<    eddd      Zedz  ed<    eddd      Z	edz  ed	<   dZ
edz  ed
<   dZedz  ed<   dZedz  ed<   dZedz  ed<    eddd      Zedz  ed<    eddd      Zedz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed<    edd      Zedz  ed<    ed	      ededz  dedz  fd              Z ed
      ededz  dedz  fd              Zy)ReservationUpdateNr;   r<   r-   r=   r?   r@   rA   rB   rC   rD   r'   r(   r   r)   )r3   r*   r+   r,   r.   r/   r0   r1   r2   r5   rL   rG   c                     |y t        |      S rN   rO   rP   s     r#   rR   z)ReservationUpdate.validate_customer_phoneJ   rS   r"   c                     t        |      S rN   rU   rP   s     r#   rV   z)ReservationUpdate.validate_customer_emailQ   rW   r"   )r   r   r   r;   r   r   r   r?   r8   rB   rC   rD   r'   r   r(   r   r,   r.   r/   r   r0   r   r1   r5   r	   rX   rR   rV   r!   r"   r#   rZ   rZ   ;   sW   "Kt" %dqS QM3:Q!&tb!QNC$JQ!%NC$J%!%NC$J%$(dTk("Jt"#(!#DcDjDtc:FC$J:'+F$+'+F$+E3:"'"EOS4ZE%&/C$J /3: /  '/
 %&8C$J 83: 8  '8r"   rZ   c                   J   e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed<   eed	<   e	d
z  ed<   e	d
z  ed<   ed
z  ed<   ed
z  ed<   e
ed<   e
ed<   eed<   d
Zed
z  ed<   d
Zed
z  ed<   dZeed<   d
Ze	d
z  ed<   g Zee	   ed<   g Zee   ed<    ed      Zy
)ReservationReadr   r&   r;   r'   r(   r,   r.   r/   r0   Nr1   r5   assigned_table_idassigned_combination_id
created_at
updated_atcustomerassigned_tableassigned_combinationFrequires_table_joinservice_summaryservice_stepsstatus_historyTr   )r   r   r   r   r   r   r   r   r   r8   r   r   rd   r   re   r   rf   boolrg   rh   listri   r   r   r    r!   r"   r#   r^   r^   W   s    GMK:4ZTz! 4Z''+NI$+8<.5< %%"&OS4Z&!M49!9;ND56;d3Lr"   r^   c                       e Zd ZU eed<   y)RecalculateDayRequestr'   N)r   r   r   r   r   r!   r"   r#   rm   rm   r   s    r"   rm   c                   ~    e Zd ZU eed<   edz  ed<   edz  ed<   edz  ed<   dZeed<   dZedz  ed<   g Z	e
e   ed	<   y)
AssignmentResultr   Nr_   r`   assignment_labelFrf   rg   rh   )r   r   r   r   r   r8   rf   rj   rg   rh   rk   r!   r"   r#   ro   ro   v   sM    Tz! 4Z'Dj  %%"&OS4Z&!M49!r"   ro   c                   (    e Zd ZU ee   ed<   eed<   y)ReservationListResponseitemstotalN)r   r   r   rk   r^   r   r   r!   r"   r#   rr   rr      s      Jr"   rr   N)r   r   r   pydanticr   r   r   r	   r
   app.models.reservationr   r   app.schemas.customerr   app.schemas.tabler   r   app.services.contact_validationr   r   r   r%   r:   rZ   r^   rm   ro   rr   r!   r"   r#   <module>rz      s    ) ) S S G - = g49 4	Fi 	F8 848	 884i 46I "y "i r"   