
    f0f                       d dl mZ d dlmZ d dlmZ d dl d dlZd dlmZ d dl	m
Z
 d dlmZ d dlZd dl d d	lmZ d dlZd d
lmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZ d dlm Z  d dl!Z!d dlZd dl"Z"d dl#Z#d dl$m%Z% d dl& d dl'm(Z( d dl)m*Z* d dl)m+Z+ d dl,Z,d dl- d dl.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl,Z,e
jp                  Z9e
jt                  Z;e
jx                  Z=e
j|                  Z?e
j                  ZAe
j                  ZC e5e9e;      ZDd ZEd ZF G d de      ZG G d de      ZH G d d e      ZI G d! d"e      ZJ G d# d$e      ZK G d% d&e      ZL G d' d(e      ZM G d) d*e      ZN G d+ d,e      ZO G d- d.e      ZP G d/ d0e      ZQ G d1 d2e      ZR G d3 d4e      ZS G d5 d6e      ZT G d7 d8e      ZU G d9 d:e      ZV G d; d<e      ZW G d= d>e      ZX G d? d@e      ZY G dA dBe      ZZ G dC dDe      Z[ G dE dFe      Z\ G dG dHe      Z] G dI dJe      Z^ G dK dLe      Z_ G dM dNe      Z` G dO dPe      Za G dQ dRe      Zb G dS dTe      Zc G dU dVe      Zd G dW dXe      Zey)Y    )APIView)Responsestatus)*N)datetime)settings)django_pbkdf2_sha256)get_authorization_header)RefreshToken)TokenBackend)EmailMultiAlternatives)
exceptions)renderredirect)mail)render_to_string)messages)	timesince)Max)Q)FCMNotification)	SyncGrant	ChatGrant
VideoGrant)Client)AccessTokenc                     t         j                  j                         j                         } | rV| j                  sy| j                  }|dd  }t        |      dz   }t        |      }|j                  d      }dt        |      z   S y)NTRANS000001      TRANS)UserTranscationobjectsalllasttranscation_idintstrzfilllastObjtheIds     7/var/www/html/Manimaran/manimaran/worker_panel/views.pygenerateTranscationsIdr/   2   sy    

!
!
%
%
'
,
,
.			
%ab	%E
1%E
%A%	U		    c                     t         j                  j                         j                         } | rV| j                  sy| j                  }|dd  }t        |      dz   }t        |      }|j                  d      }dt        |      z   S y)NPOUT0001   r!   POUT) ServiceProviderPayoutTranscationr$   r%   r&   r'   r(   r)   r*   r+   s     r.   gernatePayoutIdr6   B   sy    
*
2
2
6
6
8
=
=
?			
%ab	%E
1%E
%A%	E
		r0   c                       e Zd Zd Zy)workerRegisterc           	      "   	 |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      j                         }|s,t        t        j                  ddt        j                        S t        j                  j                  |	      j                         }|r,t        t        j                  d
dt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S ||k7  r,t        t        j                  ddt        j                        S |}t        j                  |      }	t        j                  j                  |d      j                         }
t        j                  j                  |	|||d      }dj                  t        d      D cg c]6  }t        j                   t"        j$                  t"        j&                  z         8 c}      }dt)        |j*                        z   dz   |z   }t)        t,        j.                        |z   }||_        |j3                          d}t5        dd|i      }|}d}|}t7        j8                  ||||g|       ddlm} |j?                         }d}t5        d ||||d!      }|}d}d"}t7        j8                  ||||g|       t        t        j@                  d#d      S c c}w # tB        $ rJ}tE        |       t        t        jF                  t)        |      dt        jF                        cY d }~S d }~ww xY w)$N
first_namezfirst_name is requiredstatus_codestatus_messager   	last_namezlast_name is requiredemailEmail is requiredr?   z)This email is already registered with us.passwordPassword is requiredconfirm_passwordzConfirm Password is requiredz+Password and Confirm Password are not same.F)r?   is_email_verifiedT)rB   r?   r:   r>   	is_worker    &/api-worker/worker-email-verification//Email Verificationuser_email_verification.htmllinksupport@olfix.co.ukhtml_messager   )datezNew Worker Registeredznew_worker_registered.html)r:   r>   r?   rQ   zsuperadmin@yopmail.comzGYou have been successfully registered with us.Please verify your email.)$datagetr   r   HTTP_400_BAD_REQUESTlowerUserr$   filterfirsthandlerhashcreatejoinrangerandomchoicestringascii_lettersdigitsr)   r?   r	   BASE_URLemail_verify_linksaver   r   	send_mailr   rQ   todayHTTP_200_OK	ExceptionprintHTTP_500_INTERNAL_SERVER_ERROR)selfrequestr:   r>   r?   check_emailrB   rD   string_passwordfinal_passwordcheck_customerObjcustomerObjnran_numbaselinkcompletelinksubjectrP   plain_message
from_emailtorQ   rg   es                           r.   postzworkerRegister.postR   s   1O  .:
6#>#>Phiqw  rM  rM  N  N||,9
6#>#>Pghpv  qL  qL  M  M<<G$**,5
6#>#>Pcdlr  mH  mH  I  I$$5$1779;6#>#>P{|  EK  E`  E`  a  allz*8
6#>#>Pfgou  pK  pK  L  Lll&&'9:
6#>#>Pnow}  xS  xS  T  T""6#>#>P}~  GM  Gb  Gb  c  c&?LL1>||**5U*SYY[||""n5T^ir  @D"  E;WWSXY[S\]S\afmmF$8$86==$HIS\]^77#k>O>O:PPSVVY``8h''(83<#+; !7"#AFLCYZ<=%:2>>'=*rdV::<5$7"#?PZgpy~  GL  BM  N<=%: 2>>'=*rdV
&"4"4  GP  Q  R  R' ^( 
 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOsa   AN; AN; AN; +AN; AN; AN; 0N; 
BN; ;N6C.N; 6N; ;	P?P	P	PN__name__
__module____qualname__r|    r0   r.   r8   r8   Q   s    2Or0   r8   c                       e Zd Zd Zy)workerEmailVerificationc                 B   	 t        | j                  j                        }t        |       |j	                  d      d   }t
        j                  j                  ||      j                         }d|_	        |j                          t        j                  j                  |d       t        j                  j                  d|j                  z   dz   |j                  z   d	z   d
       t!        |d      S # t"        $ r!}t        |       t!        |d      cY d }~S d }~ww xY w)NrJ   )r?   rd   Tr   )workeramountzA new service provider  z! has been registered successfullynew_service_provider)messagetypezemail_verified_success.htmlzemail_verified_unsuccess.html)r)   rm   pathrj   splitrV   r$   rW   rX   rE   re   ServiceProviderWalletr[   AdminNotificationsr:   r>   r   ri   )rl   rm   rM   
