o
    0il                     @   s  d dl mZmZmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZ G dd dee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dS )    )	BaseModelField	validator)ObjectId)datetimedate)OptionalList)Enumc                   @      e Zd ZdZdZdZdS )FleetStatusactiveinactivemaintenanceN__name__
__module____qualname__ACTIVEINACTIVEMAINTENANCE r   r   9/var/www/html/moveengine/app/v1/models/platform/fleets.pyr          r   c                   @   r   )VehicleStatusr   r   r   Nr   r   r   r   r   r      r   r   c                   @   s  e Zd ZU edddZeed< eddddZeed< edd	d	dZeed
< edddZ	eed< eddddZ
eed< edde jd dZeed< edddZeed< dZee ed< dZee ed< edZeed< eed< edZeed< eejdZeed< dS )VehicleBase.z"Unique vehicle identifier (string))description
vehicle_id      
min_length
max_lengthregistration_number   
vin_numberzReference to vehicle modelvehicle_model_id   coloril     )gtleyearzImage URL or pathvehicle_imageNinsurance_numberinsurance_expiry	vendor_idvendor_name	dealer_iddefaultstatus)r   r   r   r   r   str__annotations__r#   r%   r&   r(   r   nowr,   intr-   r.   r   r/   r   r0   r2   r   r   r5   r   r   r   r   r      s   
  r   c                   @   sh  e Zd ZU eddddZeed< edddZee ed	< ee	j
d
Z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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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< eed< dZee ed< eed< edddZee ed < dS )!	FleetBase.r   2   r    
fleet_nameN   r"   r   r3   r5   r   r#   r%   r&   r(   r,   r-   r.   r/   r0   r2   	fuel_typevehicle_typecapacityr1   tag_name	fleets_idFz6True if the vehicle can fly (e.g., drone capabilities))r4   r   can_fly)r   r   r   r   r<   r6   r7   r   r   r   r   r5   r   r#   r%   r&   r(   r,   r9   r-   r.   r/   r   r0   r2   r?   r@   rA   rB   rD   boolr   r   r   r   r:   !   s,   
 r:   c                   @   s&   e Zd ZU dZeed< dZeed< dS )FleetCreate 
account_iduser_idN)r   r   r   rH   r6   r7   rI   r   r   r   r   rF   :   s   
 rF   c                   @   sX   e Zd ZU edddZeed< eejdZ	eed< eejdZ
eed< G dd	 d	ZdS )
FleetN_id)r4   aliasiddefault_factorycreated_dateupdated_datec                   @   s   e Zd ZeeiZdZdS )zFleet.ConfigTN)r   r   r   r   r6   json_encoderspopulate_by_namer   r   r   r   ConfigC   s    rT   )r   r   r   r   rM   r6   r7   r   utcnowrP   rQ   rT   r   r   r   r   rJ   >   s
   
 rJ   c                   @   s  e Zd ZU eed< eed< dZee ed< dZee ed< 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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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d< dZee ed< eddZee ed< eed< eed< eddd d!d" Z eddd d#d$ Z!dS )%FleetResponsefleet_idrC   rG   rH   rI   r<   Nr   r5   r   r#   r%   r&   r(   r,   r-   r.   r/   r0   r1   rB   r2   r?   r@   rA   Fr3   rD   rP   rQ   T)prec                 C   s   t |tr	t|S |S N)
isinstancer   r6   clsvr   r   r   convert_objectidf   s   
zFleetResponse.convert_objectidc                 C   s   |r	t |tr	d S |S rY   )rZ   bytesr[   r   r   r   validate_image_urll   s   z FleetResponse.validate_image_url)"r   r   r   r6   r7   r9   rH   r   rI   r   r   r#   r%   r&   r(   r,   r-   r.   r/   r   r0   r1   rB   r2   r?   r@   rA   r   rD   rE   r   r   r^   r`   r   r   r   r   rV   G   s>   
 


rV   c                   @   s"   e Zd ZU eed< ee ed< dS )FleetResponseListtotal_countfleetsN)r   r   r   r9   r7   r	   rV   r   r   r   r   ra   s   s   
 ra   c                   @   sd   e Zd ZU eddddZee ed< edddZee ed< dZ	ee
 ed	< dZeee  ed
< dS )FleetUpdateNr   r;   r    r<   r=   r>   r   r5   vehicles)r   r   r   r   r<   r   r6   r7   r   r5   r   re   r	   r   r   r   r   r   rd   w   s
   
 rd   c                   @   s   e Zd ZdZdZdS )MaintenanceActionstartendN)r   r   r   STARTENDr   r   r   r   rf   }   s    rf   c                   @   sr   e Zd ZU eed< 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d< e
ejd	Zeed
< dS )FleetMaintenanceLogrW   rH   rI   actionNreason
start_timeend_timerN   rP   )r   r   r   r6   r7   rm   r   rn   r   ro   r   rU   rP   r   r   r   r   rk      s   
 rk   N)pydanticr   r   r   bsonr   r   r   typingr   r	   enumr
   r6   r   r   r   r:   rF   rJ   rV   ra   rd   rf   rk   r   r   r   r   <module>   s    	,