o
    ՞h                  
   @   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}|t }|dt	| j
idd| j| jd| j| j| jdd	i |t }d| j| jd| j| j| j|rm|d
nd |ru|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$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   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 r2   E/var/www/html/moveengine/app/v1/services/platform/workforcevehicle.py!create_vehicle_assignment_service   sj   

r4   
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 )	Nr5   r)   r%   r   r   r   r   r   )r   r%   listfindr!   
isinstancer   	isoformat)r5   r)   r6   r   r+   queryrecordsrr2   r2   r3   get_vehicle_assignments_serviceU   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+   rB   update_resultr2   r2   r3   unassign_vehicle_servicel   s6   

rF   N)r   pymongo.errorsr   app.dbr   bsonr   typingr   'app.v1.models.platform.workforcevehicler   r   r#   r'   MongoDBr   r4   r!   r7   r>   rF   r2   r2   r2   r3   <module>   s    (I