user_emailuser_objr{   s         r.   rS   zworkerEmailVerification.get   s    :
dll
 4;

3#:ll!!*$!OUUW8 $8==?  ''1'E$$/HI\I\/\]`/`aiasas/s  uX  0X  ^t$  u
6
77	 :8
8
99:s   C1C4 4	D=DDDNr~   r   r   rS   r   r0   r.   r   r      s    :r0   r   c                       e Zd Zd Zy)workerLoginc           
      	   	 |j                   j                  d      }|s,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S t
        j                  j                  |      j                         }|dk(  r,t        t        j                  d	dt        j                        S t
        j                  j                  |d
d      j                         }|rdj                  t        d      D cg c]6  }t        j                  t        j                  t        j                   z         8 c}      }dt#        |j$                        z   dz   |z   }t#        t&        j(                        |z   }	||_        |j-                          d}
t/        dd|	i      }|}d}|}t1        j2                  |
|||g|       t        t        j                  ddt        j                        S t
        j                  j                  |dd      j                         }|s,t        t        j                  ddt        j                        S |j                  dk(  r,t        t        j                  ddt        j                        S |j4                  ,t        t        j                  ddt        j                        S |j                   j                  d      }|s,t        t        j                  ddt        j                        S ||_        |j-                          |j8                  }t;        j<                  |j                   j                  d      |      }|rt?        j@                  |      }|jB                  |j$                  |jD                  |jF                  |j6                  t#        |      t#        |jH                        |jJ                  |jL                  d	}t        t        jN                  d|d      S t        t        j                  d dt        j                        S c c}w # tP        $ rJ}tS        |       t        t        jT                  t#        |      dt        jT                        cY d }~S d }~ww xY w)!Nr?   r@   r;   r   rB   rC   rA   r   z:This email does not exist in our database, please registerFr!   )r?   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   z(Please check your email for verificationTzNo account foundz1Account not yet activated. Please contact supportz2This account is deleted.Please contact superadmin.device_tokenzDevice token is required)	idr?   r:   r>   r   refreshaccessis_profile_completedrE   zLogin Successfullyr<   r=   rR   zInvalid password)+rR   rS   r   r   rT   rV   r$   rW   countrX   r\   r]   r^   r_   r`   ra   rb   r)   r?   r	   rc   rd   re   r   r   rf   end_dater   rB   rY   verifyr   for_userr   r:   r>   access_tokenr   rE   rh   ri   rj   rk   )rl   rm   r?   rB   usercheck_verificationrs   rt   ru   rv   rw   rP   rx   ry   rz   userObjr   new_passcheckrefresh_tokenallDatar{   s                         r.   r|   zworkerLogin.post   s   ;O<<G$5
6#>#>Pcdlr  mH  mH  I  Illz*8
6#>#>Pfgou  pK  pK  L  L<<U+1134
ai6#>#>  QM  N  V\  Vq  Vq  r  r,,5U]^,_eegggTYZ\T]^T]qv}}V%9%9FMM%IJT]^_G83?Q?W?W;XX[^^ahhHx(()H4L+3("G#$BV\DZ[L M&J	BNN7M:t,W6#>#>Pz{  DJ  D_  D_  `  `ll!!QU!V\\^7
6#>#>Pbckq  lG  lG  H  Hnn6#>#>  QD  E  MS  Mh  Mh  i  i"6#>#>  QE  F  NT  Ni  Ni  j  j,,"">2<
6#>#>Pjksy  tO  tO  P  P&7
<<>8>>',,**:6x@5 ))'2M**]]$$""((M"=--.#88 22		G 6#5#5G[cjkll6#>#>Pbckq  lG  lG  H  HW _X 
 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOsm   AQ- AQ- AQ- 3AQ- >;Q(9B4Q- .AQ- :Q- 7Q- ?AQ- C3Q- <+Q- (Q- -	S 6?R;5S ;S Nr}   r   r0   r.   r   r      s    <Or0   r   c                       e Zd Zd Zy)getCategoryListc                    	 t         j                  j                  d      }g }|D ]7  }|j                  |j                  |j
                  d}|j                  |       9 t        t        j                  d|d      S # t        $ r?}t        t        j                  t        |      dt        j                        cY d }~S d }~ww xY w)NT)end_date__isnull)r   imagenameSuccessr   r;   r   )Categoryr$   rW   r   r   r   appendr   r   rh   ri   rk   r)   )rl   rm   category_objall_Datacatall_datar{   s          r.   rS   zgetCategoryList.get   s    O""))4)@<8s
&&YYHHH
 OOH  6#5#5yX`a
bb	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs   A:A= =	C4C :C CNr   r   r0   r.   r   r      s    Or0   r   c                       e Zd Zd Zy)getSubServiceListc                 d   	 |j                   j                  d      }|s,t        t        j                  ddt        j                        S t
        j                  j                  |d      }g }|D ]W  }|j                  |j                  |j                  j                  |j                  |j                  d}|j                  |       Y t        t        j                  d|d	      S # t        $ r?}t        t        j                   t#        |      dt        j                         cY d }~S d }~ww xY w)
Nmain_idzMain id is requiredr;   r   T)category_idr   )r   r   main_category_namesub_category_namer   r   r   )query_paramsrS   r   r   rT   SubCategoryr$   rW   r   r   categoryr   r   r   rh   ri   rk   r)   )rl   rm   r   sub_objsub_Datasubsub_datar{   s           r.   rS   zgetSubServiceList.get   s   O!!%%i07
6#>#>Pefnt  oJ  oJ  K  K  ''gRV'W78s
&&,,++YYH OOH  6#5#5yX`a
bb	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   AC' BC' '	D/04D*$D/*D/Nr   r   r0   r.   r   r          Or0   r   c                       e Zd Zd Zd Zy)workerUpdateProfilec                 *   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  |j                   |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  |j.                  |j0                  |j2                  d}t4        j                  j                  |j                        }g }|D ]  }	|	j                  |	j6                  j8                  |	j:                  j8                  |	j6                  j                  |	j:                  j                  |	j<                  |	j>                  d}
|jA                  |
        t        t        jB                  d||d      S # tD        $ rJ}tG        |       t        t        jH                  tK        |      d
t        jH                        cY d }~S d }~ww xY w)NnullrG   ;Authorization Header or Token is missing on Request HeadersHS256
algorithmsuser_idr!   r   rF   Worker does not exists.r;   r   r   Signature has expired)r   avatarr?   r:   r>   
experienceaddressphone_numberr   bank_details_filledis_otp_verifiedr   )r   service_namesub_service_name
service_idsub_service_idprice
time_takenr   r<   r=   rR   service)&r   stripr   AuthenticationFailedjwtdecoder	   
SECRET_KEYrV   r$   rW   rX   r   r   rT   r   r   r?   r:   r>   r   r   r   r   r   r   WorkerServicesservicesr   sub_servicesr   r   r   rh   ri   rj   rk   r)   )rl   rm   tokendecodedr   r   r   service_objservice_Datar   service_datar{   s               r.   rS   zworkerUpdateProfile.get  s8   ,O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pijrx  sN  sN  O  Ooo

)
)*A
BBkk__NN$$""$$((#88"66..8  ''...E;<w
**$$)),,11""%%**--]]$$	L %  &"4"4iW_jvw
xx	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CH? E9H? ?	J?JJJc           	      ~   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }	|	s,t        t        j                  dd
t        j                        S |j                  j!                  d      }
|
s,t        t        j                  dd
t        j                        S t        j                  j                  |
      j#                  |j$                        }|r,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t        j                  j                  |      j#                  |j$                        }|r,t        t        j                  dd
