
    Ui                        d 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 d	d
l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      Z G d dej"                        Z G d de      Z G d dej2                        Z G d dej2                        Z G d dej2                        Zy)z
Serializers for recipe APIs
    N)timezone)serializers)Avg)LocalizedDateTimeField)Customer)Company   )CallCallActivityc                   $    e Zd ZdZ G d d      Zy)CallSerializerzSerializer for calls.c                       e Zd ZeZg dZdgZy)CallSerializer.Meta)
idfrom_number	to_numbercompanystatus
transcriptdurationcostcall_idtwilio_call_sidr   N__name__
__module____qualname__r
   modelfieldsread_only_fields     ?/var/www/html/dp2/backend_v2.1/server/apps/calls/serializers.pyMetar      s    % 6r"   r$   N)r   r   r   __doc__r$   r!   r"   r#   r   r      s    " "r"   r   c                        e Zd Z G d d      Zy)CustomerSerializerc                       e Zd ZeZdgZy)CustomerSerializer.MetanameN)r   r   r   r   r   r   r!   r"   r#   r$   r)      s    r"   r$   Nr   r   r   r$   r!   r"   r#   r'   r'      s     r"   r'   c                        e Zd Z G d d      Zy)CompanySerializerc                       e Zd ZeZddgZy)CompanySerializer.Metar   r*   N)r   r   r   r   r   r   r!   r"   r#   r$   r/   "   s    r"   r$   Nr+   r!   r"   r#   r-   r-   !   s       r"   r-   c                   H    e Zd Z ej                         Z G d d      Zd Zy)CallActivitySerializerc                       e Zd ZeZg dZy)CallActivitySerializer.Meta)user_fullnameactionperformed_atduration_playedN)r   r   r   r   r   r   r!   r"   r#   r$   r3   )   s    Or"   r$   c                 l    t        |j                  dd       }|r|j                   d|j                   S y )Nprofile )getattruser
first_name	last_name)selfobjr9   s      r#   get_user_fullnamez(CallActivitySerializer.get_user_fullname-   s9    #((It4(()7+<+<*=>>r"   N)r   r   r   r   SerializerMethodFieldr4   r$   rA   r!   r"   r#   r1   r1   &   s#    5K557MP Pr"   r1   c                       e Zd ZdZ e       Z ed      Z ej                         Z
 ej                         Z ej                         Z G d dej                        Zd Zd Zd Zy	)
CallDetailSerializerz Serializer for call detail view.T)	read_onlyc                   B    e Zd Zej                  j
                  g dz   Zy)CallDetailSerializer.Meta)

created_atread_attransfer_status	sentimentsummaryr   customertransfer_user
activitiesbot_typeN)r   r   r   r   r$   r   r!   r"   r#   r$   rG   ;   s    $$++ /
 
r"   r$   c                     t         j                  j                  |j                  |j                        j                         }|rt        |      j                  S y )N)phoner   )r   objectsfilterr   r   firstr'   data)r?   r@   rM   s      r#   get_customerz!CallDetailSerializer.get_customerI   sE    ##**#++*V\\^%h/444r"   c                    |j                   r|j                   j                  }t        |j                   d      ro|j                   j                  rY|j                   j                  j                  }|j                   j                  j
                  }|s|r| d| j                         }|j                   j                  |dS y )Nr9   r:   )r   r*   )rN   usernamehasattrr9   r=   r>   stripr   )r?   r@   	full_namer=   r>   s        r#   get_transfer_userz&CallDetailSerializer.get_transfer_userO   s    ))22Is(()49J9J9R9R ..66AA
