
    $h32              2          S SK r S SKJrJr  S SKJrJrJrJrJrJ	r	J
r
JrJr  S SKJr  S SKJr  S SKJrJrJr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J r J!r!J"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  SSK/J0r0J1r1J2r2  \" 5       r3S\4S\4S jr5\3Rm                  S\S9\	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \
" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \	" S5      \" \Rn                  5      \" \$5      4S\S\4S\4S\4S\4S\4S\4S\4S\4S\S \\4   S!\\4   S"\\4   S#\\4   S$\\4   S%\\4   S&\\8   S'\\4   S(\\4   S)\4S*\4S+\\4   S,\Rr                  S-\:40S. jj5       r;\3Ry                  S/\S9S S0SSSSSS1S\" \Rn                  5      \" \$5      4S2\=S3\=S4\\4   S5\\4   S6\\4   S7\\4   S8\\4   S9\\4   S:\\4   S,\Rr                  S-\:4S; jj5       r>\3Ry                  S<\S9\" \Rn                  5      4S=\4S,\Rr                  4S> jj5       r?\3R                  S<\S9\" \Rn                  5      4S=\4S?\S,\Rr                  4S@ jj5       rA\3R                  S<\S9\" SSASB9\" \Rn                  5      4S=\4S,\Rr                  4SC jj5       rC\3Ry                  SD\\\4\44      S9\" \Rn                  5      \" \$5      \" SESFSG94S,\Rr                  S-\:S4\44SH jj5       rD\3Ry                  SI\\\4\E4      S9\" SSJSB9\" SESFSG9\" \Rn                  5      \" \$5      4SK\4S4\4S,\Rr                  S-\:4SL jj5       rF\3Rm                  SM\\\4\4      S9\" \Rn                  5      \" \$5      4SN\ S,\Rr                  S-\:4SO jj5       rG\3Ry                  SP\\!   SQ/SR9\" SESFSG9\" \Rn                  5      \" \$5      4S4\4S,\Rr                  S-\:4SS jj5       rH\3Ry                  ST\\"   SQ/SR9\" SESUSG9\" \Rn                  5      \" \$5      4S4\4S,\Rr                  S-\:4SV jj5       rIg)W    N)datedatetime)		APIRouterDependsHTTPExceptionBackgroundTasksPathFormFile
UploadFileQuery)JSONResponse)jsonable_encoder)ListOptionalDictAny   )UserBaseEmailAction)database)	WorkforceWorkforceBaseWorkforceResponseListWorkforceUpdateWorkforceDetailsRequestWorkforceResponseTagNameResponse)get_current_userdetails)str_to_objectid)create_workforce_serviceget_workforce_serviceread_workforce_serviceupdate_workforce_servicedelete_workforce_serviceget_workforce_list_by_type.get_workforce_details_with_tasks_and_schedules)create_user_servicesend_email_verification_serviceread_user_serviceby_emaildate_strreturnc                     SU ;   a4  [         R                  " U R                  SS5      5      R                  5       $ [         R                  " U S5      R                  5       $ ! [
        [        4 a  n[        SU  35      eS nAff = f)NTZ z%Y-%m-%dzInvalid date format: )r   fromisoformatreplacer   strptime
ValueErrorAttributeError)r+   es     OC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\routers\platform\workforce.py
parse_dater8   "   sy    =(?))(*:*:3*CDIIKK  :6;;==' =0
;<<=s   9A! $A! !B1A??B/)response_model.Tbackground_tasks
first_name	last_namemobile_numberemail_idworkforce_category_idgenderdate_of_birth	join_datephoto
license_idnational_idemergency_contactshift_timingaddressblood_groupis_humanskillscertificationsworkforce_category_nameskills_nametag_namedbcurrent_userc                 :  #    [         R                  " SSS9  S nU	(       a  U	R                  (       a  [        [        R
                  " 5       R                  5       5      nU	R                  R                  S5      S   nSU SU 3nSU 3n[        US5       nU	R                  5       I S h  vN nUR                  U5        S S S 5         [        U5      n[        U5      n/ n!U(       a   [        R!                  U5      n!/ n"U(       a2   [        R!                  U5      n"[%        U"[&        5      (       d  [        e 0 SU_SU_SU_SU_SU_SU_SU_SU_SU_SUR)                  S5      _S[        US   5      _SU
=(       d    S _SU=(       d    S _SU=(       d    S _SU=(       d    S _SU_SU_UU!U"UUUS.En# [+        [-        S<0 U#D6U5      n$U$S   n%S n&US!UR)                  S5      S"S#.n'[/        S<0 U'D6n([1        U(U U5      n)[3        UU5      n*[5        S$5        [5        U*5        U*R)                  S%5      n+[5        U+5        [5        S&5        0 S'U_S(S)_S%U+_S*U S+U 3_S,U_SUR)                  S5      _SU_S-S._S/S._S0S._S1U=(       d    S._S2S_S3S_S4S5_S6S"_S7U%_n,[5        S85        [5        U,5        [5        S95        [7        S<0 U,D6n-[9        U-U U5      n.[;        [=        U$5      S:9$  GN:! , (       d  f       GN.= f! [         a  n [        S	[        U 5      S
9eS n A ff = f! [        R"                   a    [        S	SS
9ef = f! [        R"                  [        4 a    [        S	SS
9ef = f! [         a  n/U/eS n/A/f[>         a  n [        S;[        U 5      S
9eS n A ff = f7f)=Nzpublic/workforceT)exist_ok.z
workforce-zpublic/workforce/wb  status_codedetailzInvalid JSON in 'skills' fieldz&Invalid JSON in 'certifications' fieldr<   r=   r>   r?   r@   rA   rB   rC   rD   
account_iduser_id_idrE   rF   rG   rH   rI   rJ   )rK   rL   rM   rN   rO   rP   zSsk@44140065signupg   )emailsactionr\   role>send_email_verification_servicesend_email_verification_serviceverificationCodez>==============================================================emailpasswordzDefault@123name mobilegoogle_connectr0   linkedin_connecttokenpicurl	is_activeis_verifiedmobile_verifiedFrolesworkforce_id,useruseruseruseruser149149149149149149149149z,============================================)contenti   ) osmakedirsfilenameintr   now	timestampsplitopenreadwriter8   r4   r   strjsonloadsJSONDecodeError
isinstancelistgetr!   r   r   r)   r*   printr   r(   r   r   	Exception)0r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   photo_filenamer|   extfilepathbufferru   dob_datejoin_date_objr6   parsed_skillsparsed_certificationsworkforce_dataresultrs   default_passwordemail_actionemail_action_modelresemailversresVerificationCodeverification_code_resuser
user_model
resultUserhes0                                                   r7   create_workforce_endpointr   *   s    @ KK"T2 N0023	nn""3'+%i[#7&~&67(D!V!JJL(GLL! "<m,"9-
 M	Z JJv.M
 	b$(JJ~$>!3T::   ;
jY 	 	H	
 	 !6 	& 	 	] 	 	l&&|4 	3|E*+ 	j(D 	{*d 	.6$  	,!" 	7#$ 	{%& /#:"1N64<)-*I.*I2Ne})
 &**<8	
 )8<867IK[]_`7"ENO!" 3 7 78J K#$NO
X

  5
 zl!I;/	

 m
 ,**<8
 X
 b
 
 R
 n*
 
 4
 u
 S
  L!
$ 	<=d<=%%
(5ErJ
$4V$<==O ) "!  <CF;;< ## 	ZC8XYY	Z $$j1 	bC8`aa	b^   <CF;;<s   BNK&)K#*K&?NK8 	N(L =	N0L? 7A>N6D,M' "N#K&&
K50N8
LLLNL<<N?%M$$N'
N1M33N NNNz/list/
   ascskiplimitqstatusjoin_date_fromjoin_date_tosort_by
sort_orderr\   c                 "    [        XX#XEXgXU
5      $ )z%
Returns a list of workforce entries
)r"   )r   r   r   r   r   r   r   r   r\   rQ   rR   s              r7   get_workforcer      s&    " !aW^lv  }I  J  J    z/{workforce_id}rs   c                 6    [        X5      nUc
  [        SSS9eU$ )z!
Returns workforce details by ID
  Workforce not foundrY   )r#   r   rs   rQ   	workforces      r7   read_workforcer      s(     '|8I4IJJr   r   c                 8    [        XU5      nUc
  [        SSS9eU$ )z
Updates workforce information
r   z Workforce not found after updaterY   )r$   r   )rs   r   rQ   updated_workforces       r7   update_workforcer      s+     1rR 4VWWr   zThe ID of the workforce entry)descriptionc                 6    [        X5      nUc
  [        SSS9eU$ )z!
Deletes a workforce entry by ID
r   r   rY   )r%   r   r   s      r7   delete_workforcer      s(     ):I4IJJr   z/dropdown/workforcer0   zSearch query for workforce name)defaultr   c                 ,   #    US   n[        XU5      $ 7fNr\   )get_workforce_dropdown_list)rQ   rR   r   r\   s       r7   r   r      s      l+J&rq99s   z/freeworkforce/{workforce_id}z$Type of workforce: free or scheduledtypec                 b   #    US   n[        S5        U S;  a
  [        SSS9e[        X$X5      $ 7f)Nr\   zCOMING FREE WQORKFORCE 2767276)free	scheduledrX   z(Invalid type. Use 'free' or 'scheduled'.rY   )r   r   r&   )r   r   rQ   rR   r\   s        r7   get_workforce_listr     s>      l+J	