t        j                        S |j                  j!                  d      }|rt'        j(                  |      }t*        j                  j                  |       }|r|D ]  }|j-                           |D ]  }t/        |j!                  d!            }t0        j                  j!                  |      }t2        j                  j!                  |j4                  j$                        }t*        j                  j7                  |||"        |j                  j!                  d#      }|j                  j!                  d$      }||_        ||_        |
|_        ||_        |	|_         ||_!        ||_"        |r
d%|z   |_#        |jI                          |j$                  |jF                  |j<                  |j8                  |j:                  |j@                  |j>                  |jB                  d&}t*        j                  j                  |j$                         }g }|D ]K  }|j$                  |jJ                  j$                  |jL                  j$                  d'}|jO                  |       M t        t        jP                  d(||d)      S # tR        $ rJ}tU        |       t        t        jV                  tY        |      d
t        jV                        cY d }~S d }~ww xY w)*Nr   rG   r   r   r   r   r!   r   r   r;   r   r   r   r:   zFirst name is requiredr>   zLast name is requiredr   zAddress is requiredr   zexperience is requiredr?   r@   rA   r   z3This email is already associated with some account.r   zPhone number is required)r   z:This phone number is already associated with some account.r   r   r   )r   r   r   r   r   rJ   )r   r   r?   r:   r>   r   r   r   )r   r   r   Profile updated successfullyr   )-r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   excluder   jsonloadsr   deleter(   r   r   r   r[   r:   r>   r?   r   r   r   r   r   re   r   r   r   rh   ri   rj   rk   r)   )rl   rm   r   r   r   r   r:   r>   r   r   r?   email_checkr   check_phoner   sub_services_listall_worker_servicer   ser_idcat_objmain_objr   r   r   r   r   r   r{   s                               r.   r|   zworkerUpdateProfile.post3  s   YO#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pijrx  sN  sN  O  Ooo

)
)*A
BB  .:
6#>#>Phiqw  rM  rM  N  N||,9
6#>#>Pghpv  qL  qL  M  M\\i(7
6#>#>Pefnt  oJ  oJ  K  K  .:
6#>#>Phiqw  rM  rM  N  N<<G$5
6#>#>Pcdlr  mH  mH  I  I$$U$3;;x{{;K;6#>#>  QF  G  OU  Oj  Oj  k  k,,"">2<
6#>#>Pjksy  tO  tO  P  P$$L$AIIX[[IY;6#>#>  QM  N  V\  Vq  Vq  r  r,,"">2<

<0'//666I&nn ' %'++d#$V""&&F&3W  $$'*:*:*=*=$>X""(XSZ"[	 % LLX&6!,,**+AB#8!88>8#8'8#78 ZHO==? kk__NN$$""$$((	8  ''...E;<w
**""%%**--L %  &"4"4Fdlt  @L  M  N  N	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs]   CW) A,W) 2AW) ;AW) AW) AW) A'W) >AW) A'W) /I9W) )	X<2?X71X<7X<Nr~   r   r   rS   r|   r   r0   r.   r   r     s    -O^ZOr0   r   c                       e Zd Zd Zy)phoneOtpVerificationc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j"                  |k(  rCd|_        |j'                          t        t        j(                  dd
t        j(                        S t        t        j                  dd
t        j                        S # t*        $ rJ}t-        |       t        t        j.                  t1        |      d
t        j.                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r   r;   r   r   r   otpzOTP is requiredTzOTP verified successfully.zOTP is not correct)r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r   r   re   rh   ri   rj   rk   r)   )rl   rm   r   r   r   r   r   r{   s           r.   r|   zphoneOtpVerification.post  s   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pijrx  sN  sN  O  Ooo

)
)*A
BB
,,

5
!3
6#>#>Pabjp  kF  kF  G  Gllc#HMMO6#5#5Gcdlrl~l~6#>#>Pdems  nI  nI  J  J	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs2   CF0 A,F0 2AF0 +F0 0	H9?G>8H>HNr}   r   r0   r.   r   r         Or0   r   c                       e Zd Zd Zy)workerChangePasswordc                 2   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j#                  |      dk(  r,t        t        j                  dd
t        j                        S |}	|j%                  |	       |j'                          t        t        j(                  dd
      S # t*        $ rJ}
t-        |
       t        t        j.                  t1        |
      d
t        j.                        cY d }
~
S d }
~
ww xY w)Nr   rG   r   r   r   r   r!   r   User does not exists.r;   r   r   r   old_passwordzold password is requirednew_passwordznew password is requirednew_confirm_passwordz new confirm password is requiredFz$Does not match with the old passwordzPassword Changed Successfully)r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   check_passwordset_passwordre   rh   ri   rj   rk   r)   )rl   rm   r   r   r   r   r  r  r  rB   r{   s              r.   r|   zworkerChangePassword.post  sk   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB,,"">2<
6#>#>Pjksy  tO  tO  P  P,,"">2<
6#>#>Pjksy  tO  tO  P  P!,,**+AB
6#>#>Prs  |B  |W  |W  X  Xl+u46#>#>Pvw  @F  @[  @[  \  \"8"==?
&"4"4Fef
gg	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs?   CI A,I 2AI ;AI ?I >I 	J?JJJNr}   r   r0   r.   r  r    s    Or0   r  c                       e Zd Zd Zy)UploadImagesc                 :   	 |j                   }|j                  d      }g }|D ]  }t        |      }|j                  |         t	        t
        j                  d|d      S # t        $ r0}t	        dt        |      it
        j                        cY d }~S d }~ww xY w)Nimagesr   r   r   r   )
rR   getlistuploadTheImagesr   r   r   rh   ri   r)   rk   )rl   rm   rR   r  
image_urlsr   
image_pathr{   s           r.   r|   zUploadImages.post  s    	V
,,4LL"6:u 'Jj!  &"4"4iWab
cc	 V
Is1v&v/T/T
UUVs   AA! !	B*%BBBNr}   r   r0   r.   r
  r
    s    
Vr0   r
  c                       e Zd Zd Zd Zy)uploadWorkImagec                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|j                  d	k(  rt        j                  d
      t        j                  j                  |      }g }|D ],  }|j                  |j                  d}	|j!                  |	       . t#        t        j$                  d|d      S # t&        $ rJ}
t)        |
       t#        t        j*                  t-        |
      dt        j*                        cY d }
~
S d }
~
ww xY w)Nr   rG   r   r   r   r   r!   r   r   r   )	worker_id)r   r   Uploaded successfully)r<   r=   r   r;   r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   WorkerWorkImagesr   r   r   r   rh   ri   rj   rk   r)   )rl   rm   r   r   r   r   prvs_objr   r   r   r{   s              r.   rS   zuploadWorkImage.get  sT   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8oo

)
)*A
BB&&--'-B88u
(([[H OOH  &"4"4F]iqr
ss	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs   D(D+ +	E>4?E93E>9E>c                 .   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }t"        j                  j%                  ||       t        t        j&                  dd
      S # t(        $ rJ}t+        |       t        t        j,                  t/        |      d
t        j,                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r  r   r   r  )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r  r[   rh   ri   rj   rk   r)   )rl   rm   r   r   r   r   r  r{   s           r.   r|   zuploadWorkImage.post  sb   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB<<H%6""("@
&"4"4F]^
__	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CE A;E 	F
?F	FFNr   r   r0   r.   r  r    s    O0Or0   r  c                       e Zd Zd Zy)deleteWorkImagec                 `   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j!                  |      }|j%                          t        t        j&                  dd
      S # t(        $ rJ}t+        |       t        t        j,                  t/        |      d
t        j,                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   image_idzimage_id is requiredr   zDeleted successfully)r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r  r   rh   ri   rj   rk   r)   )	rl   rm   r   r   r   r   r  work_imgr{   s	            r.   r|   zdeleteWorkImage.post  s   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  M  ,8
6#>#>Pfgou  pK  pK  L  L''+++:8??
&"4"4F\]
^^	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs,   CE AE AE 	F-#?F("F-(F-Nr}   r   r0   r.   r  r    r   r0   r  c                       e Zd Zd Zd Zy)addWorkerTimeSlotsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |      j                         }|r:t!        j"                  |j$                        }|j&                  |j(                  |d}ni }t        t        j*                  d|d      S # t,        $ rJ}	t/        |	       t        t        j0                  t3        |	      d
t        j0                        cY d }	~	S d }	~	ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r   )r   r  
time_slotsr   r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   WorkerTimeSlotsastliteral_evalslotsr   r  rh   ri   rj   rk   r)   )
rl   rm   r   r   r   r   check_slotsproduct_imagesr   r{   s
             r.   rS   zaddWorkerTimeSlots.get"  s   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB ((///BHHJ;&&{'8'89N^^ **$H H
&"4"4iW_`
aa	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CE2 B,E2 2	G;?G :G Gc                 L   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j                         }|r1t"        j                  j                  |      j%                  |       n!t"        j                  j'                  ||       t        t        j(                  dd
      S # t*        $ rJ}t-        |       t        t        j.                  t1        |      d
