
    ):j91                     $   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mZmZ d d	lmZmZ dd
lmZmZmZmZ d dlmZ d dl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  G d de      Z!y)    )timezoneN)APIViewstatus)Response)Users   )WorkListSerizlizerWorkSerializerWorkSubCategorySerializerWorksSerializer)send_contract_notificationverify_token)WorksWork_ImagesWork_Sub_CategoriesWork_Videos)get_object_or_404)send_notificationc                       e Zd Zd Zd Zy)WorkViewc                 Z   t        |      }|d k(  rt        dt        j                  d      S 	 t	        |j
                  j                  d             t               }||_        |j
                  j                  d      |_	        |j
                  j                  d      |_
        |j
                  j                  d      |_        |j
                  j                  d      |_        |j
                  j                  d      |_        |j                          |j                  r%t!        |j"                  j%                  d	            r[t&        j(                  j+                  |j"                  j%                  d	      D cg c]  }t'        |j                  |
       c}       t!        |j"                  j%                  d            r[t,        j(                  j+                  |j"                  j%                  d      D cg c]  }t-        |j                  |       c}       t!        |j
                  j%                  d            rt.        j(                  j+                  |j
                  j%                  d      D cg c]  }t/        |j                  |       c}       |j
                  j%                  d      }t0        j(                  j3                  |d      j5                  d      j7                         }|D ]H  }	t9        d|j                   d|	j:                  dt=        |j                        t=        |      d       J t        dt        j>                  d      S c c}w c c}w c c}w # t@        $ r1}
t	        |
       t        dt        jB                  d      cY d }
~
S d }
~
ww xY w)NUser not logged in)messager   sub_categoriesnamesizematerialbudgetdescriptionimages)work_idimagevideos)r"   videor"   sub_category_idF)&contractor_profile__sub_categories__infcm_token__isnull )	fcm_tokenzNew Work Requestz has been posted.new_work)typer"   user_id)titler   tokendatazWork created successfully.zSomething went wrong.)"r   r   r   HTTP_401_UNAUTHORIZEDprintPOSTgetr   r.   r   r   r   r   r    saveidlenFILESgetlistr   objectsbulk_creater   r   r   filterexcludedistinctr   r+   strHTTP_200_OK	ExceptionHTTP_500_INTERNAL_SERVER_ERROR)selfrequestr.   workr#   r%   sub_categoryr   contractors
contractores              )/var/www/html/HOMYLIO_ADMIN/works/apis.pypostzWorkView.post   s   w'd?)=HdHdeff-wgll&&'789w&#LL,,V4	#LL,,V4	 ' 0 0 <%ll..x8#*<<#3#3M#B 		777==00:;#++77U\UbUbUjUjksUt9LQKG9  7==00:;#++77U\UbUbUjUjksUt9LQKG9 
 7<<//0@AB+33??u|  vB  vB  vJ  vJ  K[  v\Aeq/S_`A  *1)=)=>N)O&+mm&:&:bp  EJ&:  'K  'S  'S  ^`  'S  'a  'j  'j  'l*5 
J-&8+/99+5F(G&0&:&:,6/2477|/27|&"		
  -ITZTfTf ghh=9
9A(  wa-DvOtOt uvvwsK   EM0 :M!A!M0 9M&A"M0 9M+C	M0 !M0 0	N*9&N%N*%N*c                    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
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)Nr   r   r   r"   r'   work_id is requiredsub_category_id is requiredwork_imageswork_videoswork_sub_categories)work_sub_categories__work_progress_images)work_sub_categories__work_progress_videos)r7   $work_sub_categories__sub_category_idWork not found)context)rF   r   )r   r   r   r2   GETr5   HTTP_400_BAD_REQUESTr   r;   prefetch_relatedDoesNotExistHTTP_404_NOT_FOUNDr   intr1   rA   )rD   rE   r.   r"   r'   rF   
serializers          rK   r5   zWorkView.getE   sY   w'0133 
 ++//),!++//*;<1222 
 9:22 
	==11%;; c5D   " $D3Dc/FZ2[\
" ,, %%
 	
 !! 	,-00 	s    4D" "0EEN)__name__
__module____qualname__rL   r5        rK   r   r      s    2wj2
rc   r   c                       e Zd Zd Zy)	WorksViewc                 T   t        |      }|st        ddid      S t        j                  j	                  ||j
                  j                  d            j                  dd      j                  d	d
      }t        |d      }t        |j                  t        j                  d      S )Nr   r     r   r   )work__user_idr   rF   rG   work__work_imageswork__work_videosTmanyworksr   )r   r   r   r;   r=   rX   r5   select_relatedrZ   r   r1   r   rA   )rD   rE   r.   
