
    8j!                        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
  G d dej                        Z G d dej                        Z G d	 d
ej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Zy)    )serializers)Avg)Work_ImagesWork_Sub_Categories)ContractorProfileContractorWorkUsersc                       e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z	 ej                         Z
 ej                         Zy)UserProfileSerializerN)__name__
__module____qualname__r   IntegerFieldid	CharFieldnameemailmobileaddress
ImageFieldprofile_pic     3/var/www/html/HOMYLIO_ADMIN/accounts/serializers.pyr   r      sb    	!	!	!	#B ;  "D!K!!#E"[""$F#k##%G(+((*Kr   r   c                        e Zd Z G d d      Zy)ContractorWorkSerializerc                       e Zd ZeZdZy)ContractorWorkSerializer.Meta__all__N)r   r   r   r   modelfieldsr   r   r   Metar      s    r   r"   Nr   r   r   r"   r   r   r   r   r      s     r   r   c                   $   e Zd Z ej                  dd      Z ej                  dd      Z ej                  dd      Z ej                  dd      Z	 ej                  dd      Z
 ej                         Z edd      Z G d	 d
      Zd Zy)ContractorProfileSerializerz	user.nameT)source	read_onlyz
user.emailzuser.mobilezuser.profile_piczuser.address)manyr'   c                       e Zd ZeZdZy) ContractorProfileSerializer.Metar   N)r   r   r   r   r    r!   r   r   r   r"   r*   "   s    !r   r"   c                 L    t        |j                  j                  dd            S )Nr   r   )listsub_categoriesvaluesselfobjs     r   get_sub_categoriesz.ContractorProfileSerializer.get_sub_categories&   s     C&&--dF;<<r   N)r   r   r   r   r   r   r   r   r   r   r   SerializerMethodFieldr-   r   worksr"   r2   r   r   r   r%   r%      s     ;  tDD!K!!FE"[""-4HF(+((0BdSK#k##>TJG6[668N$$$?E =r   r%   c                   <   e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z ej                         Z	 ej                         Z
 ej                  d      Z G d d      Zd Zd Zd Zd Zd	 Zd
 Zd Zy)ProfessionalsSerializerT)r'   c                       e Zd ZeZg dZy)ProfessionalsSerializer.Meta)r   r   r   r   r   biohourly_rateexperience_yearslocationis_verifiedr-   
avg_ratingNr   r   r   r	   r    r!   r   r   r   r"   r8   6   s    
r   r"   c                     t        |dd       S Ncontractor_profilegetattrr/   s     r   get_profilez#ProfessionalsSerializer.get_profileK       s0$77r   c                 D    | j                  |      }|r|j                  S dS N rE   r9   r0   r1   profiles      r   get_biozProfessionalsSerializer.get_bioN   s#    ""3'%w{{-2-r   c                 D    | j                  |      }|r|j                  S dS Nr   rE   r:   rK   s      r   get_hourly_ratez'ProfessionalsSerializer.get_hourly_rateR   s%    ""3'&-w""414r   c                 D    | j                  |      }|r|j                  S dS rO   rE   r;   rK   s      r   get_experience_yearsz,ProfessionalsSerializer.get_experience_yearsV   s%    ""3'+2w''99r   c                 D    | j                  |      }|r|j                  S dS rH   rE   r<   rK   s      r   get_locationz$ProfessionalsSerializer.get_locationZ   s%    ""3'#*w22r   c                 D    | j                  |      }|r|j                  S dS NFrE   r=   rK   s      r   get_is_verifiedz'ProfessionalsSerializer.get_is_verified^   s%    ""3'&-w""858r   c                     | j                  |      }|sg S |j                  j                         D cg c]  }|j                  |j                  d c}S c c}w N)r   r   rE   r-   allr   r   r0   r1   rL   scs       r   r2   z*ProfessionalsSerializer.get_sub_categoriesb   s]    ""3'I ,,002

  ee
 	
 
    AN)r   r   r   r   r3   r9   r:   r;   r<   r=   r-   
FloatFieldr>   r"   rE   rM   rQ   rT   rW   r[   r2   r   r   r   r6   r6   *   s    
++
+
+
-C3+335K8{88:0{002H3+335K6[668N (''$7J
 
*8.5:39
r   r6   c                        e Zd Z G d d      Zy)WorkImageSerializerc                       e Zd ZeZddgZy)WorkImageSerializer.Metar   imageN)r   r   r   r   r    r!   r   r   r   r"   rg   u   s    
r   r"   Nr#   r   r   r   re   re   s   s    
 
r   re   c                        e Zd Z G d d      Zy)ReviewUserSerializerc                       e Zd ZeZg dZy)ReviewUserSerializer.Meta)r   r   r   Nr?   r   r   r   r"   rl      s    
r   r"   Nr#   r   r   r   rj   rj      s    
 
