
    1RQh(                      R	   S SK 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JrJrJr  S SKJr  S SKJr  S S	KJr  S SK r S
SK!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  \" 5       r+\+RY                  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      \" \RZ                  5      4S\.S\.S\.S\/S\/S\/S\.S\.S\.S\.S\	S\	S\R`                  4S jj5       r1\+Re                  S\S9\" \RZ                  5      \" \5      4S\.S\R`                  S\4S  jj5       r3\+Re                  S!\S9\" \RZ                  5      \" \5      4S\.S\R`                  S\4S" jj5       r3\+Re                  S#\S9\" \RZ                  5      \" \5      4S\.S\R`                  S\4S$ jj5       r3\+Re                  S%\S9\" \RZ                  5      \" \5      4S\.S\R`                  S\4S& jj5       r3\+Re                  S'\S9SSS\" \RZ                  5      \" \5      4S\.S\\.   S(\\.   S)\\4   S\R`                  S\4S* jj5       r3\+Re                  S\S9S S+SSS\" \RZ                  5      \" \5      4S,\/S-\/S(\\.   S.\\.   S/\\4   S\R`                  S\4S0 jj5       r5\+Re                  S1\S9\" \RZ                  5      4S\.S\R`                  4S2 jj5       r6\+RY                  S1\S9\" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" \RZ                  5      \" \5      4S\.S\.S\.S\.S\/S\/S\/S\.S\.S\.S\	S\	S\R`                  S\4S3 jj5       r7\+Rq                  S1\S9\" \RZ                  5      4S\.S\R`                  4S4 jj5       r9\+Re                  S5\S9S S+SSSSSSSSSS6\" \RZ                  5      \" \5      4S\.S,\/S-\/S(\\.   S/\\4   S7\\.   S\\/   S\\.   S\\.   S8\\.   S9\\.   S:\\.   S;\\.   S\R`                  S\4S< jj5       r3\+Ru                  S1\S9\" \RZ                  5      \" \5      4S\.S=\S\R`                  4S> jj5       r;g)?    N)datetime)	APIRouterHTTPExceptionDependsRequestFormFile
UploadFile)Optional)database)
	WorkforceWorkforceCreateWorkforceUpdate