work_cardsr^   s        rK   r5   zWorksView.get|   s    w'Y(<=cJJ(0077gV]VaVaVeVefnVo7p  AG  IW  X  i  i  j}  R  S
$Zd;
*//F<N<NOPPrc   Nr_   r`   ra   r5   rb   rc   rK   re   re   z       Qrc   re   c                       e Zd Zd Zy)WorkListViewc                     t        |      }|st        ddid      S t        j                  j	                  |      }t        |d      }t        |j                  t        j                  d      S )	Nr   r   rg   r   )r.   Trk   rm   )	r   r   r   r;   r=   r
   r1   r   rA   )rD   rE   r.   rn   r^   s        rK   r5   zWorkListView.get   s_    w'Y(<=cJJ$$W$5'D9
*//F<N<NOPPrc   Nrq   rb   rc   rK   rt   rt      rr   rc   rt   c                       e Zd Zd Zy)WorkSubcategoriesViewc                    t        |      }|st        ddid      S t        j                  j	                  |j
                  j                  d            }t        |d      }t        |j                  t        j                  d	      S )
Nr   r   rg   r   r"   )r"   Trk   )r   r   )r   r   r   r;   r=   rX   r5   r   r1   r   rA   )rD   rE   r.   r   r^   s        rK   r5   zWorkSubcategoriesView.get   so    w'Y(<=cJJ,44;;gkkooV_F`;a.~DI
:??VEWEWXYYrc   Nrq   rb   rc   rK   rw   rw      s    Zrc   rw   c                       e Zd Zd Zy)UpdateWorkStatusViewc                    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                  dddd      j                  ||      }|j                  }t        |      |_        |j                          dddddd
}	|	j                  |j                  d      }
	 |j                  r|j                  j                  nd}|j                  rt!        |j                  dd|j"                  j                   d|j$                  j                   d|
 dd|j"                  j&                  t)        |j"                  j&                        t)        |j$                  j&                        t)        |j                        d       t        d!t        j.                  |j                  |j1                         d"t        j.                        S # t        j                  $ r  t        ddit        j                        cY S w xY w# t*        $ r}t-        d |       Y d }~d }~ww xY w)#Nr   r   r   r"   r'   r   rN   rO   zstatus is required)r   r	            zInvalid statusrF   
work__userrI   rG   r&   rV   PendingAssignedStarted	CompletedCanceledUpdated
ContractorzWork Status Updatedz
Status of z (z) has been updated to .)r"   r'   r   )userr/   bodynotification_typereference_idr1   zStatus notification error:z Work status updated successfully)r   r   work_statusstatus_label)r   r   r   r2   r1   r5   rY   r]   r   r;   ro   r[   r\   r6   rI   r   r   rF   rG   r7   r@   rB   r3   rA   get_status_display)rD   rE   r.   r"   r'   status_valuevalid_statuswork_sub_category
old_statusstatus_labelscurrent_statuscontractor_namenotification_errors                rK   rL   zUpdateWorkStatusView.post   s?   w'3 33	  ,,""9-!,,**+<=||''14 22	  < 22	  3 22	  '|L0/ 22	 	 $++  "	 #$3   . '--
#&|#4   
 '**$$

*	 %// ",,11!  !++**55/$,11667 8-::??@ A/)*!	- '-!2!7!7!:!:#&'8'='='@'@#A+.-::==, #&-44#< = ,,077 1 D D F	 %%
 	
O #// 	/ 00	 	@  	," 	s+   3J4 C"K* 40K'&K'*	L	3LL	Nr_   r`   ra   rL   rb   rc   rK   rz   rz      s    Q
rc   rz   c                       e Zd Zd Zy)WorkRatingViewc                    	 |j                   j                  d      }|j                   j                  d      }|j                   j                  d      }|j                   j                  dd      }|r|st        ddit        j                        S t        t        ||	      }|t        dd
it        j                        S t        |      }|dk  s|dkD  rt        ddit        j                        S ||_        ||_	        |j                          t        t        j                  d|j                  |j                  dt        j                        S # t        j                  $ r  t        ddit        j                        cY S t        $ r0}t        dt        |      it        j                         cY d }~S d }~ww xY w)Nr"   r'   ratingreviewr*   r   z$work_id and sub_category_id requiredr   r&   zrating requiredr	      zrating must be between 1 and 5zRating submitted successfully)r   r   r   r   rV   )r1   r5   r   r   rY   r   r   r]   r   r   r6   rA   r[   r\   rB   r@   rC   )rD   rE   r"   r'   r   r   work_objrJ   s           rK   rL   zWorkRatingView.post2  s   ;	ll&&y1G%ll../@AO\\%%h/F\\%%h3F/ FG!66  )# /H ~ 12!66 
 [FzVaZ @A!66  %HO$HOMMO$00>&oo&oo	 ))  #// 	,-00 
  	CF#<< 	s7   BE 0E 1E 3AE 0F=F=%F82F=8F=Nr   rb   rc   rK   r   r   0  s    <rc   r   )"datetimer   jsonrest_framework.viewsr   rest_frameworkr   rest_framework.responser   accounts.modelsr   serializersr
   r   r   r   utils.helpersr   r   modelsr   r   r   r   django.shortcutsr   utils.firebaser   r   re   rt   rw   rz   r   rb   rc   rK   <module>r      s      ( ! , ! h h B I I . ,i
w i
XQ QQ7 QZG ZS
7 S
j>W >rc   