t        j.                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   	time_slotzTime solt is requiredr   )r&  )r   r&  r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r#  updater[   rh   ri   rj   rk   r)   )	rl   rm   r   r   r   r   r*  r'  r{   s	            r.   r|   zaddWorkerTimeSlots.post?  s   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB  -9
6#>#>Pghpv  qL  qL  M  M ((///BHHJ;""H"5<<9<M""H9"E
&"4"4iP
QQ	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs,   CG A,G 2BG 	H#?HH#H#Nr   r   r0   r.   r   r   !  s    O:Or0   r   c                       e Zd Zd Zy)workerDeleteAccountc                 $   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                          |_        |j%                          t&        j                  j                  |j(                        }|D ]+  }t        j                          |_        |j%                          - t*        j                  j                  |j(                        }|D ]+  }	t        j                          |	_        |	j%                          - t,        j                  j                  |j(                        }
|
D ]+  }t        j                          |_        |j%                          - t        t        j.                  dd
      S # t0        $ rJ}t3        |       t        t        j4                  t7        |      d
t        j4                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   !Service provider does not exists.r;   r   r   r   r   r   service_providerzAccount deleted successfully)r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   r   nowr   re   HelpSupportr   r   Conversationrh   ri   rj   rk   r)   )rl   rm   r   r   r   r   help_support_objhelpr   r   chat_objchatr{   s                r.   r|   zworkerDeleteAccount.postZ  s    O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pst  }C  }X  }X  Y  Yoo

)
)*A
BB||~8==?!))000EtLLNDMIIK    ''...E;w||~GLLN  ""))X[[)I8tLLNDMIIK  &"4"4Fde
ff	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CH< E6H< <	J?J
J
JNr}   r   r0   r.   r-  r-  Y  s    !Or0   r-  c                       e Zd Zd Zd Zy)getMyServiceListc           	         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |j                         }g }|D ]w  }|j                   |j"                  |j$                  j&                  |j(                  |j*                  j&                  |j,                  |j.                  d}	|j1                  |	       y t        t        j2                  d|d      S # t4        $ rJ}
t7        |
       t        t        j8                  t;        |
      d
t        j8                        cY d }
~
S d }
~
ww xY w)Nr   rG   r   r   r   r   r!   r   r/  r;   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   r   r   services_idr   r   sub_services_idr   r   r   r   rh   ri   rj   rk   r)   )rl   rm   r   r   r   r   r   r   r   r   r{   s              r.   rS   zgetMyServiceList.get  s   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pst  }C  }X  }X  Y  Yoo

)
)*A
BB''...D;8w
**%%$$))--,,11]]$$	H OOH  &"4"4Fdltu
vv	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CF. C(F. .	H7?G<6H<Hc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  ||j$                        j'                  ||       t        t        j(                  dd
      S # t*        $ rJ}	t-        |	       t        t        j.                  t1        |	      d
t        j.                        cY d }	~	S d }	~	ww xY w)Nr   rG   r   r   r   r   r!   r   r/  r;   r   r   r   r   zService id is requiredr   zPrice is requiredr   zTime taken is required)r>  r  )r   r   success)r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r   r   r+  rh   ri   rj   rk   r)   )
rl   rm   r   r   r   r   r   r   r   r{   s
             r.   r|   zgetMyServiceList.post  s9   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pst  }C  }X  }X  Y  Yoo

)
)*A
BB!!,/:
6#>#>Phiqw  rM  rM  N  N<<G$5
6#>#>Pcdlr  mH  mH  I  I  .:
6#>#>Phiqw  rM  rM  N  N  :(++ V]]diu]  A
&"4"4iP
QQ	 O8
&"G"GY\]^Y_`hn  iN  iN  O  OOs:   CH A,H 2AH ;AH AH 	I/%?I*$I/*I/Nr   r   r0   r.   r;  r;  ~  s    O>Or0   r;  c                       e Zd Zd Zy)getWorkerNotificationsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |j                   d      j#                  d      }g }|D ]N  }|j                   |j$                  |j&                  t)        |j*                        dz   d}	|j-                  |	       P t        t        j.                  d|d      S # t0        $ r?}
t        t        j2                  t5        |
      d
t        j2                        cY d }
~
S d }
~
ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   T)r   r   -id ago)r   r   notification_type
start_dater   r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   WorkerNotificationsr   order_byr   r   r   rG  r   rh   ri   rk   r)   )rl   rm   r   r   r   r   
notify_objr   notifyalldatar{   s              r.   rS   zgetWorkerNotifications.get  s   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB#++22(++Y]2^gghmn:7v
))!;;F--.v5	G NN7  6#5#5yX_`
aa	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CF CF 	G4GGGNr   r   r0   r.   rB  rB    r   r0   rB  c                       e Zd Zd Zy)deleteWorkerNotificationsc                    t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |      j%                  t'        j(                                t        t        j*                  dd
      S )Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   notification_idzNotification Id is requiredr   )r   z!Notification Deleted Successfully)r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   rH  r+  r   r3  rh   )rl   rm   r   r   r   r   rP  s          r.   r|   zdeleteWorkerNotifications.post  sS   
"7
+%
]evo")<		(	()f	ggJJuh11gYG'I'll!!w!;AAC(	
&"="=Ofgou  pK  pK  L  L__

)
)*A
BB\\%%&78/	
&"="=Olmu{  vQ  vQ  R  R$$$8???X	!3!3Ehi	jjr0   Nr}   r   r0   r.   rN  rN    s    kr0   rN  c                       e Zd Zd Zy)getWorkerBookingRequestc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  dd|      }g }|D ]  }i d|j                   d|j"                  d|j$                  d|j&                  j(                  dz   |j&                  j*                  z   d|j&                  j,                  d|j&                  j.                  d|j0                  d|j2                  j(                  dz   |j2                  j*                  z   d|j2                  j,                  d|j4                  d|j6                  j8                  d|j:                  d|j<                  d|j<                  d|j>                  d|j@                  d |jB                  |jD                  |jF                  |jH                  |jJ                  d!}	|jM                  |	        t        t        jN                  d"|d#      S # tP        $ r?}
t        t        jR                  tU        |
      d