WorkforcesWorkforceUpdateBaseCheckListSelectAddonsSelectSkillsListSelectServiceCategorySelectSubServiceSelect)User)get_current_userdetails)services   )	get_users_serviceupdate_account_servicedelete_account_serviceupdate_workforce_serviceget_select_listget_addonselect_listget_skillsselect_listget_servicecatselect_listget_subserviceselect_list/)response_model.service_title
service_idservice_descriptioncapacity_jobshas_costis_vehicle_focusedskillsaddons	checklistdynamicFieldsimagemap_icondbc                   #    [         R                  " SSS9  0 nSU
4SU44 H  u  pU(       d  M  UR                  (       d  M!  [        [        R
                  " 5       R                  5       5      nUR                  R                  S5      S   nU 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X'   M      [        R                  " U	5      nUU UUUUUUUUS.
UEn [        R                   " [#        S0 UD6U5      nU$  Nn! , (       d  f       Na= f! [        R                   a  n[        SSU 3S9eS nAff = f! [$         a  n[        S['        U5      S9eS nAff = f7f)Nzpublic/servicesT)exist_okr0   r1   .-zpublic/services/wb  zInvalid dynamicFields format: status_codedetail)
r'   r&   r(   r)   r*   r+   r,   r-   r.   r/    )osmakedirsfilenameintr   now	timestampsplitopenreadwritejsonloadsJSONDecodeErrorr   account_servicecreate_account_servicer   
ValueErrorstr)r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   	filenames	file_typeupload_filerC   extr@   filepathbuffercontentparsed_dynamic_fieldseaccount_datacreated_accountves                              NC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\routers\platform\services.pycreate_accountr\      s    " KK!D1I$+U#3j(5K"L	;;///HLLN4467I&&,,S1"5C#Ai[#7H)(4H h% + 0 0 22W% & $,I  #MZ $

= 9 !&2&0. L=)@@+l+
 ? 3 &%  Z6TUVTW4XYYZ0  =CG<<=s   *FFA%F(D-<D+=D-F#D> 9F	!E' *F+D--
D;	7F>E$EE$$F'
F	1FF		Fz/getchecklist/{account_id}
account_idcurrent_userc                     [        XU5      $ z0
Returns a list of users for the given account.
)r   r]   r2   r^   s      r[   	get_usersrb   [   s     :,77    z/getskills/{account_id}c                     [        XU5      $ r`   )r!   ra   s      r[   rb   rb   f   s     !==rc   z/getaddonlist/{account_id}c                     [        XU5      $ r`   )r    ra   s      r[   rb   rb   q   s      
|<<rc   z$/getservicecategorylist/{account_id}c                     [        XU5      $ r`   )r"   ra   s      r[   rb   rb   |   s     %ZLAArc   z/getsubservicelist/{account_id}q	is_parentc                     [        XX#XE5      $ r`   )r#   )r]   r'   rg   rh   r2   r^   s         r[   rb   rb      s     %Z1rXXrc   
   skiplimitaccount_type	is_activec           	      r     [         R                  " XX#XEU5      nU$ ! [         a  n[        SSS9eS nAff = f)N  zInternal server errorr:   )rK   get_accounts_service	Exceptionr   )	rk   rl   rg   rm   rn   r2   r^   resultrW   s	            r[   get_accountsrt      sE    M 55d1T]cop M4KLLMs    
6
16z/{account_id}c                      [         R                  " X5      nUc
  [        SSS9eU$ ! [         a  n[        SS[	        U5       3S9eS nAff = f)N  Workforce not foundr:   r9   zError retrieving workforce: )rK   get_account_servicer   rr   rN   )r]   r2   accountrW   s       r[   get_accountrz      s_    ]!55jE?C8MNN ]6RSVWXSYRZ4[\\]   $' 
AAAc           
      $  #    UUUUUUUUU	S.	[         EnUR                  5        VVs0 s H  u  nnUc  M  UU_M     nnn [        R                  " U [	        S0 UD6UU5      nU$ s  snnf ! [
         a  n[        S[        U5      S9eS nAff = f7f)N)	r'   r&   r(   r)   r*   r+   r,   r-   r.   r9   r:   r=   )rO   itemsrK   r   r   rM   r   rN   )r]   r'   r&   r(   r)   r*   r+   r,   r-   r.   r0   r1   r2   r^   update_datakvupdated_accountrZ   s                      r[   update_accountr      s     , !&2&0 K %0$5$5$7I$7DAq141a4$7KI	=)@@*k*	
  J  =CG<<=s8   &B
A%A%B#A+ $B+
B5BBBc                      [         R                  " X5      nUc
  [        SSS9eU$ ! [         a  n[        SS[	        U5       3S9eS nAff = f)Nrv   rw   r:   r9   zError deleting workforce: )rK   r   r   rr   rN   )r]   r2   deleted_accountrW   s       r[   delete_accountr      sa    
[)@@P"C8MNN [6PQTUVQWPX4YZZ[r{   z/list/{account_id}/ascstatuscreated_date_fromcreated_date_tosort_by
sort_orderc                 F    S n[        XX#XEUU" U5      U" U5      XXX5      $ )Nc                 h    [        U [        5      (       a  U (       a  U R                  5       S:H  $ S $ U $ )Ntrue)
isinstancerN   lower)vals    r[   
parse_boolget_users.<locals>.parse_bool  s,    c3,/399;&(9T9
rc   )r   )r]   rk   rl   rg   rn   r   r'   r*   r+   r   r   r   r   r2   r^   r   s                   r[   rb   rb      s8    $
 %Iz8j);<>Obiwy rc   role_updatec                   #    UR                  SS5      S:w  a!  UR                  SS5      (       d
  [        SSS9e [        XU5      I S	h  vN nU(       d
  [        S
SS9eU$  N! [         a  n[        S[	        U5      S9eS	nAff = f7f)z
Update an existing role.
rolesr      is_account_adminFi  zNot authorized to update rolesr:   Nrv   rw   rp   )getr   r   rr   rN   )r]   r   r2   r^   updated_rolerW   s         r[   update_workforcer     s      #q(1A1ABTV[1\1\4TUU<5jrRRC8MNN S  <CF;;<s:   8B	A$ 
A"A$ !B	"A$ $
B.BBB	)<r>   r   fastapir   r   r   r   r   r	   r
   typingr   app.dbr   app.v1.models.platform.servicesr   r   r   r   r   r   r   r   r   r   app.v1.models.saas.usersmodelr   app.v1.dependencies.authr   app.v1.services.platformr   rK   rH   services.platform.servicesr   r   r   r   r   r    r!   r"   r#   routerpostget_mongo_dbrN   rA   MongoDBr\   r   rb   boolrt   rz   r   deleter   putr   r=   rc   r[   <module>r      s.   	  S S S   M  M  M . < @ 
 
 
 
S+c3i#CycI"3is)s)#YcT
:"8#8#89<=<=<= <= 	<=
 <= <= <= <= <= <= <= <= 	<= ,<=| (I #8#8#89 !89888 8 J8 %6FG #8#8#89 !89>>> > H> (F #8#8#89 !89=== = G= 2CXY #8#8#89 !89BBB B ZB ->NO !% $"8#8#89 !89YYY }Y ~	Y
 	Y Y PY C
+"& $"8#8#89 !89M
MM }M 3-	M
 ~M 	M M ,M  OO< #8#8#89]]] =] _Y7 4jd#DzdJ"4jt*t*$ZT
:"8#8#89 !89-=-=-= -= 	-=
 -= -= -= -= -= -= -= -= 	-= -= 8-=^ y9 #8#8#89
[
[
[ :
[ !*=  $  $"(,'+%)! %"8#8#89 !89
  }	
 ~ SM  sm !  } c] c]  	  >8 OO< #8#8#8923	<< < 	< =<rc   