
    ^hx]                        S SK J r   S SKJr  S SKJrJr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rS
rSrSrSrS\S\R.                  S\4S jr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\S\S\S\
\   S\
\   S\
\   S\
\   S\
\   S\
\   S \
\   S!\
\   S"\
\   4S# jjrS\S\S\S\R.                  S\ 4
S$ jr!  S,S\S\
\   4S% j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)ScheduleCreateScheduleUpdateScheduleWithTasksCreate)database)Optional)	ASCENDING
DESCENDING)get_next_sequence_value_int)connected_clientsN	schedules	workforcefleetstasksschedule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$ )Ncreated_datecustomer_id	customers_id
first_name	last_namephoneemailr   r   r   r   r   customer_infoworkforce_idr   mobile_numberemail_id)r   r   r!   r"   r    workforce_infofleet_idr   
fleet_name)r%   r$   
fleet_infosch_idschedule_id)dictr   utcnowgetfind_oner   strr   SCHEDULES_COLLECTION
insert_oneinserted_id)r   r   datacustomerr   fleetresults          PC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\services\platform\schedules.pycreate_schedule_servicer6      s   ==?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
 12>DN$%006Ff001DK    r(   c                 ~    U[            R                  S[        U 5      05      nU(       a  [        US   5      US'   U$ g )Nr   r(   )r.   r,   r   r-   r(   r   r   s      r5   get_schedule_servicer:   ;   s@    &'00%+9N1OPH"%huo"6r7   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   $set)r)   itemsr.   
update_oner   r:   )r(   r;   r   kvupdatess         r5   update_schedule_servicerC   K   sf     & 3 3 5G 5tqt 5GG''0E(FQXHYZ00 Hs
   	A)A)c                 p    [        X5      nU(       a#  U[           R                  S[        U 5      05        U$ )Nr   )r:   r.   
delete_oner   r9   s      r5   delete_schedule_servicerF   P   s2    #K4H
 ++UH[4I,JKOr7   
account_idskiplimitsearch_querystatusstart_date_fromstart_date_tor   r    r$   sort_byorder_byc                    SU 0nU(       a  USS.US'   U(       a  XMS'   U(       d  U(       aH  0 nU(       a  [         R                  " US5      US'   U(       a  [         R                  " US5      US'   XS	'   U(       a  X}S
'   U(       a  XS'   U	(       a  XS'   SSSSS	S.nUR                  U
S	5      nUS:X  a  [        O[        n[        S5        [        U5        US   R                  U5      R                  UU5      R                  U5      R                  U5      nUS   R                  U5      n/ nU H%  n[        US   5      US'   UR                  U5        M'     UUS.$ )NrG   iz$regexz$optionsschedule_namerK   z%Y-%m-%dz$gtez$lter   r   r    r$   description
start_timeend_time)rS   rT   rU   rV   r   r   queryqueryqueryqueryr   r   r(   )total_countr   )r   strptimer+   r
   r   printfindsortrH   rI   count_documentsr-   append)rG   rH   rI   rJ   rK   rL   rM   r   r    r$   rN   rO   r   querydate_filterallowed_sort_fields
sort_fieldsort_directioncursorrX   resultsdocs                         r5   list_schedules_servicerg   W   sc     :&E,8c!Jo h -"*"3"3OZ"PK"*"3"3M:"NK +n*m ,n$j )$"& %((.AJ"*a-YZN	
 !	%L_!!%(--j.INNtTZZ[`aF[/11%8KG U_Ms  'W==r7   c                     US   R                  [        U 5      US.5      nUS   R                  [        U5      US.5      nU(       a  U(       d  gUR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S	5      UR                  S
5      UR                  S5      UR                  S5      UR                  S5      UR                  S5      S.
nUS   R                  USS.5      nS nU(       a  UR                  S5      (       a  U[           R                  S[        US   5      05      n	U	(       a|  U	R                  S5      [	        U	R                  S5      5      U	R                  S5      U	R                  S5      U	R                  S5      U	R                  S5      U	R                  S5      S.nX&S.n
U(       a  XS'   U[
           R                  S[        U 5      0SU
05        U[           R                  S[        U5      0SSU 005        U[           R                  SU 0SS U005        X&S.nU(       a  XS'   U[           R                  SU 0SU05        [        R                  " U5      nU(       a@  S!S"U S#.n [        R                  " UR                  [        R                  U5      5      5        gg! [          a  n[#        S$U S%U 35         S nAgS nAff = f)&Nr   )r   rG   r   Fr   r   r!   r"   genderemergency_contactaddressblood_groupis_humanphoto)
r   r   r!   r"   ri   rj   rk   rl   rm   rn   workforce_vehicleT)r    rK   
vehicle_idr   r%   registration_numbercolorvehicle_image	fuel_typevehicle_type)r%   rp   rq   rr   rs   rt   ru   )r    r#   r&   r=   r(   r    schedule_assignmentz(A new schedule has been assigned to you.)typemessager(   z#WebSocket send error for workforce z: )r,   r   r+   FLEETS_COLLECTIONr-   r.   r?   WORKFORCE_COLLECTIONupdate_manyTASKS_COLLECTIONr   asynciocreate_task	send_textjsondumps	ExceptionrZ   )r(   rG   r    r   r   r   r#   ro   r&   r3   update_fieldstask_update_fields	websocketnotificationes                  r5   assign_schedule_servicer      s   +''0EU_(`aH;((,1GWa)bcI9  mmL1]];/"7MM*---)&]]+>?==+ }}]3MM*-w'N ./88%6 J.22<@@$%..x@QR^@_7`/ab#ii5!%))E"23',yy1F'G7+!&?!;"YY{3 %		. 9J &2TM&0l#''	%&	 ''	&'	--. %%	$	.,/0 +7Y+5<($$	$	#$ "%%l3I)A&

	M	 3 3DJJ|4L MN   	M7~RsKLL	Ms   8K 
K="K88K=c                     SU 0nU(       a  USS.US'   US   R                  USSS.5      R                  S5      n/ nU H&  nUR                  [        US	   5      US   S
.5        M(     U$ )NrG   rQ   rR   rS   r      )r   rS   2   r   )r(   rS   )r[   rI   r^   r-   )rG   rJ   r   r_   rd   re   rf   s          r5   search_schedules_select_servicer   5  s    
 :&E,8c!Jo_!!%Q)GHNNrRFGs5z? 1
 	  Nr7   travel_statusc                     U[            R                  S[        U 5      0SS[        U5      005      nUR                  S:X  a  g [        X5      $ )Nr   r=   r   r   )r.   r?   r   intmatched_countr:   )r(   r   r   r4   s       r5   update_travel_status_servicer   J  sU    $%00	%&	/3}#567F q 00r7   payloadc                 6   S[         R                  " 5       R                  S5       3nSSKJn  [        U R                  UU R                  U R                  U R                  / S9nUR                  XA5      nU R                  (       a  U R                  OSSSSSS S	.S
SSSSS S	./n/ nU GH=  nUS   U R                  UR                  UR                  UR                  UR                  UR                   UR"                  [         R                  " 5       S.	n	[%        USS 5      (       a  US   R'                  S[)        UR*                  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[0           R3                  U	5      nUR5                  [/        UR6                  5      5        GM@     U[8           R;                  S[)        US   5      0SSU005        XuS'   U$ )Nmovex_%Y%m%d_%H%M%Sr   r   rG   rS   rT   rU   rV   task_idszDefault Pickup LocationzDefault Pickup Coordinatespickup)locationlocation_coordsdrop_location_coordsrw   sequencetimingzDefault Drop Locationdropoff   r(   )	r(   rG   r   r   r   rw   r   r   r   r   r   r   r   r   r   r   r   r   r=   r   )r   r*   strftime r   r   rG   rT   rU   rV   r6   
task_stopsr   r   r   rw   r   r   getattrr,   r   r   r+   r-   r|   r/   r^   r0   r.   r?   )r   r   rS   schedule_serviceschedule_datar   
stops_datar   stopstop_docr2   r4   s               r5   &create_schedule_with_tasks_service_bkpr     s   X__.77HIJM 0"%%#''%%!!M  77JH (/'9'9##1;$@	
 0;$@	
@J& H#M2!,,#33$($=$=IIkk$OO-

 4--+//AQAQ8R0STH"*,,|"<!)k!:%\\'2%\\'2#&x#7-) $%00:F../05 : ''	-012	*h'( $ZOr7   c                    SSK Jn  S[        R                  " 5       R	                  S5       3n[        U R                  UU R                  U R                  U R                  / S9nUR                  XA5      nU R                  =(       d    / n/ n/ nU GH<  n	US   U R                  U	R                  U	R                  (       a  U	R                  R                  5       OS U	R                  U	R                   (       a  U	R                   R                  5       OS U	R"                  [%        U	R&                  5      U	R(                  [        R                  " 5       S.
n
U	R*                  (       a  US   R-                  S	[/        U	R*                  5      05      nU(       aS  UR1                  S
5      UR1                  S5      UR1                  S5      UR1                  S5      [3        US	   5      S.U
S'   U[4           R7                  U
5      nUR9                  [3        UR:                  5      5        UR9                  U	R                  U	R                  (       a  U	R                  R                  5       OS U	R                  U	R                   (       a  U	R                   R                  5       OS U	R"                  [%        U	R&                  5      U	R(                  S.5        GM?     U[<           R?                  S	[/        US   5      0SUUS.05        XuS'   XS'   U$ )Nr   r   r   r   r   r(   )
r(   rG   r   r   drop_locationr   rw   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   rw   r   r   r=   )r   r   r   r   ) r   r   r   r*   r   r   rG   rT   rU   rV   r6   r   r   r   r)   r   r   rw   r   r   r   r   r,   r   r+   r-   r|   r/   r^   r0   r.   r?   )r   r   r   rS   r   r   r   r   r   r   r   r2   r4   s                r5   "create_schedule_with_tasks_servicer   2  s   / X__.77HIJM #%%#''%%!!M  77JH ##)rJHJ $M2!,,>B>R>Rt3388:X\!//HLHaHaD$=$=$B$B$DgkIIDMM*kk$OO-
 +//AQAQ8R0STH"*,,|"<!)k!:%\\'2%\\'2#&x#7-) $%00:F../0 	>B>R>Rt3388:X\!//HLHaHaD$=$=$B$B$DgkIIDMM*kk
 	A V ''	-012	 $
 	 $Z'\Or7   )r   
   NNNNNNNr   r   N)NN)&r   bsonr    app.v1.models.platform.schedulesr   r   r   app.dbr   typingr	   pymongor
   r   app.v1.services.sequencer   app.utils.connectionsr   r}   r.   rz   ry   r|   MongoDBr)   r6   r-   r:   rC   rF   r   rg   boolr   r   r   r   r    r7   r5   <module>r      sd     c c   ) @ 3 " "   )n )(:J:J )t )Vc x/?/? D  1 1n 1(JZJZ 1_c 1
 (2B2B t  "& %)#'!%"&"+A>A>
A> A> 3-	A>
 SMA> c]A> C=A> #A> 3-A> smA> c]A> smA>NU U# US UV^VfVf Uko Ur #'3-*1c 1# 18K[K[ 1`d 1@H4K HQYQaQa Hfj HPN0G NXM]M] Nbf Nr7   