t        jR                        cY d }
~
S d }
~
ww xY w)$Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   TPending)is_paidbooking_statusr  r   
booking_id	user_namer   
user_imageuser_addressr  worker_nameworker_imager   r   booking_datebooking_timerV  booking_completedr   )platform_feesadmin_commission_feestotal_amountrU  r   r   )+r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   UserBookingsr   rW  r   r   r:   r>   r   r   r  r   r>  r   r   r]  r^  rV  r_  r   r`  ra  rb  rU  r   rh   ri   rk   r)   )rl   rm   r   r   r   r   booking_objbooking_Databookingr   r{   s              r.   rS   zgetWorkerBookingRequest.get  s	   (O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB%%,,tIbj,l;<w	7::7%% w ((3.1G1GG	
 ',,%% GLL(( "" 7>>,,s2W^^5M5MM GNN)) g-- ,,11 G(( G(( G(( g,,  22!" W]]#$ **$::((+H. !1 2 6#5#5yXde
ff	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CK G<K 	L
4L?L
L
Nr   r   r0   r.   rR  rR    s    )Or0   rR  c                       e Zd Zd Zy)workerBookingDetailsc                 P   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      | j                  j                   j#                  d      }|s,t        t        j                  d	d
t        j                        S t$        j                  j                  |dd|      j                         }|s,t        t        j                  dd
t        j                        S i d|j&                  d|j(                  d|j*                  d|j,                  d|j.                  j0                  dz   |j.                  j2                  z   d|j.                  j4                  d|j6                  d|j8                  j:                  d|j<                  d|j>                  d|j>                  d|j@                  d|jB                  d|jD                  d|jF                  d |jH                  d!|jJ                  d"|jL                  i}t        t        jN                  d#|d$      S # tP        $ r?}	t        t        jR                  tU        |	      d
t        jR                        cY d }	~	S d }	~	ww xY w)%Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   rW  TrT  )r   rU  rV  r  zNo booking foundr   r  r[  r   r\  r   r   r]  r^  rV  r_  r   r`  ra  rb  rU  r   r   )+r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rm   r   rS   rc  r   rW  r   r  r   r:   r>   r   r>  r   r   r]  r^  rV  r_  r   r`  ra  rb  rU  rh   ri   rk   r)   )
rl   rm   r   r   r   r   rW  rd  r   r{   s
             r.   rS   zworkerBookingDetails.get  sN   'O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB))--l;:
6#>#>Pghpv  qL  qL  M  M%%,,
TZcpx,z  A  A  C;
6#>#>Pbckq  lG  lG  H  H	;>>;)) {"" &&	
 ;%%00369K9K9U9UU K&&-- k11 0055 K,, K,, K,, k00 66 [ [..  [>>!" K,,#$ {""%8( 6#5#5yX`a
bb	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs3   CK A6K <AK EK 	L%&4L L% L%Nr   r   r0   r.   rh  rh    s    (Or0   rh  c                       e Zd Zd Zy)acceptDeclineBookingc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  }|j!                  d      }|j!                  d      }|st        ddit        j                        S |st        ddit        j                        S |dk(  s|dk(  r|dk(  r0t"        j                  j                  ||      j                         }	|	st        ddit        j$                        S ||	_        |	j)                          t        j                  j                  |	j*                  j,                        j                         }
t.        j                  j1                  d|	j2                  z   dz   d|
       d}t5        t        j6                        }|
j8                  }d}|}d|i}dd |d!}t;        |"      j=                  |||||#      }nt"        j                  j                  ||      j                         }	t        j                  j                  |	j*                  j,                        j                         }
|j                  j!                  d$      }|st        dd%it        j$                        S t"        j                  j                  ||      j                         }	|	st        ddit        j$                        S ||	_        ||	_        d&|	_         |	j)                          t.        j                  j1                  d|	j2                  z   d'z   d|
       d(}t5        t        j6                        }|
j8                  }d)}|}d|i}d*d+|d!}t;        |"      j=                  |||||#      }tB        j                  jE                         j                         }tG        |	jH                        tG        |jJ                        z   tG        |jL                        z   }tN        j                  j                  |j,                  ,      j                         }tQ        d-|jR                         |tG        |jR                        kD  rt        dd.it        j                        S tG        |jR                        tG        |      z
  }tQ        d/|       ||_)        |j)                          tT        j                  j                  |
j,                  0      j                         }tQ        d1|       tQ        d2|jR                         tV        j                  j1                  tY               |
|	t5        |      d2d34      }tG        |jR                        tG        |      z   }tQ        d5|       ||_)        |j)                          t        t        jZ                  d6d
      S t        t        jZ                  d6d
      S t        dd7i      S # t\        $ r0}t        dt5        |      it        j^                        cY d }~S d }~ww xY w)8Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   rW  status_typer   zbooking id  is requiredzstatus_type is requiredAcceptedDeclined)r   r  Booking not foundr   Your booking z  has been accepted successfully.appointment_bookingr   r   customerzYour booking has been acceptedzBooking Acceptedr   booking_acceptedzBOOKING ACCEPTEDr   titler   api_keyregistration_idmessage_titlemessage_bodydata_messageextra_notification_kwargscancellation_reasonzCancellation reason is requiredr2  z7 has been declined.Please check your wallet for refund.zYour booking has been declinedzBooking Declinedbooking_declinedzBOOKING DECLINEDr   service_wallet_objzJYou do not have sufficent balance in wallet for refund for service cancel.new_wallet_providerr0  rb  walletrefund)r'   r   rf  r   payment_modetranscation_typez
new walletr   z&Status type must be Accepted/Declined )0r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   rc  HTTP_404_NOT_FOUNDrV  re   r   r   CustomerNotificationsr[   rW  r)   FIREBASE_SERVER_KEYr   r   notify_single_devicer  cancelled_byOtherSettingsr%   r(   r   platform_feeadmin_commissionr   rj   r   
UserWalletr#   r/   rh   ri   rk   )rl   rm   r   r   r   r   rR   rW  rm  appointment_objcust_objr   
server_keyr{  r|  r}  r  r~  resultr  other_amountrb  r  r  
wallet_objCustTransaction
new_walletr{   s                               r.   r|   zacceptDeclineBooking.postI  s_   eT#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB
,,4&:-(;
Y89A\A\]]
Y89A\A\]]Z;*#<j #++22j82TZZ\_y"56v?X?XYY&1_# ,,%%)=)=)@)@%AGGIX""))//B\B\2\]2  F[  fn)  o/Wh223Z,,_']\g"  2'\ j1FFWf  wD  S_  nz  UnF  oV $++22j82TZZ\_,,%%)=)=)@)@%AGGIX"<<++,ABy"CDVMfMfgg#++22j82TZZ\_y"56v?X?XYY&1_#+>_($6_!""))//B\B\2\  ^W  3W  ]r  }E)  F/Wh223Z,,_']\g"  2'\ j1FFWf  wD  S_  nz  UnF  oV#++//1779\--.L4M4M0NNsS_SpSpOqq\/77>>>TZZ\
 2 9 9:s-4455y"nox~  yT  yT  U  U1889C<MM
 !45!4$$++8;;+?EEGZ
