
    yi                     T    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  G d d      Z	y)	    )datetime)Session)ChatHistory)UserSession)	KBServicec                       e Zd ZddZ	 	 	 ddededededz  dedz  d	edz  ddfd
Zdee   fdZ	dedee   fdZ
dedededededefdZ	 	 	 ddedededededz  dedz  d	edz  defdZy)ChatbotServicereturnNc                 "    t               | _        y )N)r   kb)selfs    P/home/techsaathi/public_html/it_helpdesk_chatbot/app/services/chatbot_service.py__init__zChatbotService.__init__   s    +    db
session_id	user_nameemployee_id
departmentdevice_namec           
         |j                  t              j                  t        j                  |k(        j	                         }|sHt        |||||t        j                         t        j                               }|j                  |       n5||_        ||_	        ||_
        ||_        t        j                         |_        |j                          y )N)r   r   r   r   r   
started_atlast_activity_at)queryr   filterr   firstr   utcnowaddr   r   r   r   r   commit)r   r   r   r   r   r   r   sessions           r   _upsert_sessionzChatbotService._upsert_session   s     ((;'..{/E/E/STZZ\!%#'%'#??,!)!2G FF7O )G"-G!+G"-G'/'8G$
		r   c                 n    | j                   j                         D cg c]  }|d   |d   d c}S c c}w Ncodetitle)r$   r%   )r   get_categories)r   categorys     r   r&   zChatbotService.get_categories-   s@     !GG224
 f%0AB
 	
 
s   2category_codec                 p    | j                   j                  |      D cg c]  }|d   |d   d c}S c c}w r#   )r   get_sub_options)r   r(   items      r   r*   zChatbotService.get_sub_options3   s@     //>
 &\DM:
 	
 
s   3sub_codec                 z   | j                   j                  ||      }|sdg ddS |d   }|j                  dg       }t        ||d d d |d   |dz   dj	                  |      z   ||d   |j                         d	      }	|j                  |	       |j                          |j                  |	       |	j                  ||d
S )NzIssue details not found.r   )replystepschat_idr%   r/   z


Pendingr   r   r   r   r   user_message	bot_reply
issue_codeissue_titledetected_categoryresolution_status)r0   r.   r/   )
r   get_sub_optiongetr   joinr%   r   r   refreshid)
r   r   r   r   r(   r,   r+   r.   r/   chats
             r   
get_answerzChatbotService.get_answer9   s    ww%%mX>7"QRSSW"%!gfntyy'77W+113'
 	t
		


4 ww
 	
r   messagec                     | j                  ||||||       t        ||||||d| d d dd      }|j                  |       |j                          |j	                  |       |j
                  d| g d d dg dS )NzMessage received: Generalr2   r3   )r0   r.   r/   r6   r7   r8   quick_actions)r!   r   r   r   r=   r>   )	r   r   r   r   rA   r   r   r   r?   s	            r   processzChatbotService.processX   s     	RYZQ\]!#!# *7)4''
 	t
		


4 ww)'3!*
 	
r   )r
   N)NNN)__name__
__module____qualname__r   r   strr!   listdictr&   r*   r@   rE    r   r   r	   r	   
   s+    #'!%"&  	
 4Z $J 4Z 
>
T
 

S 
T$Z 

W 
# 
# 
VY 
eh 
mq 
J #'!%"&%
%
 %
 	%

 %
 4Z%
 $J%
 4Z%
 
%
r   r	   N)
r   sqlalchemy.ormr   app.models.chat_historyr   app.models.user_sessionr   app.services.kb_servicer   r	   rL   r   r   <module>rQ      s      " / / -s
 s
r   