
    ,hM              $          S SK J r   S SKJr  S SKJr  S SKJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJrJr  S	rS
rS\S\R&                  S\4S jrS\S\R&                  S\\   4S jrS\S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\S\S\\   S \\   S\R&                  S\4$S! jrS\S"\	S\R&                  S\4S# jrS\S\R&                  S\4S$ jrS%\S\R&                  S\4S& jrg')(    )datetime)ObjectId)Optional)database)
TaskCreate
TaskUpdate)
Collection)get_next_sequence_value_int)	ASCENDING
DESCENDINGtasks	waypointstaskdbreturnc                    U R                  5       n[        R                  " 5       US'   UR                  S5      (       a|  US   R	                  S[        US   5      05      nU(       aS  UR                  S5      UR                  S5      UR                  S5      UR                  S5      [        US   5      S	.US
'   UR                  S5      (       a|  US   R	                  S[        US   5      05      nU(       aS  UR                  S5      UR                  S5      UR                  S5      UR                  S5      [        US   5      S.US'   UR                  S5      (       aL  US   R	                  S[        US   5      05      nU(       a#  UR                  S5      [        US   5      S.US'   [        SU5      US'   U[           R                  U5      n[        UR                  5      US'   UR                  S/ 5      nU Hb  n[        UR                  5      US   US   US   UR                  S5      [        R                  " 5       S.n	U[           R                  U	5        Md     U$ )Ncreated_datecustomer_id	customers_id
first_name	last_namephoneemail)r   r   r   r   r   customer_infoworkforce_id	workforcemobile_numberemail_id)r   r   r   r   r   workforce_infofleet_idfleets
fleet_name)r#   r!   
fleet_infot_idtask_id
task_stopslocationtypesequencetiming)r&   r(   r)   r*   r+   r   )dictr   utcnowgetfind_oner   strr
   
COLLECTION
insert_oneinserted_idWAYPOINT_COLLECTION)
r   r   datacustomerr   fleetresultwaypoints_datawpwaypoints
             LC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\services\platform\tasks.pycreate_task_servicer=      s,   99;D#??,D xxk?++UHT-=P4Q,RS&ll<8%\\+6!g.!g."8E?3%D! xx{O,,eXd>>R5S-TU	'mmL9&]];7!*!?%MM*5 #Ie$4 5&D!" xx
8%%uhtJ7G.H&IJ#ii5e-"D /vr:DL
^&&t,F&,,-DO XXlB/N6--.:vJ:ffX&$OO-
 	**84  K    r&   c                 ~    U[            R                  S[        U 5      05      nU(       a  [        US   5      US'   U$ g )Nr   r&   )r1   r/   r   r0   r&   r   r   s      r<   get_task_servicerA   D   s=    j>""E8G+<#=>Dd5k*Yr>   
account_id
service_id	task_modepriority	roundtrip	from_dateto_dater   r   r!   statusqskiplimitsort_by
sort_orderc                    SU 0nU(       a  UUS'   U(       a  UUS'   U(       a  UUS'   Ub  UUS'   U(       a  UUS'   U(       a  UUS'   U	(       a  U	US'   U
(       a  U
US	'   U(       a  US
S.nSU0SU0SU0SU0/US'   U(       d  U(       aI  0 nU(       a  [         R                  " US5      US'   U(       a  [         R                  " US5      US'   UUS'   SSSSSS.nUR                  US5      nUS:X  a  [        O[        nU[
           R                  U5      R                  UU5      R                  U5      R                  U5      n/ nU H%  n[        US   5      US'   UR                  U5        M'     [        U5      US.$ )NrB   rC   rD   rE   rF   r   r   r!   rI   i)z$regexz$optionsr   z$orz%Y-%m-%dz$gtez$lter   capacity)rD   rE   rQ   rF   r   ascr   r&   )total_countusers)r   strptimer.   r   r   r1   findsortrK   rL   r0   appendlen)rB   rC   rD   rE   rF   rG   rH   r   r   r!   rI   rJ   rK   rL   rM   rN   r   queryregex_query
date_querysort_fields
sort_fieldsort_directioncursorresultsdocs                             r<   list_tasks_servicerc   K   s   & :&E(l&k$j&k*m ,n$j h!"4;'k"%+&	
e G
!)!2!29j!IJv!)!2!27J!GJv *n ! &K .9J","5Y:N
^  ',,ZHMMdSYYZ_`F GSZIs  w<'::r>   updatec                     UR                  5       R                  5        VVs0 s H  u  p4Uc  M
  X4_M     nnnU[           R                  S[	        U 5      0SU05        [        X5      $ s  snnf )Nr   z$set)r,   itemsr1   
update_oner   rA   )r&   rd   r   kvupdatess         r<   update_task_servicerk      sc     & 3 3 5G 5tqt 5GGzNuhw&7867:KLG(( Hs
   	A)A)c                 p    [        X5      nU(       a#  U[           R                  S[        U 5      05        U$ )Nr   )rA   r1   
delete_oner   r@   s      r<   delete_task_servicern      s0    G(D
:!!5(7*;"<=Kr>   payloadc                 
   0 nSU ;   a	  U S   US'   O)SU ;   a	  U S   US'   OSU ;   a	  U S   US'   O[        S5      eUS   nUR                  U5      nUR                  0 UESS0E5      nUR                  0 UESS0E5      nUUUS	.$ )
Nr   r   r!   z:One of customer_id, workforce_id, or fleet_id is required.r   rI   	completed	cancelled)total_taskscompleted_taskscancelled_tasks)
ValueErrorcount_documents)ro   r   rZ   
collectiontotalrq   rr   s          r<   get_task_summary_servicerz      s    E&}5m	7	" ' 7n	w	#J/jUVVGJ&&u-E**+Ke+KX{+KLI**+Ke+KX{+KLI $$ r>   N)r   bsonr   typingr   app.dbr   app.v1.models.platform.tasksr   r   pymongo.collectionr	   app.v1.services.sequencer
   pymongor   r   r1   r4   MongoDBr,   r=   r0   rA   boolintrc   rk   rn   rz    r>   r<   <module>r      s       ? ) @ )
! 5j 5h.>.> 54 5nc x'7'7 HTN K;K;K; }K; sm	K;
 ~K; }K; c]K; #K; 3-K; smK; SMK; }K; K; K; c]K;  !K;" 	#K;$ 
%K;Z) )j )h>N>N )SW )
 (*:*: t d 0@0@ T r>   