
    8j9                     2   d dl 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 ddlmZmZm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  G d de      Z G d de      Z  edg      d        Z! G d de      Z" G d de      Z#y)    N)settingsstatus)JsonResponse)Response)Sub_Categories   )ContractorProfileContractorWorkUsers)generate_access_token)APIView)api_view)Q)verify_tokensend_otp_to_phone)transaction)ContractorProfileSerializerc                       e Zd Zd Zy)SendOtpc                    	 |j                   j                  d      }|j                   j                  d      }|st        dt        j                  d      S |dvrt        dt        j
                  d      S t        j                  j                  |d      j                         }|d	k(  r}	 t        j                  j                  |d      }t        |d      r3|j                  j                  s\t        ddt        j                  d      S t        dt        j                  d      S |dk(  r|rt        dt        j
                  d      S d}t!        ||      }|rI||j"                  d<   ||j"                  d<   ||j"                  d<   t        dt        j                  d      S t        dt        j
                  d      S # t        j                  $ r t        d
t        j                  d      cY S w xY w# t$        $ rJ}t'        |       t        t)        |      t        j*                  dt        j*                        cY d }~S d }~ww xY w)NmobiletypeMobile number is requiredmessager   )signuploginzInvalid request type   r   	user_typer   Contractor account not foundcontractor_profilez Your account is not verified yetF)r   is_verifiedr   zContractor profile not foundr    Mobile number already registered1234otpactionzOTP sent successfullyzFailed to send OTPr   )datagetr   r   HTTP_200_OKHTTP_400_BAD_REQUESTr   objectsfilterexistsDoesNotExistHTTP_404_NOT_FOUNDhasattrr#   r$   HTTP_403_FORBIDDENr   session	ExceptionprintstrHTTP_500_INTERNAL_SERVER_ERROR)	selfrequestr   r(   user_existsuserr'   resultes	            2/var/www/html/HOMYLIO_ADMIN/accounts/contractor.pypostzSendOtp.post   s8   P	\\%%h/F\\%%f-F,GSYSeSe fgg00,BvOjOj kll--.. /  fh   w ==,,Fa,HD
 4!5622>>'+M/4+1+D+D   $0N[a[t[t$uvv 8##$FSYSnSnoq q C&F
 ,2)),&,2)#:"("4"4  3%:: ] )) w#0N[a[t[t$uvvwl  	!HF0U0UV<< 	sg   AG4 G4 64G4 +!F? >G4 G4 '"G4 
AG4 #G4 ?/G1.G4 0G11G4 4	I=?I<IIN__name__
__module____qualname__r@        r?   r   r      s    RrF   r   c                       e Zd Zd Zy)	VerifyOtpc                    	 |j                   j                  d      }|j                   j                  dd      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|r|st        dt        j
                  d      S t        |      t        |      k7  rt        dt        j
                  d      S |d	k(  rw	 t        j                  j                  |d
      }||_	        |j                          t        |      }t        d|j                  |j                  |t        j                  d      S |dk(  rtt        j                  j#                  |d
      j%                         }	t'        |	       |	rt        dt        j
                  d      S t        dt        j                  d      S t        dt        j
                  d      S # t        j                  $ r t        dt        j                   d      cY S w xY w# t(        $ r;}
t'        |
       t        dt        |
      t        j*                  d      cY d }