r   rj   c                   H    e Zd Z ej                         Z G d d      Zd Zy)ProfessionalReviewSerializerc                       e Zd ZeZg dZy)!ProfessionalReviewSerializer.Meta)ratingreviewuserN)r   r   r   r   r    r!   r   r   r   r"   rp      s    #
r   r"   c                     |j                   r?|j                   j                  r)t        |j                   j                        j                  S y )N)workrs   rj   datar/   s     r   get_userz%ProfessionalReviewSerializer.get_user   s5    88'd r   N)r   r   r   r   r3   rs   r"   rw   r   r   r   rn   rn      s!    ,;,,.D
 
r   rn   c                      e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z ej                         Z	 ej                         Z
 ej                         Z ej                         Z ej                         Z ej                         Z G d d      Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zy)ProfessionalSerializerc                       e Zd ZeZg dZy)ProfessionalSerializer.Meta)r   r   r   r   r   r9   r:   r;   r<   r=   r-   r>   total_reviewsreviewscompleted_work_imagesNr?   r   r   r   r"   r{      s    
r   r"   c                     t        |dd       S rA   rC   r/   s     r   rE   z"ProfessionalSerializer.get_profile   rF   r   c                 D    | j                  |      }|r|j                  S dS rH   rJ   rK   s      r   rM   zProfessionalSerializer.get_bio   s#    ""3'%w{{-2-r   c                 D    | j                  |      }|r|j                  S dS rO   rP   rK   s      r   rQ   z&ProfessionalSerializer.get_hourly_rate   s%    ""3'&-w""414r   c                 D    | j                  |      }|r|j                  S dS rO   rS   rK   s      r   rT   z+ProfessionalSerializer.get_experience_years   s%    ""3'+2w''99r   c                 D    | j                  |      }|r|j                  S dS rH   rV   rK   s      r   rW   z#ProfessionalSerializer.get_location   s%    ""3'#*w22r   c                 D    | j                  |      }|r|j                  S dS rY   rZ   rK   s      r   r[   z&ProfessionalSerializer.get_is_verified   s%    ""3'&-w""858r   c                     | j                  |      }|sg S |j                  j                         D cg c]  }|j                  |j                  d c}S c c}w r]   r^   r`   s       r   r2   z)ProfessionalSerializer.get_sub_categories   s]    ""3'I ,,002

  ee
 	
 
rb   c                     t         j                  j                  |d      j                  t	        d            }t        |d   xs dd      S )Nr   
contractor
rating__gtrq   )avgr      )r   objectsfilter	aggregater   round)r0   r1   qss      r   get_avg_ratingz%ProfessionalSerializer.get_avg_rating  sU     ((// 0 
 )H  
 	 RY^!Q''r   c                 `    t         j                  j                  |d      j                         S )Nr   r   )r   r   r   countr/   s     r   get_total_reviewsz(ProfessionalSerializer.get_total_reviews  s/    "**11 2 
 %'	r   c                     t         j                  j                  |d      j                  d      j	                  d      }t        |d      j                  S )Nr   r   
work__user-idTr(   )r   r   r   select_relatedorder_byrn   rv   )r0   r1   r}   s      r   get_reviewsz"ProfessionalSerializer.get_reviews   sZ    %--44 5 
 .

(5/ 	 ,
 $	r   c                    t         j                  j                  |d      j                  d      }|j	                  dd      }t
        j                  j                  |      j                  d      d d	 }t        |d
      j                  S )N   )r   statusru   work_idT)flat)work_id__inr      r   )	r   r   r   r   values_listr   r   re   rv   )r0   r1   completed_workswork_idsimagess        r   get_completed_work_imagesz0ProfessionalSerializer.get_completed_work_images1  s    -55<< = 
 .
  	
 #.. / 

 $$++  , 

(5/"1 #
 $	r   N)r   r   r   r   r3   r9   r:   r;   r<   r=   r-   r>   r|   r}   r~   r"   rE   rM   rQ   rT   rW   r[   r2   r   r   r   r   r   r   r   ry   ry      s    
++
+
+
-C3+335K8{88:0{002H3+335K6[668N2224J5K557M/k//1G >K==?
 
88.5:39
$	("r   ry   N)rest_frameworkr   django.db.modelsr   works.modelsr   r   accounts.modelsr   r   r	   
Serializerr   ModelSerializerr   r%   r6   re   rj   rn   ry   r   r   r   <module>r      s    &   9 D D+K22 +{:: =+"="= =$D
k99 D
R
+55 

;66 
;#>#> 4\[88 \r   