
    L0h                     X   S SK r S SKrS SK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 S	KJr  S
SKJrJrJrJr  S SKJr  \" 5         SrS\S\4S jrS\S\S\\   S\\   S\\   S\\   S\\   S\\   S\4S jr S\S\4S jr!S\S\S\4S jr"S\S\4S jr#g)    N)datetime)ObjectId)DuplicateKeyError)HTTPExceptionstatus)load_dotenv)Optional)	ASCENDING
DESCENDING)str_to_objectid   )	WorkforceWorkforceBaseWorkforceUpdateWorkforceResponseList)get_next_sequence_value_int	workforcereturnc                 X   U[            nUR                  SSU R                  0SU R                  0/05      (       a
  [	        SSS9eU R                  5       nUR                  [        R                  " 5       [        R                  " 5       SS.5        S	U;  a  S US	'    [        S
U5      US
'   UR                  U5      nUR                  SUR                  05      n[        US   5      US'   UR                  S	5      (       a  [         SUS	    3US	'   U$ ! [         a    [	        SSS9ef = f)N$ormobile_numberemail_idi  z6Workforce with this contact information already existsstatus_codedetailactive)created_datelast_updatedr   photow_id_idz/public/workforce/zDuplicate workforce entry)COLLECTION_NAMEfind_oner   r   r   dictupdater   utcnowr   
insert_oneinserted_idstrgetBASE_URLr   )r   dbworkforce_collectionworkforce_dataresultinserted_datas         PC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\services\platform\workforce.pycreate_workforce_servicer2      sS   o. $$e	)112	Y''(. &   4lmm ^^%N ) )  n$"&wQ!<VR!Hv%00@ -55uf>P>P6QR  #=#78eW%%(0z1CMRYDZC[%\M'" Q4OPPQs   A6D D)skiplimitqr   created_date_fromcreated_date_tosort_by
sort_orderc
                    U[            n
0 nU(       a  USS.nSU0SU0SU0SU0/US'   U(       a  X;S'   U(       d  U(       aH  0 nU(       a  [        R                  " US	5      US
'   U(       a  [        R                  " US	5      US'   XS'   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[        U5      nU HU  n[        US   5      US'   S H;  nUU;   d  M  [        UU   [        5      (       d  M%  UU   R                  5       UU'   M=     MW     U
R                  U5      nUUS.$ )Ni)z$regexz$options
first_name	last_namer   r   r   r   z%Y-%m-%dz$gtez$lter   )r<   r=   r   r   r   r   ascr!   workforce_id)r   r   date_of_birth	join_date)total_countr   )r"   r   strptimer*   r
   r   findsortr3   r4   listr)   
isinstance	isoformatcount_documents)r3   r4   r5   r   r6   r7   r8   r9   r,   current_userr-   queryregex_querydate_filtersort_fields
sort_fieldsort_directioncursorr   entryfieldrB   s                         r1   get_workforce_servicerT   ?   s    o.E!"4;'+&%k*	
e  h O"*"3"34Ez"RK"*"3"3OZ"PK +n # (&K .9J","5Y:N!&&u-22:~NSSTXY__`efFVI  #E%L 1nSE~*U5\8"D"D$U|557e T  '66u=K&Y??    r?   c                 |    U[            R                  S[        U 5      05      nU(       a  [        US   5      US'   U$ )Nr!   id)r"   r#   r   r)   )r?   r,   r   s      r1   read_workforce_servicerX   }   s=    ?#,,e_\5R-STIi./	$rU   r.   c                    U[            nUR                  S[        U 5      05      nU(       d
  [        SSS9eUR	                  5       R                  5        VVs0 s H  u  pVUc  M
  XV_M     nnnUR                  S[        U 5      0SU05      nUR                  S:X  a
  [        SSS9eUR                  S[        U 5      05      n	U	(       a  [        U	R                  S5      5      U	S'   U	$ [        SSS9es  snnf )	Nr!     Workforce not foundr   z$setr   rW   z Workforce not found after update)
r"   r#   r   r   r$   items
update_onematched_countr)   pop)
r?   r.   r,   r-   existingkvupdate_datar/   updateds
             r1   update_workforce_servicere      s    o.#,,e_\5R-STH4IJJ$2$7$7$9$?$?$AS$ADAQ414$AKS!,,	-.	F
 q 4IJJ"++UOL4Q,RSGGKK./
C0R
SS Ts   	C3%C3c                     U[            nUR                  S[        U 5      05      nU(       d
  [        SSS9e[	        US   5      US'   US	 UR                  S[        U 5      05        U$ )Nr!   rZ   r[   r   rW   )r"   r#   r   r   r)   
delete_one)r?   r,   r-   r   s       r1   delete_workforce_servicerh      sq    o.$--uol6S.TUI4IJJ)E*+IdO%##UOL,I$JKrU   )$jsonosrer   bsonr   pymongo.errorsr   fastapir   r   dotenvr   typingr	   pymongor
   r   app.v1.libraries.objectr   models.platform.workforcemodelr   r   r   r   app.v1.services.sequencer   r"   r$   r2   intr)   rT   rX   re   rh    rU   r1   <module>rw      s    	 	   , )   ) 3  A  &Q &Qd &QP;@
;@;@ };@ SM	;@
  };@ c];@ c];@ ;@ 
;@| T T3 T TX\ T,3 t rU   