
    D&i                        d dl mZ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 d dlmZmZ d dlmZmZmZ d dlmZmZmZmZ d d	lmZ  ed
dg      Z G d de
      Zej;                  dee         d        Zej?                  de       ee      fdedefd       Z de!de"defdZ#ej?                  de       ee      fdedefd       Z$ej;                  d       ee      fdefd       Z%y)    )	APIRouterDependsHTTPExceptionstatus)Session)List)	BaseModel)get_db)UserTenant)verify_passwordget_password_hashcreate_access_token)	UserLoginUserRegisterTokenTokenWithUser)get_current_userz/authauth)prefixtagsc                   6    e Zd ZU eed<   eed<   eed<   eed<   y)IndustryOptionidnamedescriptioniconN)__name__
__module____qualname__str__annotations__     &/var/www/notifications/app/api/auth.pyr   r      s    G
I
Ir$   r   z/industries)response_modelc                  j    ddddddddd	dd
ddddddddddddddddddddddddddd d!dg} | S )"u_   Получить список доступных отраслей для регистрацииmedicineu   Медицинаu@   Клиники, стоматология, ветеринарияu   🏥)r   r   r   r   beautyu"   Красота и здоровьеu.   Салоны красоты, SPA, фитнесu   💄autoserviceu   Автосервисu0   СТО, автомойки, автосалоныu   🚗deliveryu   Доставкаu5   Курьерские службы, рестораныu   🚚	educationu   Образованиеu9   Онлайн-школы, курсы, репетиторыu   📚retailu   Ритейлu3   Магазины, интернет-магазиныu   🛍️servicesu   Услугиu4   Консультации, ремонт, уборкаu   🔧otheru   Другоеu0   Другая сфера деятельностиu   📋r#   )
industriess    r%   get_industriesr1      s    
 &]		
 8K		
  *M		
 &R		
 ,V		
 "P		
 "Q		
 "M		
W1Jf r$   z	/registerdatadbc                 (   |j                  t              j                  t        j                  | j                  k(        j	                         }|rt        t        j                  d      t        | j                  | j                  d      }|j                  |       |j                          t        |j                  | j                  t        | j                        d      }|j                  |       |j!                          |j#                  |       t%        |j                  | j                  |       t'        |j                  |j                  d      }t)        ||j                  |j                  |j*                  |j,                  d	
      S )NzEmail already registeredstatus_codedetailactive)r   industryr   user)	tenant_idemailpassword_hashrolesubr;   r2   r   r<   r>   r;   access_tokenr:   )queryr   filterr<   firstr   r   HTTP_400_BAD_REQUESTr   tenant_namer9   addflushr   r   passwordcommitrefreshinstall_industry_templatesr   r   r>   r;   )r2   r3   existing_usertenantr:   rD   s         r%   registerrR   N   s'    HHTN))$**

*BCIIKM33-
 	
 ))DMM(SFFF6NHHJ ))jj'6	D FF4LIIKJJt vyy$--< 'DGG&)),TUL!''ZZII	
 r$   r;   r9   c                    ddl m}m} |j                  |      j	                  |j
                  |k(        j                         }|D ]4  } || |j                  d|j                  d      }|j                  |       6 |j                          y)uj   Установить готовые шаблоны для индустрии при регистрацииr   )IndustryTemplateUserIndustryTemplateTF)r;   industry_template_id	is_activechannels	is_customN)app.db.modelsrT   rU   rE   rF   r9   allr   rX   rJ   rM   )r;   r9   r3   rT   rU   	templatestemplateuser_templates           r%   rO   rO   x   s    D )*11!!X-	ce 
  ,!)&&
 	} IIKr$   z/loginc                    |j                  t              j                  t        j                  | j                  k(        j	                         }|r t        | j                  |j                        st        t        j                  d      t        |j                  |j                  d      }t        ||j                  |j                  |j                  |j                  d      S )Nu*   Неверный email или парольr5   r?   rA   rB   rC   )rE   r   rF   r<   rG   r   rL   r=   r   r   HTTP_401_UNAUTHORIZEDr   r   r;   r   r>   )r2   r3   r:   rD   s       r%   loginra      s    88D>  tzz!9:@@BDt}}d6H6HI44?
 	

 'DGG$..,YZL!''ZZII	
 r$   z/mecurrent_userc                 `    | j                   | j                  | j                  | j                  dS )uP   Получить информацию о текущем пользователеrB   rB   )rb   s    r%   get_current_user_inford      s0     oo##!!!++	 r$   N)&fastapir   r   r   r   sqlalchemy.ormr   typingr   pydanticr	   app.db.sessionr
   rZ   r   r   app.core.securityr   r   r   app.api.schemasr   r   r   r   app.api.depsr   routerr   getr1   postrR   intr!   rO   ra   rd   r#   r$   r%   <module>rq      s   = = "   ! & U U I I )	'	1Y  M$~*>?5 @5p [7/6v &< &W & 8&R#  ' . Xm4)0 	 w  5( E/67G/H   r$   