o
    ñ¢øga  ã                   @   s.   d dl m Z  d dlmZmZ G dd„ dƒZdS )é    )Údatetime)ÚChatMessageÚChatSessionc                   @   sb   e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZeddd„ƒZedd„ ƒZ	edd„ ƒZ
dS )ÚChatServicec                 Ë   s<   t di |¤t ¡ |dœ¤Ž}| |¡ |  |¡I dH }|S )zá
        Insert a new record into the financial_information_pages table using MySQLDB's execute_insert.

        :param db: An instance of MySQLDB
        :param kwargs: Dictionary of column values for the new record
        )Ú
created_atÚ
created_byN© )r   r   ÚnowÚupdate_modifyÚexecute_insert)ÚdbÚuser_idÚkwargsÚ
new_recordÚrecordr   r   ú8/var/www/html/XCapMarket/services/docchat/chatService.pyÚinsert_new_record   s   €ÿ
ý
zChatService.insert_new_recordc                 Ã   s:   t t ¡ |j|||d}| |j¡ |  |¡I dH }|S )zCreate a new chat session)r   r   Ú
project_idÚteam_idÚselected_filesN)r   r   r	   r   r
   r   )r   Úcurrent_userr   r   r   Únew_sessionr   r   r   r   Úcreate_chat_session   s   €ûzChatService.create_chat_sessionc                 Ã   sP   t j|jkt jdkt j|kt j|kg}t j ¡ g}d}| jt |||dI dH S )zGet the last session for a userTé   )ÚfiltersÚorder_byÚlimitN)	r   r   r   Ú	is_activer   r   Úmodified_atÚdescÚexecute_query)r   Úuserr   r   r   r   r   r   r   r   Úget_latest_session_for_user(   s   €
üÿz'ChatService.get_latest_session_for_userc                 Ã   sB   t j|jkt j|kt j|kg}t j ¡ g}| jt ||dI dH S )zGet all sessions for a user)r   r   N)r   r   r   r   r   r   r   r    )r   r!   r   r   r   r   r   r   r   Úget_all_sessions_for_user7   s   €
ýýz%ChatService.get_all_sessions_for_userr   é
   c                 Ã   s4   t j|kg}t j ¡ g}| jt ||||dI dH S )zGet all messages for a session)r   r   r   ÚoffsetN)r   Ú
session_idr   r   r    )r   r&   r%   r   r   r   r   r   r   Úget_messages_for_sessionF   s   €
ÿz$ChatService.get_messages_for_sessionc                 Ã   sL   t j|kt j|jkg}ddi}t ¡ |d< |j|d< | jt ||dI dH S )zEnd a chat sessionr   Fr   Úmodified_by©r   ÚvaluesN)r   r&   r   r   r   r	   Úupdate_record)r   r&   r   r   r*   r   r   r   Úend_chat_sessionO   s   €
þ
zChatService.end_chat_sessionc                 Ã   sb   t j|kg}i }|jr|j|d< |jr|j|d< t ¡ |d< |j|d< | jt ||dI dH }|S )zUpdate a chat sessionr   r   r   r(   r)   N)r   r&   r   r   r   r	   r   r+   )r   r&   Úpayloadr   r   r*   Úsessionr   r   r   Úupdate_chat_session\   s   €


zChatService.update_chat_sessionN)r   r$   )Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r"   r#   r'   r,   r/   r   r   r   r   r      s    




r   N)r   Úmodels.docchatr   r   r   r   r   r   r   Ú<module>   s    