
    	hg                         d dl Z d dlmZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlZd dlmZ d dlmZ d dlmZ  G d	 d
e      Zy)    N)WebsocketConsumer)AsyncJsonWebsocketConsumer)ProductsProductCategoryProductSubCategorySKU)	Chat_Data)sync_to_async)apps)	Paginatorc                   >    e Zd Zd Zd Zd Zed        Zed        Zy)ChatConsumerc                   K   | j                          d {    | j                          d {   }| j                  t        j                  d|i             d {    |d   dk(  rJ|d   dk(  rBg }|d   D ]3  }|j                  t        |j                        |j                  d       5 ||d<   | j                  t        j                  |             d {   S 7 7 7 7 
w)	Nada	text_datastatusTrueoption_typeCustomoptions)uuidoption_name)	acceptget_welcome_messagesendjsondumpsappendstrr   r   )selfdataoption_listis       2E:\Akash\Saasvaap\Navya-Bakers\chatbot\consumer.pyconnectzChatConsumer.connect   s     kkm--// iiTZZ%?i@@@>V#M"h. iA&&AFFAMM'Z[ )"-Y YY4::d+;Y<<< 	/ 	A =sD   C)C!C)C#.C)C%A>C)C'C)#C)%C)'C)c                    K   y w)N )r!   s    r%   
disconnectzChatConsumer.disconnect   s	     s   c                   K   | j                   j                  d      t        j                  |      }|j                  dd      }|s0| j	                  t        j
                  ddig             d {    |j                  dd      }|j                  dd      }|j                  d	d      }| j                  ||||       d {   }| j	                  t        j
                  |             d {   S y 7 7 47 	w)
Nuser_id	option_id msgznot recongnizedr   chat_idoption_tableoption_column)scopegetr   loadsr   r   get_related_message)r!   r   r"   r,   r/   r0   r1   r.   s           r%   receivezChatConsumer.receive!   s     ::>>)$0::i(Db1Iii4::?P7Q6R+SiTTThhy"-G88NB7L HH_b9M00G\S`aaCTZZ_=== 1
 U
 b=s7   A0C=2C73AC=C9,C=1C;2C=9C=;C=c           
      .   t         j                  j                  d      j                         sdddS j                  dk(  r[dt        j                        j                  j                  j                  t        j                  j                               dS t        fd	t        j                         D              }|sdd
dS 	 |j                  j                         d d j                  dt        j                               }t#        |d      }|j%                  d      }g }|D ]L  }|j'                  dt        |d         t        j                         t        |j                            i       N dt        j                        t        j                        j                  t        j                        |t        j(                        t        j                         dS # t*        $ r}dt        |      dcY d }~S d }~ww xY w)NzWelcome Message)	chat_typeFalsezWelcome Message not definedr   messager   r   r   r/   	chat_namer8   r   r   c              3      K   | ]W  }|j                   j                  j                         j                  d       d   j                  j                         k(  r| Y yw_   N_metadb_tablelowersplitr0   .0modelr"   s     r%   	<genexpr>z3ChatConsumer.get_welcome_message.<locals>.<genexpr>8   S      #4%;;''--/55c:1=ARARAXAXAZZ #4   AA invalid table   r   rA   )r   r/   r=   r8   r   r   r0   r1   )r	   objectsfilterfirstr   r    r/   r=   r8   listr   allnextr   
get_modelsvaluesr1   r   get_pager   r0   	Exception)	r!   rI   rows	paginatorpage	data_listr$   er"   s	           @r%   r   z ChatConsumer.get_welcome_message/   sP     ''4E'FLLN%2OPPx'$DLL0At~~kokyky  IM  IY  IY  fj  ko  kw  kw  k{  k{  k}  f~     #'??#4 E
 !(_EE=}}((*2A.55fc$BTBT>UV%dA.	 ))!,	A$$fc!F)nc$BTBT>UWZ[\]a]o]o[pWq%rs  #)C4ETWX\XfXfTgtx  uC  uC  TW  X\  Xh  Xh  Ti  v  PS  TX  Te  Te  Pf  x{  |@  |N  |N  xO  P  P =!(SV<<=s   D#G3 3	H<H	HHc           
      z   t         j                  j                  |      j                         sdddS j                  dk(  r.dt        j                        j                  j                  dS j                  dk(  r[dt        j                        j                  j                  j                  t        j                  j                               d	S t        fd
t        j                         D              }|sdddS d}d}|j                  j!                         D ]j  }|j"                  dk(  rd}|j%                         dk(  s(|j&                  j                  j(                  j+                  d      d   |k(  s^|j"                  } n 	  |j                  j                  di ||ij-                  |j.                        }	t1        |	d      }
|
j3                  d      }g }|D ]L  }|j5                  dt        |d         t        j.                        t        |j.                           i       N t        j                        j                  j                  j                  |j6                  j.                  |
j8                  dS # t:        $ r}dt        |      dcY d }~S d }~ww xY w)N)related_chatr9   zRelated Chat not foundr:   zEnd Messager   )r   r/   r=   r8   r   r<   c              3      K   | ]W  }|j                   j                  j                         j                  d       d   j                  j                         k(  r| Y ywr?   rB   rG   s     r%   rJ   z3ChatConsumer.get_related_message.<locals>.<genexpr>Z   rK   rL   rM   r-   idr   
ForeignKeyr@   rA   rN   )r/   r=   r8   r   r   r0   r1   total_pagesr(   )r	   rO   rP   rQ   r8   r    r/   r=   r   rR   r   rS   rT   r   rU   rC   
get_fieldsnameget_internal_typerelated_modelrD   rF   rV   r1   r   rW   r   r0   	num_pagesrX   )r!   r,   r/   r0   r1   rI   foreign_columnflagwyrY   rZ   r[   r\   r$   r]   r"   s                  @r%   r5   z ChatConsumer.get_related_messageP   s     ''w'?EEG%2JKK>>]*$DLL0APTP^P^mqm{m{||x'$DLL0At~~kokyky  IM  IY  IY  fj  ko  kw  kw  k{  k{  k}  f~     #'??#4 E
 !(_EENDkk,,.77f$!D'')\9''--66<<SA!DT)+ /	=+u}}++J~y.IJQQRVX\XjXjk%dA.	 ))!,	A$$fc!F)nc$BTBT>UWZ[\]a]o]o[pWq%rs #&t||#44>>_c_m_m  ~B  ~N  ~N  [d  uy  uF  uF  X\  Xj  Xj  {D  {N  {N  O  O =!(SV<<=s   DJ 	J:"J5/J:5J:N)	__name__
__module____qualname__r&   r)   r6   r
   r   r5   r(       r%   r   r      s:     > = =@ &= &=ro   r   )r   channels.generic.websocketr   r   products.modelsr   r   r   r   chatbot.modelsr	   asyncioasgiref.syncr
   django.appsr   django.core.paginatorr   r   r(   ro   r%   <module>rw      s2     8 A N N $  &  +
i=- i=ro   