
    ;yi                     L    S SK J r   S SKJr  S SKJr  S SKJrJr   " S S5      rg)    )datetime)Session)
AuditModel)AnyOptionalc            	       x    \ rS rSrS\4S jrSS\S\\   S\4S jjr	SS\\   S	\S
\S\
4S jjrS\S\4S jrSrg)
AuditClass   dbc                     Xl         g Nr   )selfr   s     QC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\classes\audit_class.py__init__AuditClass.__init__   s        Nuser_idrol_idreturnc           	          [        UU[        R                  " 5       [        R                  " 5       S9nU R                  R	                  U5        U R                  R                  5         U R                  R                  U5        SSUR                  UR                  UR                  UR                  (       a  UR                  R                  S5      OSUR                  (       a  UR                  R                  S5      OSS.S.$ ! [         a4  nU R                  R                  5         [        U5      nSUS	.s SnA$ SnAff = f)
u/   
Crea un nuevo registro de auditoría (login).
)r   r   
added_dateupdated_datesuccessu*   Registro de auditoría creado exitosamente%Y-%m-%d %H:%M:%SNidr   r   r   r   )statusmessage
audit_dataerrorr   r   )r   r   utcnowr   addcommitrefreshr   r   r   r   strftimer   	Exceptionrollbackstr)r   r   r   	new_auditeerror_messages         r   storeAuditClass.store
   s   	A"#??,%__.	I GGKK	"GGNNGGOOI& $G#,,(00'..XaXlXl)"6"6"?"?@S"Trv\e\r\rI$:$:$C$CDW$Xx|
 
  	AGGFM%-@@	As   DD 
E)D?9E?Epageitems_per_pagec           
          / nUb"  UR                  [        R                  U:H  5        U R                  R	                  [        5      R
                  " U6 R                  [        R                  R                  5       5      nUS:  Ga	  UR                  5       nXc-   S-
  U-  nUS:  d  US:  a
  X':  a  SSS.$ UR                  US-
  U-  5      R                  U5      R                  5       nU(       d  SSUU/ S.$ U V	s/ s H  n	U	R                  U	R                  U	R                  U	R                  (       a  U	R                  R                  S5      OSU	R                   (       a  U	R                   R                  S5      OSS	.PM     n
n	UUUUU
S.$ UR                  5       nU V	s/ s H  n	U	R                  U	R                  U	R                  U	R                  (       a  U	R                  R                  S5      OSU	R                   (       a  U	R                   R                  S5      OSS	.PM     n
n	U
$ s  sn	f s  sn	f ! ["         a  n[%        U5      nSUS.s SnA$ SnAff = f)
uQ   
Obtiene todos los registros de auditoría, opcionalmente filtrados por user_id.
Nr      r!   zInvalid page numberr"   )total_itemstotal_pagescurrent_pager1   datar   r   )appendr   r   r   queryfilterorder_byr   desccountoffsetlimitallr   r   r'   r   r(   r*   )r   r   r0   r1   filtersr9   r4   r5   r7   auditserialized_datar,   r-   s                r   get_allAuditClass.get_all*   sF   7	AG"z11W<=GGMM*-44g>GG
H]H]HbHbHdeEax#kkm*;a?NR!8aD4F&-:OPP||TAX$?@FF~VZZ\'('((,*8 "   $#%  $e  (($}}#llTYTdTd%"2"2";";<O"PjnX]XjXjE$6$6$?$?@S$Tpt$  $   #% $/#.$(&4+  yy{  $#%  $e  (($}}#llTYTdTd%"2"2";";<O"PjnX]XjXjE$6$6$?$?@S$Tpt$  $   #% '&5#%$#%  	AFM%-@@	AsQ   B4H: 7AH: :H: >BH0	H: H: $BH5,H: 0
H: :
IIIIaudit_idc                     U R                   R                  [        5      R                  [        R                  U:H  5      R                  5       nU(       a  SUR                  UR                  UR                  UR                  (       a  UR                  R                  S5      OSUR                  (       a  UR                  R                  S5      OSS.S.$ SSS.$ ! [         a  n[        U5      nSUS.s SnA$ SnAff = f)	u.   
Obtiene un registro de auditoría por su ID.
r   r   Nr   )r   r    r!   uD   No se encontraron datos para el registro de auditoría especificado.r"   )r   r9   r   r:   r   firstr   r   r   r'   r   r(   r*   )r   rF   rB   r,   r-   s        r   getAuditClass.getg   s    	AGGMM*-44Z]]h5NOUUWE'#hh#(=="',,X]XhXhe&6&6&?&?@S&Tnr\a\n\n(:(:(C(CDW(Xtx#	 	 #*6|}} 	AFM%-@@	As$   CC C 
D &C;5D ;D r   r   )Nr   
   )__name__
__module____qualname____firstlineno__r   r   intr   dictr.   r   rD   rI   __static_attributes__ r   r   r	   r	      st    7 AS A(3- A4 A@;Ax} ;A3 ;ATW ;Aad ;AzAC AD Ar   r	   N)	r   sqlalchemy.ormr   app.backend.db.modelsr   typingr   r   r	   rS   r   r   <module>rW      s     " ,  xA xAr   