
    =h
                     D   d dl mZmZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ  G d d	e      Z G d
 d      Z eddg      Zej'                  d      defd       Zej-                  d      dedefd       Zej'                  d      defd       Zy)    )	APIRouterHTTPException)MongoClient)ObjectId)datetime)ListOptionalDict)	BaseModel)retell_managerc                   ,    e Zd Zed        Zed        Zy)
PyObjectIdc              #   (   K   | j                    y w)N)validate)clss    F/var/www/html/phonemate/phone_mate_backend/app/api/telephony/routes.py__get_validators__zPyObjectId.__get_validators__
   s     lls   c                 X    t        j                  |      st        d      t        |      S )NzInvalid ObjectId)r   is_valid
ValueError)r   vs     r   r   zPyObjectId.validate   s&      #/00{    N)__name__
__module____qualname__classmethodr   r    r   r   r   r   	   s(       r   r   c                       e Zd ZdedefdZy)MongoDBManagermongodb_urldb_namec                 b   t        |      | _        | j                  |   | _        | j                  j                  | _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  dd       | j                  j                  dd       y )NemailT)uniquetwilio_number)r   clientdbusers
businessesai_assistantscreate_index)selfr    r!   s      r   __init__zMongoDBManager.__init__   s    !+.++g& WW]]
'',,!WW22 	

5$$_T$Br   N)r   r   r   strr-   r   r   r   r   r      s    CC C# Cr   r   z/api/telephony	Telephony)prefixtagsz/get-bot-config/{phone_number}phone_numberc                 H  K   t         j                  j                  d| i       d {   }|st        dd      |d   }	 t	        j
                  |       d {   }|d   ||d   |d   |d	   d
dS 7 L7 # t        $ r}t        ddt        |             d }~ww xY ww)Nr%   i  zBusiness not foundstatus_codedetailai_assistant_configbot_idbusiness_nameservicesavailability)namer:   r;   )r8   
bot_configbusiness_details  zFailed to initialize bot: )r'   r)   find_oner   r   create_transient_bot	Exceptionr.   )r2   businessr=   bot_responsees        r   get_bot_configrF   $   s      ]]++_l,KLLH4HII /0J
+@@LL #8,$ 1$Z0 ( 8!
 	
 M M  
/Ax8
 	

sE   %B"A4B"A8 A6A8 3B"6A8 8	BBBB"z/update-bot/{bot_id}r8   configc                    K   	 t        j                  | |       d {   }d| dS 7 	# t        $ r}t        ddt	        |             d }~ww xY ww)NzBot updated successfully)messager8   r?   zFailed to update bot: r4   )r   update_bot_configrB   r   r.   )r8   rG   responserE   s       r   
update_botrL   ?   s^     
'99&&II5HH J 
+CF84
 	

s0   A) ') A) 	AAAAz/bot-status/{bot_id}c                    K   	 t        j                  |        d {   }d|iS 7 # t        $ r}t        ddt	        |             d }~ww xY ww)Nstatusr?   zFailed to get bot status: r4   )r   get_bot_statusrB   r   r.   )r8   rN   rE   s      r   rO   rO   J   s[     
%44V<<&!! = 
/Ax8
 	

s0   A' %' A' 	AA		AAN)fastapir   r   pymongor   bsonr   r   typingr   r	   r
   pydanticr   app.utils.retell_clientr   r   r   routergetr.   rF   postrL   rO   r   r   r   <module>rY      s    ,    ' '  2	 	C C 
*+	?,-
s 
 .
4 #$
S 
$ 
 %
 "#
 
 $
r   