>,'
8J%%&&..55G]G_em  wF  NQ  R^  N_  ow  IQ5  R_j''(3|+<<Z
<
##Z__ V%7%7STTF$6$6	RSSYGHII	 T
Ic!f%V-R-R
SSTsZ   CZ A0Z 6Z AZ 4FZ AZ FZ +D3Z Z ;Z 	[%Z<6[<[Nr}   r   r0   r.   rk  rk  H  s	    fTr0   rk  c                       e Zd Zd Zy)getWorkerBookingListc           	         	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |dk(  r#t"        j                  j                  |dd      }nJ|dk(  r#t"        j                  j                  |dd      }n"t"        j                  j                  |dd      }g }|D ]  }	i d|	j$                  d|	j&                  d|	j(                  d|	j*                  j,                  dz   |	j*                  j.                  z   d|	j*                  j0                  d|	j*                  j2                  d|	j4                  d|	j6                  j,                  dz   |	j6                  j.                  z   d|	j6                  j0                  d |	j8                  j:                  j$                  d!|	j8                  j:                  j<                  d"|	j>                  d#|	j8                  j<                  d$|	j@                  d%|	jB                  d%|	jB                  d&|	jD                  |	jF                  |	jH                  |	jJ                  |	jL                  |	jN                  |	jP                  d'}
|jS                  |
        t        t        jT                  d(|d)      S # tV        $ r?}t        t        jX                  t[        |      d
t        jX                        cY d }~S d }~ww xY w)*Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   booking_typezbooking_type is requiredupcomingTrn  )r  rU  rV  complete	Completedro  r   rW  rX  r   rY  rZ  r  r[  r\  r   r   r   r   r]  r^  rV  )r_  r   r`  ra  rb  rU  r   r   ).r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   GETrS   rc  r   rW  r   r   r:   r>   r   r   r  r   r   r   r   r>  r]  r^  rV  r_  r   r`  ra  rb  rU  r   rh   ri   rk   r)   )rl   rm   r   r   r   r   r  rd  re  rf  r   r{   s               r.   rS   zgetWorkerBookingList.get  s   4O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB++//.1<
6#>#>Pjksy  tO  tO  P  Pj &&--(Tbl-mK
"&&--(Tcn-oK&&--(Tcm-nK<w	7::7%% w ((3.1G1GG	
 ',,%% GLL(( "" 7>>,,s2W^^5M5MM GNN)) '&&//22 G((1166 g-- ,,11 G(( G((  G((!" g,,#$ !22]]**$::((/H2 !5 6 6#5#5yXde
ff	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs,   CN A,N 2I&N 	O!"4OO!O!Nr   r   r0   r.   r  r    s    5Or0   r  c                       e Zd Zd Zy)myRatingReviewListingc           	      :   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |j                         }g }|D ]  }|j                   |j"                  |j$                  |j&                  j(                  dz   |j&                  j*                  z   |j,                  j.                  |j&                  j0                  |j2                  d}	|j5                  |	        t        t        j6                  d|d      S # t8        $ r?}
t        t        j:                  t=        |
      d
t        j:                        cY d }
~
S d }
~
ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r1  r   r   ratingreviewcustomer_namerW  customer_avatar
created_atr   r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   ServiceProviderRatingReviewsr   r  r  r   r:   r>   rf  rW  r   rG  r   rh   ri   rk   r)   )rl   rm   r   r   r   r   
review_objr   r  r   r{   s              r.   rS   zmyRatingReviewListing.get  s   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB,44;;x{{;[:8v99mmmm[[++C/0E0EE..++{{))##H OOH  6#5#5yX`a
bb	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs%   CG DG 	H4HHHNr   r   r0   r.   r  r    s    Or0   r  c                       e Zd Zd Zy)myRatingReviewDetailsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  ||j$                        j                         }|s,t        t        j                  dd
t        j                        S |j$                  |j&                  |j(                  |j*                  j,                  dz   |j*                  j.                  z   |j0                  j2                  |j*                  j4                  |j6                  d}t        t        j8                  d|d      S # t:        $ r?}	t        t        j<                  t?        |	      d
t        j<                        cY d }	~	S d }	~	ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   	review_idzreview_id is required)r   r2  zNo review foundr   r  r   r   ) r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   r  rS   r  r   r  r  r   r:   r>   rf  rW  r   rG  rh   ri   rk   r)   )
rl   rm   r   r   r   r   r  r  r   r{   s
             r.   rS   zmyRatingReviewDetails.get  s9   O#G,5mu%++-2*=

)
)*g
hhZZx22wiH7Y7||""!"<BBD8
6#>#>Pghpv  qL  qL  M  Moo

)
)*A
BB{{{+9
6#>#>Pghpv  qL  qL  M  M,44;;^f^i^i;jppr:
6#>#>Pabjp  kF  kF  G  G ==__//3JOO4M4MM$$//!--''	8 6#5#5yX`a
bb	 O
&"G"GY\]^Y_`hn  iN  iN  O  OOs3   CH> A,H> 2A&H> B$H> >	J4J;JJNr   r   r0   r.   r  r    s    Or0   r  c                       e Zd Zd Zy)createConverstationProviderc                 
   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|st        t        j                  dd
      S t        j                  j                  |dd      j                         }|st        t        j                  dd
      S |j                  j!                  d      }|st        t        j                  dd
      S t"        j                  j!                  |      }	|	st        t        j                  dd
      S t$        j                  j                  ||      j                         }
|
r|
j&                  }nt)        |j*                        t)        |j*                        z   t)        |j,                        z   t)        |j,                        z   }t/        |      }t1        j2                  |       dj5                  |      }t6        j8                  j:                  j8                  j=                  |      }t$        j                  j=                  |||	      }|j>                  |_        tA        jB                         |_"        |jG                          t)        |j,                        t)        |j*                        dz   t)        |jH                        z   t)        |jJ                        d}tM        jN                  |      }t6        j8                  j:                  j9                  |j>                        jP                  j=                  t)        |j,                        |      }t)        |j,                        t)        |j*                        dz   t)        |jH                        z   t)        |jJ                        d}tM        jN                  |      }t6        j8                  j:                  j9                  |j>                        jP                  j=                  t)        |j,                        |      }|j>                  |_)        |j>                  |_*        |jG                          |j>                  }t        t        jV                  d|d      S # tX        $ r0}t        dt)        |      it        jZ                        cY d }~S d }~ww xY w) Nr   rG   r   r   r   r   r!   r   User does not exist.r;   r   r   r   customer_idz service provider id is required.T)r   is_userr   zNo customer foundrW  zBooking id is requiredr   rp  )r2  r   )friendly_name)r2  r   rf  r   )r   r   r   )identity
attributesr@  )r<   r=   twilio_channel_sidr   ).r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   rc  r5  r  r)   r:   r   listr^   shuffler\   clientconversationsv1r[   sidr   r3  last_messagere   r>   r   r   dumpsparticipantsuser_twilio_idservice_provider_twilio_idrh   ri   rk   )rl   rm   r   r   r   r   r  customer_objrW  book_objexisting_conversationr  concatinate_namessuffle_stringconversation_nameconversationconversation_objuser_attributesuser_json_attributesuser_participantservice_provider_attributes service_provider_json_attributesservice_provider_participantr{   s                           r.   r|   z createConverstationProvider.post1  s\   WV#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB!!-0;
F$?$?Suvww,,%%qTX%Y__a<
F$?$?Sfghh  .:
F$?$?Sklmm""&&*&58
F$?$?Sfghh
 (//66Wc6djjl.AA<223c(:M:M6NNQTU]U`U`Qaadghthwhwdxx*+M
NN=!. ''	r}v-v.  $++22HR^hp2q*6*:*:'$,LLN!|/s<;R;R7STW7WX[\h\r\rXs7s$$%O  ::o6++bmL$$%lfc,//*6JfK	  (+8;;'7s8CVCV?WX[?[\_`h`r`r\s?s!" (,zz2M'N$#)#7#7bmL$$%lfc(++&2RfS	 ! '7&:&:#2N2R2R/599
6#5#5yfxy
zz 
 V
Is1v&v/T/T
UUVs?   CT5 AT5 "AT5 08T5 )=T5 'MT5 5	U.>%U)#U.)U.Nr}   r   r0   r.   r  r  0  s	    XVr0   r  c                       e Zd Zd Zy)#serviceProviderConverstationListingc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |      }g }|D ]  }t         j"                  j$                  j#                  |j&                        j(                  j+                  dd      }	d}
d}d}|	D ]r  }|j,                  r1|j,                  }
t/        |j0                        dz   }|j0                  }@|j2                  sMd}
t/        |j0                        dz   }|j0                  }t |j4                  |j&                  |j6                  j4                  |j6                  j8                  dz   |j6                  j:                  z   |j6                  j<                  |j>                  j4                  |j>                  j8                  dz   |j>                  j:                  z   |j>                  j<                  |j@                  j4                  |j@                  jB                  |j@                  jD                  |
||d}|jG                  |        t        t        jH                  d|d      S # tJ        $ r0}t        dtM        |      it        jN                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r1  desc)orderlimitrE  filer   )r   r  r  r  customer_imageservice_provider_idservice_provider_nameservice_provider_imagerW  rV  r_  r  timemessage_dater@  r   r   )(r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   r5  r  r  r  r  r   r  bodyr   date_createdmediar   r   r:   r>   r   r2  rf  rV  r_  r   rh   ri   r)   rk   )rl   rm   r   r   r   r   r  conversation_listr  r   r  r  r  recordconversation_datar{   s                   r.   rS   z'serviceProviderConverstationListing.get  s   7V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB''..(.L=$|##	r}\445xt&t"	 
 LDL[[lv**+F2d((l
,,lv**+F2d((l  ??':: %%(("''22S8<;L;L;V;VV#((//(99<<*;;FFL|OlOlOvOvv+<<CC''**#++::%--??    ./I %J 6#5#5yXij
kk	 V
Is1v&v/T/T
UUVs,   CL C.L 4E%L 	M#%MMMNr   r   r0   r.   r  r    s    8Vr0   r  c                       e Zd Zd Zd Zy)"enableServiceProviderNotificationsc                 ~   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  }t        d|d      S # t         $ r0}t        dt#        |      it        j$                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r@  r   notification_settingr   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   notification_enableri   r)   rk   rl   rm   r   r   r   r   r  r{   s           r.   rS   z&enableServiceProviderNotifications.get  s   V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB"66
i?ST
UU	 V
Is1v&v/T/T
UUVs$   CD =D 	D<%D71D<7D<c                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|st        t        j                  dd
      fS ||_        |j%                          t        d|d      S # t&        $ r0}t        dt)        |      it        j*                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r  z notification setting is requiredr@  r  r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r  re   ri   r)   rk   r  s           r.   r|   z'enableServiceProviderNotifications.post  sJ   V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB!,,**+AB
F$?$?Suvwxx"68==?
i?ST
UU	 V
Is1v&v/T/T
UUVs+   CE AE #$E 	F%E<6F<FNr   r   r0   r.   r  r    s    V&Vr0   r  c                       e Zd Zd Zy)markCompleteBookingc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|st        t        j                  dd
      fS |j                  j!                  d      }|st        t        j                  dd
      fS t"        j                  j!                  |      }d|_        ||_        d|_        |j+                          t,        j                  j/                  ||       t        j                  j!                  |j0                  j2                        }	t4        j                  j/                  d|j6                  z   dz   d|	       d}
t9        t        j:                        }|	j<                  }d}|
}d|
i}dd|
d}t?        |      jA                  |||||       }t        t        jB                  d!d
      S # tD        $ r0}t        d"t9        |      it        jF                        cY d }~S d }~ww xY w)#Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   rW  zbooking_id is requiredcomplete_imager   TApproval_Pendingr  rq  zB has been completed succesfully.Please check and approve the work.rr  rs  zNYour booking has been completed succesfully.Please check and approve the work.zBooking Completedr   r_  zBOOKING COMPLETEDrv  rx  rz  r   r   )$r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   rc  r_  r  rV  re   r  r[   r   r   r  rW  r)   r  r   r   r  rh   ri   rk   )rl   rm   r   r   r   r   rW  r  rd  r  r   r  r{  r|  r}  r  r~  r  r{   s                      r.   r|   zmarkCompleteBooking.post  s   .V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB  .:
