
    Ji;?              
       T   d dl mZmZ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 d dlmZ d dlmZmZmZmZ d d	lmZ d d
lmZ  eddg      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z ejC                  de	e          ee      fdefd       Z"ejC                  de	e          ee      fde#defd        Z$ejK                  d!       ee       ee      fd"ed#edefd$       Z&ejC                  d%e	e          ee       ee      fd#edefd&       Z'ejC                  d'e	e          ee       ee      fd#edefd(       Z(ejS                  d)       ee       ee      fd*e*d#edefd+       Z+ejS                  d,       ee       ee      fd*e*d"e d#edefd-       Z,ej[                  d%       ee       ee      fd#edefd.       Z.ejK                  d/       ee       ee      fd"ed#edefd0       Z/y1)2    )	APIRouterDependsHTTPException)Session)and_)ListDictAny)datetime)	BaseModel)get_db)UserIndustryTemplateUserIndustryTemplateTemplate)get_current_user)INDUSTRY_TEMPLATES_DATAz/industry-templateszindustry-templates)prefixtagsc                   :    e Zd ZU dZeed<   eed<   eed<   eed<   y)IndustryInfou,   Информация об индустрииindustrynamedescriptiontemplates_countN)__name__
__module____qualname____doc__str__annotations__int     4/var/www/notifications/app/api/industry_templates.pyr   r      s    6M
Ir$   r   c                       e Zd ZU dZeed<   eed<   eed<   eed<   edz  ed<   eed<   eed	<   eeef   ed
<   ee   ed<   ee   ed<   e	ed<   e	ed<    G d d      Z
y)IndustryTemplateOutu!   Отраслевой шаблонidr   keyr   Nr   trigger_typedelay_hourscontent	variableschannelsis_active_by_defaultis_editablec                       e Zd ZdZy)IndustryTemplateOut.ConfigTNr   r   r   from_attributesr#   r$   r%   Configr2   (       r$   r5   )r   r   r   r   r"   r!   r    r	   r   boolr5   r#   r$   r%   r'   r'      sg    +GM	H
It#s(^Cy3i r$   r'   c                       e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   ee   ed<   e	eef   d	z  ed
<    G d d      Z
y	)UserTemplateOutu-   Пользовательский шаблонr(   industry_template_idtemplate_namer*   r+   	is_activer.   Ncustom_contentc                       e Zd ZdZy)UserTemplateOut.ConfigTNr3   r#   r$   r%   r5   r?   7   r6   r$   r5   )r   r   r   r   r"   r!   r    r7   r   r	   r5   r#   r$   r%   r9   r9   ,   sN    7GO3icNT)) r$   r9   c                       e Zd ZU dZeed<   y)InstallPackageRequestu1   Запрос на установку пакетаr   N)r   r   r   r   r    r!   r#   r$   r%   rA   rA   ;   s
    ;Mr$   rA   c                   l    e Zd ZU dZeed<   eed<   dZeed<   eeef   ed<   e	e   ed<   dZ
edz  ed	<   y)
CreateCustomTemplateRequestuF   Запрос на создание кастомного шаблонаr   r*   r   r+   r,   r.   Nr   )r   r   r   r   r    r!   r+   r"   r	   r   r   r#   r$   r%   rC   rC   @   s@    P
IK#s(^3i"Kt"r$   rC   c                   r    e Zd ZU dZdZedz  ed<   dZeeef   dz  ed<   dZ	e
dz  ed<   dZee   dz  ed<   y)UpdateTemplateRequestu5   Запрос на обновление шаблонаNcustom_namer=   custom_delay_hoursr.   )r   r   r   r   rF   r    r!   r=   r	   rG   r"   r.   r   r#   r$   r%   rE   rE   J   sL    ?"Kt",0NDcNT)0%)d
)!%Hd3i$%r$   rE   z/industries)response_modeldbc           
          dddddddddd	ddd
dddddddd}g }|j                         D ],  \  }}|j                  t        ||d   |d   |d                . |S )uC   Получить список доступных индустрийu   🏥 Медицинаur   Напоминания о приёме, уведомления о переносе, спасибо за визит   )r   r   r   u    💇 Салоны красотыuh   Подтверждение записи, напоминания, программы лояльности   u   🚗 Автосервисu[   Заказ готов, напоминание о ТО, отзывы после визитаu   🍕 Доставка едыuQ   Принят заказ, курьер в пути, спасибо за заказu   🎓 Онлайн-школаu]   Напоминание о занятии, ссылка на Zoom, обратная связь)medicinebeautyautoservicedelivery	educationr   r   r   )r   r   r   r   )itemsappendr   )rI   industry_map
industriesindustry_keyinfos        r%   list_industriesrX   T   s     , P 
 7 F 
 0x 
 3n 
 3z 