~
S d }
~
ww xY w)Nr'   	fcm_token r   r(   zOTP session expiredr   zInvalid OTPr   r   r    zLogin successfully)r   user_idr   tokenr   r"   r   r%   zOTP verified successfullyzInvalid actionz-Something went wrong. Please try again later.)r   errorr   )r)   r*   r4   r   r   r,   r7   r   r-   rJ   saver   idr   r+   r0   r1   r.   firstr6   r5   r8   )r9   r:   r'   rJ   session_otpr   r(   r<   access_tokenexisting_userr>   s              r?   r@   zVerifyOtp.postl   sO   k	,,""5)C((b9I!//--e4K__((2F__((2Ff#8"("="=  3x3{++#0"("="=    ==,,%"# - D
 &/DNIIK#8#>L#';'+ww&*kk%1&,&8&8 , 8# % 4 4! !5 ! %' 
 m$ #'I&,&A&A   #>"("4"4  /$99 M )) #'E&,&?&? Z  
	!HN V$CC 	
	s\   B'H# *2H# H# #A5G. AH# 6H# H# ./H H# H  H# #	I',0I"I'"I'NrA   rE   rF   r?   rH   rH   j   s    mrF   rH   r*   c           
         t        |       }|d k(  rt        dt        j                  d      S 	 t        j
                  j                  |      }t        d|j                  |j                  t        |j                        |j                  |j                  t        j                  d      S # t        $ r1}t        |       t        dt        j                  d      cY d }~S d }~ww xY w)NzUser not logged inr   rP   zUser logged in)r   namerP   profile_picemailr   r   )r   r   r   HTTP_401_UNAUTHORIZEDr   r-   r*   rW   rP   r7   rX   rY   r   r+   r5   r6   )r:   r<   r>   s      r?   
verifyUserr[      s     Dt|%9FD`D`abb	f==$$$$/D)9DIIVZV]V]orsw  tD  tD  pE  QU  Q[  Q[  hl  hs  hs  ~D  ~P  ~P  Q  R  R 	f8(<vGcGcdee	fs   A;B* *	C$3&CC$C$c                       e Zd Zd Zd Zy)ContractorProfileViewc                 ,   t        |      }|st        ddit        j                        S 	 t        j
                  j                  |      }|j                  dk7  rt        ddit        j                        S t        j
                  j                  |      \  }}t        |      }t        d|j                  t        j                  d	t        j                        S # t        $ r-}t        |       t        dt!        |      id
      cY d }~S d }~ww xY w)Nr   Unauthorizedr   rV   r   Only contractors allowedr<   zProfile fetched successfully)r   profiler   i  )r   r   r   rZ   r   r-   r*   r!   r3   r
   get_or_creater   r)   r+   r5   r6   r7   )r9   r:   rL   r<   rb   _
serializerr>   s           r?   r*   zContractorProfileView.get   s    w'N+33 
	===$$$0D~~" :;!44 
 +22@@d@KJGQ4W=J9%??!-- ((	* *  	=!HYA/<<	=s%   AC 8A$C 	D&"DDDc                    t        |      }|st        ddit        j                        S 	 t        j
                  j                  |      }|j                  dk7  rt        ddit        j                        S t        j
                  j                  |      \  }}|j                  }|j                  d|j                        |_        |j                  d	|j                        |_        |j                  d
|j                        |_        |j                  d|j                        |_        |j                   j                  d      r |j                   j                  d      |_        |j%                          |j                  d|j&                        |_        |j                  d|j(                        |_        |j                  d|j*                        |_        |j%                          |j                  dg       }t-        |       t/        |t0              r|j3                  d      }|r;t4        j
                  j7                  |      }|j8                  j;                  |       t        dt        j<                  dt        j<                        S # t>        $ r0}	t        dt1        |	      it        j@                        cY d }	~	S d }	~	ww xY w)Nr   r_   r   rV   r   r`   ra   rW   rY   r   addressrX   bioexperience_yearssub_categories,id__inzProfile updated successfullyr   )!r   r   r   rZ   r   r-   r*   r!   r3   r
   rc   r)   rW   rY   r   rg   FILESrX   rO   rh   ri   locationr6   
isinstancer7   splitr   r.   rj   setr+   r5   r8   )
r9   r:   rL   r<   rb   rd   r)   
categoriessubsr>   s
             r?   r@   zContractorProfileView.post  s9   w'N+33 
