o
    0i                     @   sb  d dl mZmZmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZ G dd deeZG dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZd'S )(    )	BaseModelFieldroot_validator	validatormodel_validator)datetime)ListOptionalDictAny)Enumc                   @   s   e Zd ZdZdZdZdS )StatusactiveinactivemaintenanceN)__name__
__module____qualname__ACTIVEINACTIVEMAINTENANCE r   r   </var/www/html/moveengine/app/v1/models/platform/schedules.pyr      s    r   c                   @      e Zd ZU eed< eed< dS )CoordinateslatlngN)r   r   r   float__annotations__r   r   r   r   r         
 r   c                   @   s   e Zd ZU dZee ed< eed< dZee ed< dZee	 ed< dZ
ee	 ed< dZeee  ed< dZee ed< dZee ed	< eejd
Zeed< dZee ed< dS )ScheduleBaseN
account_idschedule_namedescription
start_timeend_timetask_idsworkforce_idmetadata)defaultstatusaddons_name)r   r   r   r!   r	   strr   r#   r$   r   r%   r&   r   r'   r(   r
   r   r   r   r*   r+   r   r   r   r   r       s   
 r    c                   @      e Zd ZdS )ScheduleCreateNr   r   r   r   r   r   r   r.   !       r.   c                   @   s   e Zd ZU dZee ed< dZee ed< dZee	 ed< dZ
ee	 ed< dZeee  ed< dZee ed< dZee ed< dZee ed	< dS )
ScheduleUpdateNr"   r#   r$   r%   r&   r'   r(   r+   )r   r   r   r"   r	   r,   r   r#   r$   r   r%   r&   r   r'   r(   r
   r+   r   r   r   r   r1   $   s   
 r1   c                   @   s   e Zd ZU eed< dZee ed< eed< dZ	ee
 ed< dZee
 ed< dZee
 ed< dZee ed< dZeeeeef   ed	< dS )
Scheduleschedule_idNsch_idcreated_datecustomer_infoworkforce_info
fleet_infotravel_status
task_stops)r   r   r   r,   r   r4   r	   intr   r6   dictr7   r8   r9   r:   r   r
   r   r   r   r   r   r2   .   s   
  r2   c                   @   "   e Zd ZU eed< ee ed< dS )	Schedulestotal_count	schedulesN)r   r   r   r;   r   r   r2   r   r   r   r   r>   8      
 r>   c                   @   s&   e Zd ZU eed< eed< eed< dS )ScheduleAssignmentRequestr3   r!   r'   Nr   r   r   r,   r   r   r   r   r   rB   <   s   
 rB   c                   @   r   )ScheduleSelectItemr3   r"   NrC   r   r   r   r   rD   A   r   rD   c                   @   s   e Zd ZU eed< eed< dS )!ScheduleTravelStatusUpdateRequestr3   r9   N)r   r   r   r,   r   r;   r   r   r   r   rE   E   r   rE   c                   @   s   e Zd ZU eed< dZee ed< dZee ed< dZ	ee ed< eed< e
ed< dZee ed< dZee ed	< dZeee  ed
< edddd ZdS )TaskStoplocationNlocation_coordsdrop_locationdrop_location_coordstypesequencetimingcustomer_idskillsafter)modec                 C   s   | j r| js
tdd| j fd| jffD ].\}}|jd u s"|jd u r*td| dt|jttfr:t|jttfsBtd| dq| S )NzCBoth 'location_coords' and 'drop_location_coords' must be provided.rH   rJ   'z,' must contain valid 'lat' and 'lng' values.z!' lat/lng must be numeric values.)rH   rJ   
ValueErrorr   r   
isinstancer   r;   )self
field_namecoordr   r   r   validate_coordinatesT   s    zTaskStop.validate_coordinates)r   r   r   r,   r   rH   r	   r   rI   rJ   r;   rM   r   rN   rO   r   r   rX   r   r   r   r   rF   I   s   
 rF   c                   @   s   e Zd ZU eed< dZee ed< dZee ed< dZ	ee ed< dZ
ee ed< dZeee  ed< dZee ed< dZee ed	< dS )
ScheduleWithTasksCreater!   Nr+   r$   r%   r#   r:   vehicle_model_idpriority_type)r   r   r   r,   r   r+   r	   r$   r   r%   r#   r:   r   rF   rZ   r[   r   r   r   r   rY   e   s   
 rY   c                   @   s>   e Zd ZU eed< eed< eed< eed< dZee ed< dS )ShiftStatusBaser!   r3   r'   shift_statusNremarks)r   r   r   r,   r   r^   r	   r   r   r   r   r\   p   s   
 r\   c                   @   r-   )ShiftStatusCreateNr/   r   r   r   r   r_   x   r0   r_   c                   @   s.   e Zd ZU dZee ed< dZee ed< dS )ShiftStatusUpdateNr]   r^   )r   r   r   r]   r	   r,   r   r^   r   r   r   r   r`   |   s   
 r`   c                   @   s.   e Zd ZU eed< eed< dZee ed< dS )ShiftStatusResponseidr5   Nupdated_date)r   r   r   r,   r   r   rc   r	   r   r   r   r   ra      s   
 ra   c                   @   r=   )ShiftStatusListr?   shift_statusesN)r   r   r   r;   r   r   ra   r   r   r   r   rd      rA   rd   N) pydanticr   r   r   r   r   r   typingr   r	   r
   r   enumr   r,   r   r   r    r.   r1   r2   r>   rB   rD   rE   rF   rY   r\   r_   r`   ra   rd   r   r   r   r   <module>   s*    

