o
    0ig                  
   @   s   d dl m Z  d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 dZdZd	Zd
e
dejdefddZdedee dee dejdef
ddZdedejdefddZdS )    )datetime)DuplicateKeyError)database)ObjectId)Optional)VehicleAssignmentworkforce_vehiclefleets	workforcedatadbreturnc           	      C   s  |t  }|  }t |d< t |d< z||}t|j|d< |t }|dt	| j
idddddddd}|t }|dt	| j
idd| j| jd| j| j| jdd	i |t }d| j| j|rh|d
nd |rp|dnd d| j| j| j|r|dnd |r|dnd |r|dnd |r|dnd |r|dnd |r|d
nd |r|dnd dd}|dt	| jid|i |W S  ty   tdw )Ncreated_dateupdated_date_id   )
fleet_nameregistration_numbercolorvehicle_imagecapacitycan_flyvehicle_model_id$setT)is_fleet_assignedassigned_fromassigned_tostatus)r   r   r   
fleet_infor   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   z.Vehicle is already assigned to this workforce.)COLLECTION_NAMEdictr   utcnow
insert_onestrinserted_idFLEET_COLLECTION_NAMEfind_oner   
vehicle_id
update_oner   r   r   WORKFORCE_COLLECTION_NAMEgetworkforce_idr   
ValueError)	r   r   
collectionassignment_dataresultfleets_collection	fleet_docworkforce_collectionworkforce_update_data r4   E/var/www/html/moveengine/app/v1/services/platform/workforcevehicle.py!create_vehicle_assignment_service   sv   
r6   
account_idr+   fleet_idc                 C   s   |t  }d| i}|r||d< trt|d< t||}|D ]V}t|d |d< d|v r:t|d tr:|d  |d< d|v rMt|d trM|d  |d< d|v r`t|d tr`|d  |d< d|v rst|d trs|d  |d< q|S )	Nr7   r+   r'   r   r   r   r   r   )r   r'   listfindr#   
isinstancer   	isoformat)r7   r+   r8   r   r-   queryrecordsrr4   r4   r5   get_vehicle_assignments_service[   s&   r@   c                 C   s   |t  }|| dd}|stddd|d|d idt dt d	i}|jd
kr3tdddt |d< d|d< d|d |d d|d ddS )NT)r+   r   i  z.No active assignment found for this workforce.)status_codedetailr   r   F)r   r   r   r   i  zUnassignment failed.r   r   z Vehicle unassigned successfully.r+   r'   )r+   r'   r   r   )message
assignment)r   r&   HTTPExceptionr(   r   r!   modified_count)r+   r   r-   rD   update_resultr4   r4   r5   unassign_vehicle_servicer   s6   

rH   N)r   pymongo.errorsr   app.dbr   bsonr   typingr   'app.v1.models.platform.workforcevehicler   r   r%   r)   MongoDBr    r6   r#   r9   r@   rH   r4   r4   r4   r5   <module>   s    (O