o
    @boj	                     @   sj   d dl m Z mZ d dlmZ d dlmZ d dlmZmZ ed Z	ed Z
de fdd	ZG d
d deZdS )    )datetimetimezone)Literal)uuid4)	BaseModelField)ringingansweredtalkingendedfailed)inboundoutboundreturnc                   C   s   t tjS N)r   nowr   utc r   r   6/var/www/html/bot-asterisk-ari/backend/calls/models.pyutc_now   s   r   c                   @   s  e Zd ZU edd dZeed< eedZee ed< dZ	edB ed< dZ
eed	< dZeed
< dZeed< dZedB ed< dZeed< dZeed< dZeed< dZedB ed< dZedB ed< dZedB ed< dZeed< dZeed< dZeed< dZeed< dZedB ed< dZedB ed< dZedB ed< dZe ed< eedZ!ee ed< dZ"edB ed< dZ#edB ed < ee$dZ%e&ed!< dZ'e&dB ed"< d#ed$dfd%d&Z(d$e fd'd(Z)d.ded$dfd*d+Z*d$efd,d-Z+dS )/	CallStatec                   C   s
   t t S r   )strr   r   r   r   r   <lambda>   s   
 zCallState.<lambda>)default_factorycall_idchannel_idsN	bridge_idFoutbound_stasis_setupagent_leg_originatedexternal_media_attachedexternal_media_channel_idwebrtc_connectedr   	directionr   statusnumberdocument_iddocument_playback_iddocument_playback_donebot_media_readybot_startedtransfer_in_progresstransfer_targetpoliza_datacall_resultr   duration
transcriptagent_statedisconnect_reason
started_atended_at
channel_idr   c                 C   s   || j vr| j | d S d S r   )r   append)selfr4   r   r   r   add_channel2   s   
zCallState.add_channelc                 C   s0   | j pt }| jrtdt|| j  S | jS )Nr   )r3   r   r2   maxinttotal_secondsr.   )r6   endr   r   r   elapsed_seconds6   s   zCallState.elapsed_secondsr   c                 C   s   || _ t | _|  | _d S r   )r#   r   r3   r<   r.   )r6   r#   r   r   r   finalize<   s   zCallState.finalizec                 C   s   | j dd}|  |d< |S )Njson)moder.   )
model_dumpr<   )r6   datar   r   r   	to_publicA   s   zCallState.to_public)r   ),__name__
__module____qualname__r   r   r   __annotations__listr   r   r   boolr   r   r    r!   r"   CallDirectionr#   
CallStatusr$   r%   r&   r'   r(   r)   r*   r+   r,   dictr-   r.   r9   r/   r0   r1   r   r2   r   r3   r7   r<   r=   rB   r   r   r   r   r      s>   
 r   N)r   r   typingr   uuidr   pydanticr   r   rJ   rI   r   r   r   r   r   r   <module>   s    