
    ):j>                        d dl 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mZmZ ddlmZmZmZ d d	lmZmZ dd
lmZmZmZmZmZmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z y)    N)APIViewstatus)Response)ContractorProfileUsers)QSubqueryOuterRef   )WorkSerializerWorkSubCategorySerializerWorksSerializer)send_contract_notificationverify_token)Work_Progress_ImagesWork_Progress_VideosWorksWork_ImagesWork_Sub_CategoriesWork_Videosc                       e Zd Zd Zy)WorkViewc                    t        |      }|st        ddit        j                        S |j                  j                  d      }|j                  j                  d      }|st        ddit        j                        S |st        ddit        j                        S 	 t        j                  j                  dd	d
      j                  ||      }t        |dt        |      i      }t        |j                  t        j                  dt        j                        S # t        j                  $ r  t        ddit        j                        cY S w xY w)NmessageUser not logged inr   work_idsub_category_idwork_id is requiredsub_category_id is requiredwork_sub_categorieswork_imageswork_videos)id$work_sub_categories__sub_category_idWork not found)context)workr   )r   r   r   HTTP_401_UNAUTHORIZEDGETgetHTTP_400_BAD_REQUESTr   objectsprefetch_relatedDoesNotExistHTTP_404_NOT_FOUNDr   intdataHTTP_200_OK)selfrequestuser_idr   r   r(   
serializers          //var/www/html/HOMYLIO_ADMIN/works/contractor.pyr+   zWorkView.get   sS   w'0133 
 ++//),!++//*;<1222 
 9:22 
	==11% c5D  	  $D3Dc/FZ2[\
" ,, %%
 	
 !! 	,-00 	s    2D   0EEN__name__
__module____qualname__r+        r8   r   r      s    0
r>   r   c                       e Zd Zd Zy) UnassignedWorksForContractorViewc                    t        |      }|st        ddid      S 	 t        j                  j	                  |      }|j
                  dk7  rt        ddid      S t        |       t        j                  j	                  |	      }t        |       |j                  j                  d
d      }t        j                  j                  |      j                  t        d      t        d      z        j                  dd      }t        |       t        |d      }t        dt        |j                         |j                   t"        j$                  dt"        j$                        S # t        j&                  $ r t        ddid      cY S t        j&                  $ r t        ddid      cY S t(        $ r"}t        dt+        |      id      cY d }~S d }~ww xY w)Nr   r     r   r$      zOnly contractors allowedi  )userr$   T)flat)sub_category_id__inr   )contractor__isnullr(   sub_categorymanyz%Unassigned works fetched successfully)r   countworksr   zUser not foundi  zContractor profile not found  )r   r   r   r-   r+   	user_typeprintr   sub_categoriesvalues_listr   filterr	   select_relatedr   lenr2   r   r3   r/   	Exceptionstr)	r4   r5   r6   rE   profile	skill_idsqsr7   es	            r8   r+   z$UnassignedWorksForContractorView.getD   s   w'01 /	===$$$0D~~" :; 
 $K'//333>G'N  ..::4d:KI %,,33$- 4  fa488 nV^4  "I )$7JBZ__-#!--	
 ((* * !! 	GY(89#FF -- 	UY(FGPSTT 	=YA/<<	=s0   =E( DE( ("G!G/G7GGGNr9   r=   r>   r8   r@   r@   B   s    6=r>   r@   c                       e Zd Zd Zy)	WorksViewc                    t        |      }|st        ddid      S 	 |j                  j                  d      }t        j
                  j                  |      }||j                  |      }|j                  dd      j                  d	d
      j                  d      }t        |d      }t        |j                  t        j                  d      S # t        $ r"}t        dt        |      id      cY d }~S d }~ww xY w)Nr   zContractor not logged inrB   r   r   )contractor_idr(   rI   work__work_imageswork__work_videosz-idTrJ   )rM   r   rN   )r   r   r*   r+   r   r-   rS   rT   r.   order_byr   r2   r   r3   rV   rW   )r4   r5   r6   status_value