*+((4^__%bd>>s   -/z/detailspayloadc                 V   #    US   n[        UUU R                  S9I S h  vN nU$  N7f)Nr\   )rQ   r\   rs   )r'   rs   )r   rQ   rR   r\   r   s        r7   #get_workforce_schedule_task_detailsr     s;      l+JA)) F
 Ms   )')z/allwithstatusr   )r:   tagsc                 @   #    US   n[         R                  XU 5      $ 7fr   )workforce_serviceget_workforce_list_with_status)r   rQ   rR   r\   s       r7   get_all_workforce_with_statusr   3  s$      l+J;;BANNs   z/tagszSearch query for tag namec                 4   #    [         R                  X5      $ 7f)z:
Returns the list of tag names (supports search with `q`)
)r   get_tag_name_list)r   rQ   rR   s      r7   get_tag_namesr   @  s      ..r55s   )Jrw   r   r   fastapir   r   r   r   r	   r
   r   r   r   fastapi.responsesr   fastapi.encodersr   typingr   r   r   r   models.saas.usersmodelr   r   app.dbr   models.platform.workforcemodelr   r   r   r   r   r   r   dependencies.authr   libraries.objectr    services.platform.workforcer!   r"   r#   r$   r%   r&   r'   services.saas.usersr(   r)   r*   routerr   r8   postget_mongo_dbboolMongoDBdictr   r   rz   r   r   putr   deleter   r   objectr   r   r   r   rv   r   r7   <module>r      s   	 # i i i * - , , <    9 /    
= = = S+ 3i#YcI!%cs)c#YT
 !%T
!%d'+Dz"&t*!$Z!%d#Dz J$(J#'9Cy"4j"8#8#89 !899U<%U< U< 	U<
 U< U< U< U< U< U< U< U< #U<   }!U<" 3-#U<$ c]%U<& #'U<( tn)U<* SM+U<, SM-U<. !/U<0 1U<2 sm3U<6 	7U<8 9U< ,U<n H%:; $("&! % $"8#8#89 !89J
JJ }J SM	J
 SMJ 3-J c]J J J 	J J <J$ i8 #8#8#89


 9
 i8 #8#8#89# 	 9  ;S.MN"8#8#89


 <
 !$tCH~2FG"8#8#89 !892+LM::: : H:" +Dc6kAR<STc'MN2+LM"8#8#89 !89	?
?
? 	? 	? U? ZT#s(^(<= #8#8#89 !89$  >* )*
   2+LM"8#8#89 !89O
OO O
O GD$9N2+FG"8#8#89 !896
66 6 O6r   