ó
    4¡?i5  ã                   óâ   • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJrJr  S S	KJrJrJrJr  \" 5       r\R1                  S
5      \" \5      4S\S\S\4S jj5       rg)é    )Úselect)Úget_db)ÚClient)ÚVisitor)ÚMessage)ÚChatService)ÚAsyncSession)Úvisitor_managerÚagent_managerÚadmin_manager)Ú	APIRouterÚ	WebSocketÚWebSocketDisconnectÚDependsz/ws/visitor/{visitor_uid}Ú	websocketÚvisitor_uidÚdbc              ƒ   óx  #   • U R                  5       I S h  v•N   [        R                  " X5        [        SU 35        UR	                  [        [        [        5      R                  [        [        R                  [        R                  :H  5      R                  [        R                  U:H  5      5      I S h  v•N nUR                  5       nS =pVU(       a¦  Uu  pVSUR                  UR                  UR                  UR                   UR"                  UR$                  UR                  U(       a  UR&                  OS S S.
n[(        R*                  " U5      I S h  v•N   [,        R*                  " U5      I S h  v•N     U R/                  5       I S h  v•N nUR1                  S5      n	UR1                  SS5      n
U	S:X  a`  UR1                  S[3        U
5      5      nSS	UU
US
.n[(        R*                  " U5      I S h  v•N   [,        R*                  " U5      I S h  v•N   OªU	S:X  a¤  U
=(       d    SR5                  5       nU(       a  U(       d  MÑ  [7        U5      nUR9                  UR                  UR                  S	US9I S h  v•N   SUUS.n[(        R*                  " U5      I S h  v•N   [,        R*                  " U5      I S h  v•N   GMN   GN· GN GNy GN^ GNG Nß NÃ N\ N: N! [:         a    [        SU5         Of = f[        R<                  " U5        SUS.n[(        R*                  " U5      I S h  v•N    [,        R*                  " U5      I S h  v•N    g ! [        R<                  " U5        SUS.n[(        R*                  " U5      I S h  v•N    [,        R*                  " U5      I S h  v•N    f = f7f)NzVisitor connected: Úvisitor_connected)
Útyper   ÚnameÚcityÚcountryÚregionÚ
ip_addressÚ	client_idÚclient_nameÚassigned_agent_idr   ÚtextÚ ÚtypingÚisTypingÚvisitor)r   Úfromr   r   r"   Úmessage)r   Ú
visitor_idÚsenderr   Úvisitor_message)r   r   r   zVisitor disconnected:Úvisitor_disconnected)r   r   )Úacceptr
   ÚconnectÚprintÚexecuter   r   r   Újoinr   ÚidÚwherer&   Úfirstr   r   r   r   r   r   r   Ú	broadcastr   Úreceive_jsonÚgetÚboolÚstripr   Úsave_messager   Ú
disconnect)r   r   r   ÚresÚrowr#   ÚclientÚpayloadÚdataÚmsg_typer   Ú	is_typingÚmsg_textÚchat_services                 Ú0/var/www/html/livechat/backend/app/ws/visitor.pyÚ
visitor_wsrC      s7  é € ð ×
Ñ
Ó
×Ðô ×Ò˜KÔ3Ü	Ð ˜}Ð
-Ô.ð —
‘
ÜŒwœÓß	‰Œf”g×'Ñ'¬6¯9©9Ñ4Ó	5ß	‰Œw×!Ñ! [Ñ0Ó	1ó÷ €Cð
 )‰)‹+€CØÐ€GÞ
Ø‰ˆð (Ø"×-Ñ-Ø—L‘LØ—L‘LØ—‘Ø—n‘nØ!×,Ñ,Ø ×*Ñ*Þ17˜6×-Ò-¸TØ!%ñ
ˆô ×%Ò% gÓ.×.Ð.Ü×%Ò% gÓ.×.Ð.ð;/ØØ"×/Ñ/Ó1×1ˆDØ—x‘x Ó'ˆHØ—8‘8˜F BÓ'ˆDð
 ˜8Ó#Ø ŸH™H Z´°d³Ó<	ð %Ø%Ø#.Ø Ø )ñô $×-Ò-¨gÓ6×6Ð6Ü#×-Ò-¨gÓ6×6Ñ6ð
 ˜YÓ&Ø ŸJ B×-Ñ-Ó/Þ¦wÙä*¨2›Ø"×/Ñ/Ø%×/Ñ/Ø&Ÿz™zØ$Ø!ð	 0ð ÷ ð ð .Ø#.Ø$ñô $×-Ò-¨gÓ6×6Ð6Ü#×-Ò-¨gÓ6×6Ð6ò[ òG òò0 	/Ú.ò 2ñ$ 7Ù6ññ 7Ù6øäó 4ÜÐ% {Ö3ð4úô 	×"Ò" ;Ô/ð +Ø&ñ
ˆô ×%Ò% gÓ.×.Ñ.Ü×%Ò% gÓ.×.Ò.øô 	×"Ò" ;Ô/ð +Ø&ñ
ˆô ×%Ò% gÓ.×.Ñ.Ü×%Ò% gÓ.×.Ò.üs  ‚N:–K—B!N:Â8KÂ9B!N:ÅKÅN:Å8KÅ9N:Å>K& ÆKÆA)K& Ç<KÇ=K& ÈKÈA(K& ÊK Ê#K& Ê'K"Ê(K& ËK$ËK& ËN:ËN:ËN:ËN:ËK& ËK& ËK& Ë K& Ë"K& Ë$K& Ë&K?Ë<M Ë>K?Ë?M Ì4N:Ì6L9Ì7N:ÍMÍN:Í5N7ÎNÎN7Î0N3Î1N7Î7N:N)Ú
sqlalchemyr   Úapp.core.databaser   Úapp.models.clientr   Úapp.models.visitorr   Úapp.models.messager   Úapp.services.chatr   Úsqlalchemy.ext.asyncior	   Úapp.ws.connection_managerr
   r   r   Úfastapir   r   r   r   Úrouterr   ÚstrrC   © ó    rB   Ú<module>rQ      su   ðõ Ý $Ý $Ý &Ý &Ý )Ý /ß RÑ Rß FÓ Fá	‹€à×ÑÐ-Ó.ñ ˜v“ñb/Øðb/àðb/ð 	ôb/ó /ñb/rP   