
    pi                     z   S SK JrJrJrJrJr  S SKJrJrJ	r	  S SK
Jr  S SKJr  S SK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Jr  \" 5       r\R?                  SS\S9S\" \5      4S\S\ S-  S\4S jj5       r!\RE                  SSS9\" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" \5      4S\S\ S\#S\#S\#S-  S\ S-  S\#S-  S\4S jj5       r$\RE                  SS S9\" S5      \" S5      \" S5      \" S5      \" \5      4S\S!\ S\#S-  S"\ S-  S\#S-  S\4S# jj5       r%g)$    )	APIRouterRequestFormDependsHTTPException)HTMLResponseRedirectResponseJSONResponse)Session)urlparse)ListOptional   )	templates)notification_crud)	auth_crud)reservation_crud)get_db)current_userrequire_csrf/notificacionesnotificaciones)nameresponse_classNrequestuser_iddbc                   #    [        U 5      nU(       d
  [        SSS9$ [        US   5      nS nUb   [        U5      nU(       a;  US   S;   a2  [        R
                  " X!5      nU(       a  [        UR                  5      n[        R                  " X$5      n/ nUS   S;   aO  U(       a%  [        R                  " U[        US   5      U5      nO#[        R                  " U[        US   5      5      n/ nUS   S;   a  [        R                  " U5      nUn	/ n
0 n/ nU(       a  SSKJn  UR                  U5      R                  UR                   U:H  5      R#                  UR$                  R'                  5       UR(                  R'                  5       5      R+                  5       nU Vs/ s H  n[,        R.                  " U5      PM     n
nU
nU
 Vs0 s H  n[        US   5      U_M     nn[0        R2                  " S	U UU(       a  [        R4                  " U5      OS UUUU	U
UUS
.
5      $ ! [         a    S n GNf = fs  snf s  snf 7f)N/login/  urlstatus_codeidroledocenteadminr   )Reservationznotificaciones.html)
r   user	view_usernotificationssent_notificationsstudentsnotifications_jsonappointmentsappointments_jsonappointments_map)r   r	   int	Exceptionr   get_user_by_idr$   
notif_crudget_notifications_for_user&get_notifications_sent_by_user_to_userget_notifications_sent_by_userget_all_studentsmodels.reservationr)   queryfilterr   order_bydateasctimeallres_crudreservation_to_dictr   TemplateResponseuser_to_dict)r   r   r   metarget_user_idr+   inboxsentr.   r/   r0   r2   r1   r)   reservationsras                    @/home/mario/Escritorio/thel4footbal/app/notificaciones/routes.pyr   r      s    	g	BH#>>D]NI	'lG 2f:!55!00=I!$Y\\!211"EED	&z))DDRRPTXXfgD<<RRXODH	&z))--b1L4xx,33>1

(;##'');+;+;+?+?+A
B335 	
 BNNA44Q7N(5AB\C$L!O\B%%>G//	:T""& "4(!2 0	
 G  	G	> OBsA   0IH' E'I% H:IH?&AI'H73I6H77Icreate_notification)r   .recipient_idtitlebodynext_urlreservation_idcsrfc           
      T  #    [        U 5      nU(       d
  [        SSS9$ US   S;  a
  [        SSS9e[        X5        U=(       d    S	R	                  5       nU=(       d    S	R	                  5       nU(       a  U(       d
  [        S
SS9e [        U5      nS n	Ubk  [        U5      R	                  5       S	:w  aN   [        U5      n	[        R                  " Xy5      n
U
(       d
  [        SSS9eU
R                  U:w  a
  [        S
SS9e [        R                  " UUUU[        US   5      U	S9  U(       a5  [        U5      nUR                  S	:X  a  UR                  S	:X  a
  [        USS9$ [        SSS9$ ! [         a    [        S
SS9ef = f! [         a    e [         a    [        S
SS9ef = f7f)Nr   r    r!   r%   r&   i  z3Solo docentes o admin pueden enviar notificaciones.)r#   detail i  u#   Título y mensaje son obligatorios.u   Destinatario inválido.i  zReserva no encontrada.z/La reserva no pertenece al alumno seleccionado.u   Reserva inválida.r$   )rP   rQ   rR   	sender_idrT   r   )r   r	   r   r   stripr3   r4   strrC   get_reservation_by_idr   r6   rO   r   schemenetloc)r   rP   rQ   rR   rS   rT   rU   r   rG   res_id_to_saveresparseds               rN   rO   rO   M   s     
g	BH#>>	&z--4ijj[b!EJBD4YZZO<( N!c.&9&?&?&AR&G	N 0N00DC#<TUU{{l*$=noo + ""
!bh-% (#==B6==B#6#cBB 1sCCA  O4MNNO  	 	NC8LMM	Ns8   BF(E. "F(6AF A,F(.FF(F%%F(z/notificaciones/eliminardelete_notificationnotification_idtarget_recipient_idc           	        #    [        U 5      nU(       d
  [        SSS9$ [        X5        [        U[        5      (       a  US   O[        USS5      n[        R                  " UU[        US   5      [        U5      U(       a  [        U5      OS S9nU(       d   U(       a5  [        U5      n	U	R                  S:X  a  U	R                  S:X  a
  [        USS9$ [        S	SS9$ 7f)
Nr   r    r!   r%   alumnor$   )rd   rX   r   )r   r	   r   
isinstancedictgetattrr6   rb   r3   r[   r   r]   r^   )
r   rc   rS   rd   rU   r   rG   r%   successra   s
             rN   rb   rb      s      
g	BH#>>#B--2f:72vx3PD,,
BtHD	8KC 34QUG 	(#==B6==B#6#cBB 1sCCs   CC)&fastapir   r   r   r   r   fastapi.responsesr   r	   r
   sqlalchemy.ormr   urllib.parser   typingr   r   databaser   modelsr   r6   r   r   rC   models.baser   	auth.depsr   r   routergetr3   r   postr[   rO   rb        rN   <module>ry      s   D D J J " ! !   4  1   2	$4\RAEU\]cUd :' :C$J :7 : S:x %:; S	cS	:!%dDz&/6D6D6D 6D 	6D
 Dj6D $J6D *6D 	6D <6Dp '.CD  9:&*4jDz&/DDD DjD t	D
 *D 	D EDrx   