:	==$$$0D~~" :;!44 
 +22@@d@KJGQ<<D
 3DI'4::6DJ((8T[[9DK88It||<DL}}  /#*==#4#4]#C IIK
 ((5'++6GK'+xx0BGD\D\']G$#xx	73C3CDGLLN
 "2B7J**c*'--c2
%--44J4G&&**40:VEWEWX)) 
  	CF#<< 	s%   AJ 8HJ 	K	%K>K	K	N)rB   rC   rD   r*   r@   rE   rF   r?   r]   r]      s     =JDrF   r]   c                   0    e Zd Zej                  d        Zy)ContractorSignupViewc           	         	 |j                   j                  d      }|j                   j                  d      }|j                   j                  d      }|j                   j                  d      }|j                   j                  d      }|j                   j                  dd      }|st        dd	id
      S |st        ddid
      S t        j                  j                  |      j                         rt        ddid
      S t        j                  j                  ||||dd      }|j                  j                  d      r$|j                  d   |_	        |j                          t        j                  j                  |||t        |xs d            }	|j                   j                  d      }
|
rS	 t        j                  |
      }|r;t        j                  j                  |      }|	j                   j#                  |       g }|j                   j%                         D ]?  }|j'                  d      sd|v s|j)                  |j+                  d      d   dz          A t-        t#        d |D                    }|D ]  }|j                   j                  d| dd      j/                         }|j                   j                  d| dd      j/                         }|j                   j                  d| dd      j/                         }|j                  j                  d| d      }|s|s|s|st0        j                  j                  |	|r|nd |r|nd |r|nd |        t        d|j2                  t4        j6                  d t4        j6                        S #  g }Y xY w# t8        $ rE}t;        j<                  d       t        dt?        |      it4        j@                        cY d }~S d }~ww xY w)!NrW   rY   r   rh   ro   ri   r   r   zName is requiredi  r   r   )r   r%   r   T)usernamerW   rY   r   r!   	is_activerX   )r<   rh   ro   ri   rj   rl   zworks[]c              3   z   K   | ]3  }t        |j                  d       d   j                  d      d          5 yw)[r	   rz   r   N)intrq   ).0ks     r?   	<genexpr>z,ContractorSignupView.post.<locals>.<genexpr>  s9      & AGGCLO))#.q12&s   9;z][description]rK   z][owner_contact]z][owner_email]z][image])rb   descriptionowner_contactowner_emailfilez"Contractor registered successfully)r   rL   r   )!r)   r*   r   r   r-   r.   r/   creatern   rX   rO   r
   r}   jsonloadsr   rj   rr   keys
startswithappendrq   sortedstripr   rP   r   r+   r5   r   set_rollbackr7   r8   )r9   r:   rW   rY   r   rh   ro   ri   r<   rb   raw_categoriescategory_idsrj   
works_datakeywork_indexesir   r   r   imager>   s                         r?   r@   zContractorSignupView.post]  s   p	<<##F+DLL$$W-E\\%%h/F,,""5)C||''
3H&||//0BAF
 ,> ?LL,G HQTUU}}##6#299; BC  =='' ( D }}  /#*==#? 		
 (//66!!$%5%:!;	 7 G %\\--.>?N&#'::n#=L  %3%;%;%B%B,%B%WN**..~>
 J||((* ?>>(+s
%%ciinQ&7#&=>? "# &#& # L
 " %ll..s./I2NTTV ' 0 06!<L1Mr R X X Z%ll..s./I2NTTV))F1#X*>? #=UZ&&--#/:3@-d/: . & C#ww%11
 )) Q&#%L`  	$$T*CF#<< 	sW   B3N+ 6N+ <N+ B1N+ 6N! A-N+ 9N+ >E"N+ !N(%N+ +	O94:O4.O94O9N)rB   rC   rD   r   atomicr@   rE   rF   r?   rv   rv   [  s    r rrF   rv   )$r   randomdjango.confr   rest_frameworkr   django.httpr   rest_framework.responser   sub_categories.modelsr   modelsr
   r   r   authr   rest_framework.viewsr   rest_framework.decoratorsr   django.db.modelsr   utils.helpersr   r   	django.dbr   serializersr   r   rH   r[   r]   rv   rE   rF   r?   <module>r      s        ! $ , 0 < < ' ( .  9 ! 4Tg Tno od 
5'
f 
fkG k^u7 urF   