--55??	#-,a	{ ; A A CI ''**!  r"   c                 f    |j                   j                  d      }t        |d      j                  S z5Return activities ordered descending by performed_at.z-performed_atT)manyrO   order_byr1   rV   r?   r@   rO   s      r#   get_activitiesz#CallDetailSerializer.get_activities^   )    ^^,,_=
%jt<AAAr"   N)r   r   r   r%   r   rH   r-   r   r   rB   rM   rN   rO   r   r$   rW   r]   rd   r!   r"   r#   rD   rD   3   si    *')J$/G0{002H5K557M2224J
~"" 
Br"   rD   c                        e Zd Z G d d      Zy)SalesCallDetailSerializerc                       e Zd ZeZg dZdgZy)SalesCallDetailSerializer.Meta)r   r   rK   rH   r   Nr   r!   r"   r#   r$   ri   e   s    A 6r"   r$   Nr+   r!   r"   r#   rg   rg   d   s    " "r"   rg   c                       e Zd Z ej                         Z ej                         Z ej                         Z G d dej                        Z	d Z
d Zd Zy)SalesCallSerializerc                   B    e Zd Zej                  j
                  g dz   Zy)SalesCallSerializer.Meta)offtimer*   rO   N)r   r   r   rg   r$   r   r!   r"   r#   r$   rm   p   s    *//66 :
 
r"   r$   c                     |j                   j                         r$|j                   j                         j                  S d S )N)appointment_setrU   r*   r?   r@   s     r#   get_namezSalesCallSerializer.get_nameu   s4    363F3F3L3L3Ns""((*//XTXXr"   c                     |j                   j                         r$|j                   j                         j                  S dS )Nr	   )rp   rU   rn   rq   s     r#   get_offtimezSalesCallSerializer.get_offtimex   s4    696I6I6O6O6Qs""((*22XWXXr"   c                 f    |j                   j                  d      }t        |d      j                  S r_   ra   rc   s      r#   rd   z"SalesCallSerializer.get_activities{   re   r"   N)r   r   r   r   rB   rn   r*   rO   rg   r$   rr   rt   rd   r!   r"   r#   rk   rk   j   sW    /k//1G,;,,.D2224J
(-- 

YYBr"   rk   c                       e Zd Z ej                  ddd      Z ej                  d      Z ej                  d      Z ej                  d      Z
d Zy	)
TopRepeatedCallersSerializer
   r	   d   )default	min_value	max_valueTrequiredFc                 F    |d   |d   k  rt        j                  d      |S )Nend_date
start_datez!End date must be after start dater   ValidationError)r?   rV   s     r#   validatez%TopRepeatedCallersSerializer.validate   s+    
d<00--.QRRr"   N)r   r   r   r   IntegerFieldlimitDateTimeFieldr   r   	CharFieldr   r   r!   r"   r#   rw   rw      sS    $K$$R1LE***D9J({(($7H#k##U3Gr"   rw   c                   ^    e Zd Z ej                  d      Z ej                  d      Zd Zy)DateRangeSerializerTr}   c                 N    |d   }|d   }||kD  rt        j                  d      |S )Nr   r   zstart_date must be <= end_dater   )r?   rV   startends       r#   r   zDateRangeSerializer.validate   s4    \":3;--.NOOr"   N)r   r   r   r   r   r   r   r   r!   r"   r#   r   r      s+    ***D9J({(($7Hr"   r   c                   <    e Zd ZdZ ej
                  d      Zd Zy)ReadCallSerializerz&Serializer for marking a call as read.Tr}   c                 :    |dk  rt        j                  d      |S )Nr   zID must be a positive integerr   )r?   values     r#   validate_idzReadCallSerializer.validate_id   s     A:--.MNNr"   N)r   r   r   r%   r   r   r   r   r!   r"   r#   r   r      s    0	!	!	!4	0Br"   r   )r%   pytzdjango.utilsr   rest_frameworkr   django.db.modelsr   apps.core.fieldsr   apps.customers.modelsr   apps.companies.modelsr   modelsr
   r   ModelSerializerr   r'   r-   r1   rD   rg   rk   
Serializerrw   r   r   r!   r"   r#   <module>r      s     ! &   3 * ) &"[00 "44  33  
[88 .B> .Bb" ; ; "B3 B,	;#9#9 	+00 // r"   