o
    j<•jö  ã                   @   sx   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 eddgd�Z
e
jdejd	�ed
dd�fded
B fdd„ƒZd
S )é    )Ú	APIRouterÚQueryÚstatus)Úget_active_sessions)Úget_database)Úget_session_by_idz/api/v1/adminÚadmin)ÚprefixÚtagsz/active-sessions)Ústatus_codeNzOptional siteId filter)ÚdefaultÚdescriptionÚsiteIdc                 Ã   s   �t ƒ }t| ƒ}g }| ¡ D ]ï\}}| d¡dkrq| d¡p i }t|tƒr+| d¡nd}t|tƒr7| d¡nd}t|tƒrC| d¡nd}	d}
|r\|r\| d¡r\| d¡d	ks\| d
¡s{t||ƒI dH }
|
r{|pl|
 d¡}|ps|
 d¡}|	pz|
 d¡}	| d¡}| d¡}|s³| d¡dkr³|
p—t||ƒI dH }
|
r³|
 d¡}|
 d¡}|r³t|dƒr¯| ¡ nt	|ƒ}| d¡}|r¾|d	krÅ|
rÅ|
 d¡}| d
¡}|sÓ|
rÓ|
 d
¡}| 
|| d¡| dd¡| dd¡| d¡||| d¡|	||||põd	| d¡dœ¡ q|S )z­
    Returns a snapshot of currently active visitor sessions for initial dashboard loading.
    Excludes ENDED sessions. Includes assignedAgentId and assignedAt fields.
    r   ÚENDEDÚuserÚnameNÚemailÚidÚcountryÚUnknownÚ	ipAddressÚuserNameÚ	userEmailÚuserIdÚassignedAgentIdÚ
assignedAtÚIN_CHATÚ	isoformatr   ÚRINGINGÚconnectionStatusÚonlineÚdisconnectedAtÚendedByÚconnectedAt)Ú	sessionIdr   r   r   r!   r   r   r"   r   r   r   r   r   r#   )r   r   ÚitemsÚgetÚ
isinstanceÚdictr   Úhasattrr   ÚstrÚappend)r   ÚdbÚactive_dictÚresultÚsidÚdataÚ	user_dataÚ	user_nameÚ
user_emailÚuser_idÚsession_docÚassigned_agentÚassigned_atÚassigned_at_valÚresolved_countryÚresolved_ip© r;   ú2/web/html/dev/chatbot/backend/app/routers/admin.pyÚlist_active_sessions   st   €ÿþýÿ










òr=   )Úfastapir   r   r   Úapp.services.presencer   Úapp.databaser   Ú#app.repositories.session_repositoryr   Úrouterr&   ÚHTTP_200_OKr*   r=   r;   r;   r;   r<   Ú<module>   s    $