F$?$?SklmnnLL$$%56>
F$?$?Sklmnn%%))j)9;#';  .; 2;""H^"L,,"")9)9)<)<"=<  ''@V@V0V  X\  1\  bw  BN'  O]7H001:!..?&=<
G  1&
< J/DDUd  uB  Q]  lx  SlD  m6 6#5#5yQ
RR	 V
Is1v&v/T/T
UUVs2   CJ AJ #9J D<J 	K#%KKKNr}   r   r0   r.   r  r    s    /Vr0   r  c                       e Zd Zd Zy)pendingApprovalWorksc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |d      }g }	|D ]q  }
i d|
j                   d|
j"                  d|
j$                  d|
j&                  j(                  dz   |
j&                  j*                  z   d|
j&                  j,                  d|
j&                  j.                  d|
j0                  d|
j2                  j(                  dz   |
j2                  j*                  z   d|
j2                  j,                  d|
j4                  d|
j6                  j8                  d|
j:                  d|
j<                  d|
j>                  d|
j@                  d|
jB                  d |
jD                  d!|
jF                  i}|	jI                  |       t t        t        jJ                  d"|	d#      S # tL        $ r0}t        d$tO        |      it        jP                        cY d }~S d }~ww xY w)%Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r  )r  rV  r   rW  rX  r   rY  rZ  r  r[  r\  r   r   r]  r^  rV  r   r`  ra  rb  r   r   r   ))r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rc  r   rW  r   r   r:   r>   r   r   r  r   r>  r   r   r]  r^  rV  r   r`  ra  rb  r   rh   ri   r)   rk   )rl   rm   argskwargsr   r   r   r   rd  re  rf  r   r{   s                r.   rS   zpendingApprovalWorks.get)  s   'V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB%%,,Rd,e;<w	7::7%% w ((3.1G1GG	
 ',,%% GLL(( "" 7>>,,s2W^^5M5MM GNN)) g-- ,,11 G(( G(( g,, W]]  W**!" W::#$ G((%H( !+ , 6#5#5yXde
ff	 V
Is1v&v/T/T
UUVs%   CJ  GJ   	K)%KKKNr   r   r0   r.   r  r  (      (Vr0   r  c                       e Zd Zd Zy)pendingApprovalWorksDetailsc                 N   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  ||d      }	|	s,t        t        j                  dd
t        j                        S g }
|	D ]D  }i d|j$                  d|j&                  d|j(                  d|j*                  d|j,                  j.                  dz   |j,                  j0                  z   d|j,                  j2                  d|j4                  d|j6                  j8                  d|j:                  d|j<                  d|j<                  d|j>                  d|j@                  d|jB                  d|jD                  d |jF                  d!|jH                  |jJ                  |jL                  d"}|
jO                  |       G t        t        jP                  d#|
d$      S # tR        $ r0}t        d%tU        |      it        jV                        cY d }~S d }~ww xY w)&Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   rW  zbooking_id is required.r  )r   r   rV  zbooking not foundr   r  r[  r   r\  r   r   r]  r^  rV  r_  r   r`  ra  rb  )rU  r  r   r   r   ),r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   r  rS   rc  r   rW  r   r  r   r:   r>   r   r>  r   r   r]  r^  rV  r_  r   r`  ra  rb  rU  r  r   rh   ri   r)   rk   )rl   rm   r  r  r   r   r   r   rW  rd  r   approver   r{   s                 r.   rS   zpendingApprovalWorksDetails.getV  s   1V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, , oo

)
)*A
BB-:
F$?$?Slm&&( ( %%,,*H^p,q;
F$?$?Sfg&&( (8w
GJJG&&  '##	
 GNN--3gnn6N6NN W^^** w.. --22 W)) W)) W)) w-- '33 gmm g++  g;;!" W))#$ --'H* OOH- . 6#5#5yX`a