work_cardsr7   r[   s          r8   r+   zWorksView.get   s   w'Y(BC3OO#	";;??84L,44;;';RJ ''..l.C
#22 ## huo  )J
 '__$00   	s1v 	 	s   B2C 	C<C71C<7C<Nr9   r=   r>   r8   r]   r]      s    (r>   r]   c                       e Zd Zd Zy)UpdateWorkStatusViewc                 n   t        |      }|st        ddit        j                        S |j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|st        ddit        j                        S |st        ddit        j                        S |t        dd	it        j                        S g d
}t        |      |vrt        ddit        j                        S 	 t        j                  j                  |||      }t        |      |_        |j                          |j                  j                  }|j                  r|j                  j                   nd}	dddddd
}
|
j                  |j                  d      }t#        |d|	 d|j$                  j                    d| dd|j                  j&                  t)        |j                  j&                        t)        |j$                  j&                        t)        |j                        d       t        dt        j*                  |j                  |j-                         dt        j*                        S # t        j                  $ r  t        ddit        j                        cY S w xY w)Nr   r   r   r   r   r   r   r    zstatus is required)r   r      rD      zInvalid statusr   r   r_   r&   
ContractorPendingAssignedStarted	CompletedCanceledUpdatedzWork Status Updatedz	 updated z status to .r(   )r   r   r   rE   titlebodynotification_typereference_idr2   z Work status updated successfully)r   r   work_statusstatus_label)r   r   r   r)   r2   r+   r,   r1   r   r-   r/   r0   saver(   rE   
contractornamer   rI   r$   rW   r3   get_status_display)r4   r5   r6   r   r   rc   valid_statuswork_sub_category
work_ownercontractor_namestatus_messagescurrent_statuss               r8   postzUpdateWorkStatusView.post   s   w'3 33	  ,,""9-!,,**+<=||''1
 4 22	  < 22	  3 22	  '|L0/ 22	 	 3 ; ; ? ? /% !@ !$ $'|#4   '++00
 !++ ((-- 	 
 ),,$$

 	#'"#9$11667 8+,A/ %*//22055889#&'8'E'E'H'H#I/667	
" = ,,/660CCE	 %%
 	
u #// 	/ 00	 	s   "J 0J43J4Nr:   r;   r<   r   r=   r>   r8   rf   rf      s    G
r>   rf   c                       e Zd Zd Zy)ContractorWorkProgressViewc                    t        |      }|st        ddit        j                        S 	 |j                  j                  d      }|j                  j                  d      }|j                  j                  dd      }|st        ddit        j                        S |st        dd	it        j                        S 	 t        j                  j                  d
      j                  |      }	 t        j                  j                  ddd      j                  |||      }t        |      }|dkD  rd}|dk  rd}|j                  }||_        |j                          |j                   j#                  d      }	|	D ]#  }
t$        j                  j'                  ||
       % |j                   j#                  d      }|D ]#  }t(        j                  j'                  ||       % 	 |j*                  r|j*                  j,                  nd}t/        |	      }t/        |      }| d| d}|r	|d| dz  }|r	|d| dz  }||k7  s
|dkD  s|dkD  rNt1        |j2                  d|d|j4                  t7        |j4                        t7        |      t7        |      d       |dk(  rIt1        |j2                  d | d!d|j4                  t7        |j4                        t7        |      d"d#d$       t        d&|j                  t        j<                  d't        j<                        S # t        j                  $ r  t        ddit        j                        cY S w xY w# t        j                  $ r  t        ddit        j                        cY S w xY w# t8        $ r}t;        d%|       Y d }~d }~ww xY w# t8        $ r<}t;        |       t        d(t7        |      d)t        j>                        cY d }~S d }~ww xY w)*Nr   r   r   r   r   progressr   r   r    rE   rC   r&   r{   rI   r(   rj   zWork sub category not foundd   images)r   imagevideos)r   videork   z updated work progress to z%.z Added z
 image(s).z
 video(s).zWork Progress Updated)r   r   r   rs   zWork Completedz marked the work as completed.100	completed)r   r   r   r   zProgress notification error:zProgress updated successfully)r   r   r   zSomething went wrong)r   error) r   r   r   r)   r2   r+   r,   r   r-   rT   r/   r0   r   r1   r   rz   FILESgetlistr   creater   r{   r|   rU   r   rE   r$   rW   rV   rP   r3   HTTP_500_INTERNAL_SERVER_ERROR)r4   r5   r6   r   r   r   r(   r   old_progressr   r   r   r   r   image_countvideo_countru   notification_errorr[   s                      r8   r   zContractorWorkProgressView.post@  sJ   w'3 33	 Z	ll&&y1G%ll../@AO||''
A6H !#8 "66	  #!#@ "66	 }}33#   & (//#^$&
 S '(7&-   "6 8}H#~!|,55L)1& ""$ ]]**84F $,,33&7 4  ]]**84F $,,33&7 4 C )33 &0055%   "&k!&k '' ("2' 
 gk]*==Dgk]*==D !H,"Q"Q /!YY5!*0%)WW'*477|/2?/C(+H s?.!YY../ 05 6 +1%)WW'*477|/2?/C(-&1	0 > 1 : :$00
 ))  %% !#3 "44	 : '33 !#@ "44	 v  2&    
	!H5 V << 	
	s   A0N+ N+ =/L -3M  CN+ #DN	 &6N+ 0MN+ MN+ 0NN+ NN+ 		N(N#N+ #N((N+ +	O041O+%O0+O0Nr   r=   r>   r8   r   r   >  s    gr>   r   )!jsonrest_framework.viewsr   rest_frameworkr   rest_framework.responser   accounts.modelsr   r   django.db.modelsr	   r
   r   serializersr   r   r   utils.helpersr   r   modelsr   r   r   r   r   r   r   r@   r]   rf   r   r=   r>   r8   <module>r      sm     ( ! , 4 2 2 S S B t t2
w 2
l8=w 8=~* *\I
7 I
^i ir>   