+L: J*002 d,!f]+ !23	
 	 r$   z /industries/{industry}/templatesr   c                     |j                  t              j                  t        j                  | k(        j	                         }|st        dd|  d      |S )u9   Получить шаблоны для индустрии  *   Шаблоны для индустрии '   ' не найденыstatus_codedetail)queryr   filterr   allr   )r   rI   	templatess      r%   get_industry_templatesrd      sd     )*11!!X-	ce  6`ai`jj  5A  B  	Br$   z/install-packagerequestcurrent_userc                    |j                  t              j                  t        j                  |j                  k(        j	                         }|rh|j                  t
              j                  t
        j                  |j                  k(        j	                         }t        dd|j                   d      |j                  t
              j                  t
        j                  | j                  k(        j                         }|st        D cg c]  }|d   | j                  k(  s| }}|st        dd| j                   d      |D ]g  }|j                  t
              j                  t
        j                  |d	   k(        j	                         }|rLt        di |}	|j                  |	       i |j                          |j                  t
              j                  t
        j                  | j                  k(        j                         }g }
|D ]  }t        |j                  |j                   |j                   d
|j                   |j"                  j%                  d      xs |j"                  j%                  dd      |j&                  |j(                  dd      }	|j                  |	       |j+                          t        |j                  |j                  |	j                  |j,                  |j(                        }|j                  |       |
j/                  |        |j                          ddt1        |
       d| j                   dt1        |
      | j                  dS c c}w )u   
    Установить пакет шаблонов для выбранной индустрии.
    Создаёт копии шаблонов для текущего пользователя.
      uL   У вас уже установлен пакет для индустрии 'uI   '. Сначала удалите существующие шаблоны.r]   r   rZ   r[   r\   r)   -telegramemail Fprimaryfailover	tenant_idr   slugr,   r-   channel_strategy)rq   r:   template_idr<   r.   Tu   Установлено u-    шаблонов для индустрии '')successmessager   r   r#   )r`   r   ra   rq   firstr   r(   r:   r   r   rb   r   r)   addcommitr   r   r,   getr-   r.   flushr/   rS   len)re   rf   rI   existingexisting_templateindustry_templatesttemplates_to_loadtemplate_datatemplateuser_templatesind_templateuser_templates                r%   install_packager      s;    xx,-44&&,*@*@@eg  HH%56==8#@#@@