bb	 V
Is1v&v/T/T
UUVs3   CK+ A,K+ 2AK+ E(K+ +	L$4%LL$L$Nr   r   r0   r.   r  r  U  s    2Vr0   r  c                       e Zd Zd Zd Zy)workerBankAccountsc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |j                         j                         }|s,t        t        j                  dd
t        j                        S |j                   |j"                  |j$                  |j&                  d}t        t        j(                  d|d      S # t*        $ r0}t        dt-        |      it        j.                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r   zNo bank account details found)r   bank	sort_codeaccount_numberr   r   r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   WorkerBankAccountDetailsr   r   r  r  rh   ri   r)   rk   )	rl   rm   r   r   r   r   account_objr   r{   s	            r.   rS   zworkerBankAccounts.get  s   V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB+33::HKK:PVVX;
F$?$?Srs**, , ..&&!00	8 6#5#5yX`a
bb	 V
Is1v&v/T/T
UUVs,   CF B	F AF 	G$%G	GGc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j                  |j$                        j                         }	|	r=t"        j                  j                  |j$                        j'                  |||       n:t"        j                  j)                  ||||       d|_        |j-                          t        t        j.                  dd
      S # t0        $ r0}
t        dt3        |
      it        j4                        cY d }
~
S d }
~
ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r   zbank is required.r  zsort_code is required.r  zaccount_number is required.r   )r   r  r  )r   r   r  r  Tr   r   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r  r   r+  r[   r   re   rh   ri   r)   rk   )rl   rm   r   r   r   r   r   r  r  check_accountr{   s              r.   r|   zworkerBankAccounts.post  sR   %V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB
,,

6
"4
F$?$?Sfg&&( (||,9
F$?$?Skl&&( (LL$$%56>
F$?$?Spq&&( (,44;;X[[;QWWY=$$++X[[+AHHd]f  wEH  $$++D9N ,  $(H MMO
6#5#5yQ
RR	 V
Is1v&v/T/T
UUVs:   CJ A,J 2AJ ;AJ CJ 	K
%K?K
K
Nr   r   r0   r.   r  r    s    V<&Vr0   r  c                       e Zd Zd Zy)serviceProviderWalletc                 n   	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      t        j                  j                  |j                         j                         }|j"                  j%                  d      }g }g }	|dk(  rt&        j                  j                  |j                         j)                  d      }
|
D ]M  }|j                   |j*                  |j,                  |j.                  |j0                  d}|j3                  |       O nt4        j                  j                  |j                   d      j)                  d      }|D ]B  }|j                   |j*                  |j,                  |j0                  d}|	j3                  |       D t        t        j6                  d|j,                  ||	d      S # t8        $ r0}t        dt;        |      it        j<                        cY d }~S d }~ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   r   r  payoutr0  rD  )r   r'   r   transcation_statusr  pay)booking__worker_idr  )r   r'   r   r  r   )r<   r=   wallet_amountpayout_Datarecived_Datar   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   r   r   r  rS   r5   rI  r'   r   r  r  r   r#   rh   ri   r)   rk   )rl   rm   r   r   r   r   r  r  r  r  payout_transcationsr
  payout_datarecived_paymentsrecrecived_datar{   s                    r.   rS   zserviceProviderWallet.get  s^   'V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB(00777MSSU=kkoo&89;<(":BBIIQYQ\Q\I]ffglm%99,,}}!44$$[ $ & '..558;;hm5nwwx}~FF**

NN	\ &   6#5#5yanauau  EP  `l  m  n  n	 V
Is1v&v/T/T
UUVs%   CI; F5I; ;	J4%J/)J4/J4Nr   r   r0   r.   r  r    r  r0   r  c                       e Zd Zd Zy)requestPayoutc                    	 t        |      }||dk(  s|j                         dk(  rt        j                  d      t	        j
                  |t        j                  dg      }|d   }t        j                  j                  |d      j                         }|s,t        t        j                  d	d
t        j                        S |j                  dk(  rt        j                  d      |j                  j!                  d      }|s,t        t        j                  dd
t        j                        S t"        j                  j!                  |      }t%        |j&                        t%        |      k  r,t        t        j                  dd
t        j                        S t%        |j&                        t%        |      z
  }t%        |      |_        |j)                          t+               }	t,        j                  j/                  |	||d       t        t        j0                  dd
      S # t2        $ r0}
t        dt5        |
      it        j6                        cY d }
~
S d }
~
ww xY w)Nr   rG   r   r   r   r   r!   r   r  r;   r   r   r   payout_amountzpayout amount is required.r   z You do not have sufficient fundsrT  )r'   r   r   r  zRequest send successfullyr   )r   r   r   r   r   r   r	   r   rV   r$   rW   rX   r   r   rT   rR   rS   r   r(   r   re   r6   r5   r[   rh   ri   r)   rk   )rl   rm   r   r   r   r   r  provider_wallet
new_amount	payout_idr{   s              r.   r|   zrequestPayout.post   s    V#G,5mu%++-2*=

)
)*g
hhZZx22yI7Y7ll!!W!:@@B8
F$?$?Sij**, ,oo

)
)*A
BB<<##O4=
F$?$?Sop&&( ( ,3377(7K?	/
 
 !C$66F$?$?Suv&&( ( _++,s=/AAJ!*oO "I$,,33YV^hu  LU3  V
6#5#5Gbc
dd	 V
Is1v&v/T/T
UUVs3   CH) A,H) 2A,H) B	H) )	I"2%II"I"Nr}   r   r0   r.   r  r    s    !Vr0   r  )frest_framework.viewsr   rest_framework.responser   rest_frameworkr   user_panel.modelsr^   r   django.confr	   passlib.hashr
   rY   r   admin_panel.modelsrest_framework.authenticationr   r   rest_framework_simplejwt.tokensr   !rest_framework_simplejwt.backendsr   django.core.mailr   r   django.shortcutsr   r   django.corer   django.template.loaderr   mathpytzr`   django.contribr   admin_panel.functionsdjango.utils.timesincer   django.db.modelsr   r   r$  worker_panel.modelspyfcmr   twilio.jwt.access_token.grantsr   r   r   twilio.restr   twilio.jwt.access_tokenr   TWILIO_ACCOUNT_SIDaccount_sidTWILIO_AUTH_TOKEN
auth_tokenTWILIO_CHAT_SIDchat_service_sidTWILIO_SYNC_SIDsync_service_sidTWILIO_API_SIDapi_sidTWILIO_API_SECRET
api_secretr  r/   r6   r8   r   r   r   r   r   r   r  r
  r  r  r   r-  r;  rB  rN  rR  rh  rk  r  r  r  r  r  r  r  r  r  r  r  r  r   r0   r.   <module>rB     s   ( , !      8    B 
 8 : 3 % -  3 ! ! # # ,    
 ! ! 
  / 

 ((''
++ ++ 

!
!&&
	Z	( 3OW 3Ol:g :"=O' =OBOg O$O O0JO' JOZO7 O8O7 OHV7 V*Og *OXOg O,6O 6Op"O' "OJ;Ow ;O~OW O6k k**Og *O\)O7 )OZgT7 gTV6O7 6OtOG O@ OG  OFYV' YVx9V' 9Vz(V (VX0V' 0Vf)V7 )VZ3V' 3VlEV EVP)VG )VX"VG "Vr0   