
    o!*i4                        S SK JrJrJr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  S S	KJr  S S
KJr  S SKJrJrJr  S SKJr  S SKJr  S SKr\" SS/S9r \ RC                  S5      \" 5       \" \
5      4S\S\4S jj5       r"\ RC                  S5      \" \5      \" \
5      4S\#S\S\4S jj5       r$\ RC                  S5      \" 5       \" \
5      4S\S\4S jj5       r%g)    )	APIRouterDependsstatusHTTPException)JSONResponse)OAuth2PasswordRequestForm)get_db)Session)AuthenticationClass)RolClass)SchoolClass)	UserClass)get_current_active_user)ProfessionalModelProfessionalTeachingCourseModelSchoolModel)	timedelta)	UserLoginNz/authenticationsAuthentications)prefixtagsz/login	form_datadbc                 >    [        U5      R                  U R                  U R                  5      nUS   R	                  S5      nU(       a  [        U5      R	                  U5      OS nSn[        U[        5      (       a1  SU;   a  US   R	                  SS5      nOSU;   a  [        SUS   5        [        U[        5      (       a8  UR	                  S5      (       a"  UR	                  S0 5      R	                  S/ 5      O/ nUS   R	                  S	5      nUS   R	                  S
5      nS n	U(       ab  US:w  a\  [        U5      R                  SUS9n
[        U
[        5      (       a.  [        U
5      S:  a  U
S   n	U	(       a  U	R	                  S5      OS nS nS nS nUS;  Gam  UR                  5       S:w  GaX  UR                  [        5      R!                  [        R"                  US   S   :H  5      R%                  5       nU(       Ga  UR                  [&        5      R!                  [&        R(                  UR*                  :H  [&        R,                  S:H  5      R%                  5       nU(       a  UR.                  nUR0                  nUR*                  UR(                  UR.                  UR0                  UR2                  (       a  UR2                  R5                  S5      OS UR6                  (       a  UR6                  R5                  S5      OS S.n[9        SS9n[;        US   S   5      UUUUUS.n[        U5      R=                  UU5      nUR?                  5       nUUS   S   US   S   Ub  UOSUUU	UUUUS   S   US   S   SUS.n[A        [B        RD                  SSUS.S9$ ! [F         a6  n[A        URH                  URH                  URJ                  S S.S9s S nA$ S nAf[L         a2  n[A        [B        RN                  SS [;        U5       3S S.S9s S nA$ S nAff = f)!N	user_datarol_id rol_datarolerrorzERROR AL OBTENER ROL:permissionscustomer_id	school_id   r   )pager"   id   r$   coordinadorrut%Y-%m-%d %H:%M:%Sr&   professional_idteaching_id	course_id
added_dateupdated_date minutessubr   r"   r#   r.   r/   	full_nameemailbeareraccess_tokenuser_idr*   r   r"   r#   schoolr   r!   professional_teaching_courser7   r8   
token_type
expires_in   zLogin successfulr   messagedatastatus_codecontent  Internal server error: )(r   authenticate_userusernamepasswordgetr   
isinstancedictprintr   get_alllistlenlowerqueryr   filteridentification_numberfirstr   r-   r&   deleted_status_idr.   r/   r0   strftimer1   r   strcreate_tokentotal_secondsr   r   HTTP_200_OKr   rF   detail	ExceptionHTTP_500_INTERNAL_SERVER_ERROR)r   r   useruser_rol_id
rol_resultrol_namer!   r"   r#   school_dataschools_listr>   ptc_teaching_idptc_course_idprofessionalptctoken_expires
token_datatokenexpires_in_secondsrD   es                         UC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\authentications.pyloginrr      s   r
"2&889K9KYM_M_`;'++H56AXb\%%k2t
 j$''Z'%j155eR@J&-z'/BC PZZdfjOkOkpzp~p~  @J  qK  qKjnnZ488K  QS ;'++M:%))+6	 ;!+&r?22{2SL,--#l2Ca2G*1o5@KOOD1d	 (,$f$)9])J88$56==!774;LU;SSeg  hh>?FF3CC|V3EEJ %' 
 &)ooO$'MMM!ff+.+>+>'*%(]]VYVdVdcnn&=&=>Q&RjnZ]ZjZj(8(8(A(ABU(Vpt40 "'2tK(/0!&"*&

 $B'44ZO*88: "K(.$U+%0%<k!&"!&,Hk*;7+&w/",
" **-
 	
  
--88
 	
  
==4SVH=
 	

s0   NN" "
P,+OPP*'PPPz/select-school/{school_id}r#   session_userc                 T	    [        U5      R                  SUR                  5      nU(       a  US:X  d  UR                  S5      (       a
  [	        SSS9e[
        R                  " U5      S   nUR                  S5      nUR                  S	5      nU(       a  [        U5      R                  U5      OS nS
n/ n	[        U[        5      (       a0  SU;   a*  US   R                  SS
5      nUS   R                  S/ 5      n	UR                  [        5      R                  [        R                  U :H  [        R                  U:H  [        R                  S:H  5      R!                  5       n
U
(       d  [#        [$        R&                  SSS S.S9$ U
R                  U
R                  U
R                  U
R(                  U
R*                  U
R,                  U
R.                  U
R0                  (       a  U
R0                  R3                  S5      OS U
R4                  (       a  U
R4                  R3                  S5      OS S.	nS nS nS nUS;  Gaj  UR7                  5       S:w  GaU  UR                  [8        5      R                  [8        R:                  US   :H  5      R!                  5       nU(       Ga  UR                  [<        5      R                  [<        R>                  UR                  :H  [<        R                  S:H  5      R!                  5       nU(       a  UR@                  nURB                  nUR                  UR>                  UR@                  URB                  UR0                  (       a  UR0                  R3                  S5      OS UR4                  (       a  UR4                  R3                  S5      OS S.n[E        SS9n[G        US   5      UUU UUS.n[I        U5      RK                  UU5      nURM                  5       nUUS   US   Ub  UOSUU UUU	UUS   US   SUS.n[#        [$        RN                  S S!US.S9$ ! [         a6  n[#        URP                  URP                  URR                  S S.S9s S nA$ S nAf[T         a2  n[#        [$        RV                  S"S#[G        U5       3S S.S9s S nA$ S nAff = f)$Nr*   z3No se encontraron datos para el campo especificado.zError:i  zUser not found)rF   r_   r   r   r"   r   r   r   r!   r   i  z4School not found or does not belong to your customerrB   rE   r+   )	r&   r"   rY   school_nameschool_addressdirector_namecommunity_school_passwordr0   r1   r'   r)   r,   r2   r3   r5   r&   r7   r8   r9   r:   rA   zSchool selected successfullyrH   rI   ),r   rM   r*   
startswithr   jsonloadsr   rN   rO   rU   r   rV   r&   r"   rY   rX   r   r   HTTP_404_NOT_FOUNDru   rv   rw   rx   r0   rZ   r1   rT   r   rW   r   r-   r.   r/   r   r[   r   r\   r]   r^   rF   r_   r`   ra   )r#   rs   r   
user_freshuser_data_freshrc   r"   rd   re   r!   rf   school_dictr>   rh   ri   rj   rk   rl   rm   rn   ro   rD   rp   s                          rq   select_schoolr      sY   H
r]&&ul.>.>?
Z+``dndydy  {C  eD  eDC8HII**Z0=%))(3%))-8 7BXb\%%k2t
j$''J*,D!*-11%<H$Z044]BGK hh{+22NNi'##{2))Q.
 %'	 	 "55!U   ..&22!,!>!>&22)88(66)4)N)NR]RhRh+0099:MNnrVaVnVnK44==>QRtx

 (,$f$)9])J88$56==!77?5;QQeg  hh>?FF3CC|V3EEJ %' 
 &)ooO$'MMM!ff+.+>+>'*%(]]VYVdVdcnn&=&=>Q&RjnZ]ZjZj(8(8(A(ABU(Vpt40 "'2u-.!&"*&

 $B'44ZO*88: "&t,"5)%0%<k!&"!&,H(5$W-",
" **9
 	
  
--88
 	
  
==4SVH=
 	

s7   FP- J'P- -
R'7+Q("R'(R'5'R"R'"R'z/logoutc           	      h    [        U5      R                  U R                  U R                  5      n[	        SS9n[        U5      R                  S[        UR                  5      0U5      nUUR                  UR                  UR                  UR                  SS.n[        [        R                  SSUS.S	9$ ! [         a6  n[        UR                  UR                  UR                   S S.S	9s S nA$ S nAf["         a2  n[        [        R$                  S
S[        U5       3S S.S	9s S nA$ S nAff = f)Nr2   r3   r6   r9   )r;   r*   
visual_rutr   nicknamer?   rA   zLogout successfulrB   rE   rH   rI   )r   rJ   rK   rL   r   r\   r[   r*   r   r   r   r   r   r^   r   rF   r_   r`   ra   )r   r   rb   access_token_expiresaccess_token_jwtrD   rp   s          rq   logoutr     s"   '
"2&889K9KYM_M_`(9.r2??DHH@VXlm -88//kk"
 **.
 	
  
--88
 	
  
==4SVH=
 	

s0   B4B7 7
D1+C2,D12D1?'D,&D1,D1)&fastapir   r   r   r   fastapi.responsesr   fastapi.securityr   app.backend.db.databaser	   sqlalchemy.ormr
   (app.backend.classes.authentication_classr   app.backend.classes.rol_classr    app.backend.classes.school_classr   app.backend.classes.user_classr   app.backend.auth.auth_userr   app.backend.db.modelsr   r   r   datetimer   app.backend.schemasr   rz   authenticationspostrr   intr   r        rq   <module>r      s   = = * 6 * " H 2 8 4 > a a  ) 
	
 h18'RX/ s
. s
 s
  s
j 23<CD[<\lstzl{ I
S I
	 I
bi I
 4I
V i 29)7SY? (
/ (
 (
 !(
r   