%' 	 absb|b|a}  ~G  H
 	
 "23::!!W%5%55	ce 
 (?e11Z=T[TdTdCdQee CGDTDTCUUjk  / 	!Mxx 0188 $$e(<<eg  +<m<x 	! 			  XX&67>>%%)9)99

#% 	
 N* -",,"" **+1\-=-=,>? ((,,Z8aL<P<P<T<TU\^`<a",,'00!

 	x

 -",,!- "77!**
 	}m,3-6 IIK ,S-@,AAnovoo  oA  AB  C~.$$	 s fs   M4(M4z/my-templatesc                    |j                  t              j                  t        j                  | j                  k(        j	                         }g }|D ]  }|j                  t
              j                  t
        j                  |j                  k(        j                         }|sS|j                  t        |j                  |j                  |j                  xs |j                  |j                  |j                  xs |j                  |j                   |j"                  xs |j"                  |j$                                |S )uA   Получить мои установленные шаблоны)r(   r:   r;   r*   r+   r<   r.   r=   )r`   r   ra   rq   rb   r   r(   r:   rx   rS   r9   rF   r   r*   rG   r+   r<   r.   r=   )rf   rI   r   resultutr   s         r%   get_my_templatesr      s
    XX23::&&,*@*@@	ce  F xx 01882#:#::

%' 	 MM/55%'%<%< nnA0A0A)6611M\5M5M,,=(=(=!00	 	" Mr$   z
/availablec                     |j                  t              j                  t        j                  j	                  d            j                         }|S )u   Получить все доступные готовые шаблоны индустрии для создания триггеровN)r`   r   ra   r*   isnotrb   )rf   rI   r   s      r%   get_available_templatesr     sD     "23::%%++D1	ce  r$   z"/my-templates/{template_id}/togglert   c                    |j                  t              j                  t        t        j                  | k(  t        j
                  |j
                  k(              j                         }|st        dd      |j                   |_        t        j                         |_        |j                          d|j                  dS )u0   Включить/выключить шаблонrZ      Шаблон не найденr]   T)rv   r<   )r`   r   ra   r   r(   rq   rx   r   r<   r   utcnow
updated_atrz   )rt   rf   rI   r   s       r%   toggle_templater   %  s     HH1299 ##{2 **l.D.DD	

 eg  4TUU"/"9"99M'0MIIK ",, r$   z/my-templates/{template_id}c                 4   |j                  t              j                  t        t        j                  | k(  t        j
                  |j
                  k(              j                         }|st        dd      |j                  |j                  |_        |j                  |j                  |_	        |j                  |j                  |_
        |j                  |j                  |_        t        j                         |_        |j                          dddS )u>   Обновить пользовательский шаблонrZ   r   r]   Tu   Шаблон обновлён)rv   rw   )r`   r   ra   r   r(   rq   rx   r   rF   r=   rG   r.   r   r   r   rz   )rt   re   rf   rI   r   s        r%   update_templater   @  s     HH1299 ##{2 **l.D.DD	

 eg  4TUU &$+$7$7!)'.'='=$!!-+2+E+E(#!(!1!1'0MIIK 2 r$   c                     |j                  t              j                  t        j                  | j                  k(        j	                         }|j                          d|dS )u+   Удалить все мои шаблоныT)rv   deleted_count)r`   r   ra   rq   deleterz   )rf   rI   deleteds      r%   delete_all_templatesr   e  sY     hh+,33&&,*@*@@fh  IIK   r$   z/my-templates/customc                    |j                  t              j                  t        j                  |j                  k(        j	                         }|st        dd      |j                  t              j                  t        j                  |j                  k(        j	                         }|st        dd      t        |j                  d|j                   dt        | j                         | j                  | j                  | j                  | j                  | j                  t!        t#        | j                  j%                         D cg c]A  }|j'                  d      dd	 D ](  }d|v r"|j)                  dd
      j)                  dd
      * C c}}            | j*                  dd      }|j-                  |       |j/                          t1        |j                  | j                  |j                   dt        | j                         | j                  j3                  d      xs | j                  j3                  dd
      |j4                  | j*                  dd      }|j-                  |       |j/                          t        |j                  |j                  |j                  d| j*                  d      }	|j-                  |	       |j7                          dd| j                   d|	j                  dS c c}}w )uW   Создать кастомный шаблон для текущей индустрииrh   uY   Сначала установите пакет шаблонов для индустрииr]   u&   Индустрия не найденаzcustom-ri   z{{   Nrl   z}}T)r   r)   r   r   r*   r+   r,   r-   r.   r/   r0   z-custom-rj   rk   Frm   rp   )rq   r:   rt   r<   r.   	is_customu!   Кастомный шаблон 'u   ' создан)rv   rw   rt   )r`   r   ra   rq   rx   r   r   r(   r:   r   r}   r   r   r*   r+   r,   listsetvaluessplitreplacer.   ry   r|   r   r{   r-   rz   )
re   rf   rI   r~   r   r,   varcustom_industry_templater   r   s
             r%   create_custom_templater   w  s    xx,-44&&,*@*@@eg  n
 	
 !1299x<<<eg  4\]]  0"++l,,-Qs7<</@.AB\\''))''s"??113
}}T*12.
 $'/ KKb!))$3
3
  
 !!! " FF#$HHJ ((\\&&'xGLL0A/BC##J/S7??3F3FwPR3S*44''

H FF8HHJ )((588KK!!M FF=IIK 6w||nNS$'' O
s   AK> N)0fastapir   r   r   sqlalchemy.ormr   
sqlalchemyr   typingr   r	   r
   r   pydanticr   app.db.sessionr   app.db.modelsr   r   r   r   app.api.depsr   !app.seeds.load_industry_templatesr   routerr   r'   r9   rA   rC   rE   r{   rX   r    rd   postr   r   r   putr"   r   r   r   r   r   r#   r$   r%   <module>r      s   5 5 "  " "   ! P P ) E	/7K6L	M9 ) &i I 
#) #&I & M$|*<=&/,, >,^ .tDW?XY &/ Z   !!12&/`"`` 	` !`F OD,AB !12&/ C< L.A)BC !12&/


 D
 01 !!12&/ 	 24 )* !!12&/	!!"! ! 		! +!H  !12&/  " #$ !!12&/N(NN 	N %Nr$   