
    Wzi                     L    d dl m Z  d dlmZ d dlmZ d dlmZmZ  G d d      Zy)    )datetime)Session)
AuditModel)AnyOptionalc            	       d    e Zd ZdefdZddedee   defdZddee   ded	ede	fd
Z
dedefdZy)
AuditClassdbc                     || _         y N)r
   )selfr
   s     H/var/www/pie360backend.cl/public_html/app/backend/classes/audit_class.py__init__zAuditClass.__init__   s	        Nuser_idrol_idreturnc           	      z   	 t        ||t        j                         t        j                               }| j                  j	                  |       | j                  j                          | j                  j                  |       dd|j                  |j                  |j                  |j                  r|j                  j                  d      nd|j                  r|j                  j                  d      ndddS # t        $ r4}| j                  j                          t        |      }d|d	cY d}~S d}~ww xY w)
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   storez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   C:C= =	D:)D5/D:5D:pageitems_per_pagec           
      z   	 g }|"|j                  t        j                  |k(          | j                  j	                  t              j
                  | j                  t        j                  j                               }|dkD  r|j                         }||z   dz
  |z  }|dk  s
|dkD  r
||kD  rdddS |j                  |dz
  |z        j                  |      j                         }|sdd||g dS |D 	cg c]v  }	|	j                  |	j                  |	j                  |	j                  r|	j                  j                  d      nd|	j                   r|	j                   j                  d      ndd	x }
}	|||||
dS |j                         }|D 	cg c]v  }	|	j                  |	j                  |	j                  |	j                  r|	j                  j                  d      nd|	j                   r|	j                   j                  d      ndd	x }
}	|
S c c}	w c c}	w # t"        $ r}t%        |      }d|dcY d}~S d}~ww xY w)
ua   
        Obtiene todos los registros de auditoría, opcionalmente filtrados por user_id.
        Nr      r   zInvalid page numberr   )total_itemstotal_pagescurrent_pager-   datar   r   )appendr   r   r
   queryfilterorder_byr   desccountoffsetlimitallr   r   r$   r   r%   r'   )r   r   r,   r-   filtersr5   r0   r1   r3   auditserialized_datar)   r*   s                r   get_allzAuditClass.get_all*   sB   7	AG"z11W<=4DGGMM*-44g>GG
H]H]HbHbHdeEax#kkm*^;a?NR!8aD;4F&-:OPP||TAX$?@FF~VZZ\'('((,*8 "   $#%   (($}}#llTYTdTd%"2"2";";<O"PjnX]XjXjE$6$6$?$?@S$Tpt$ #% #% $/#.$(&4+  yy{  $#%   (($}}#llTYTdTd%"2"2";";<O"PjnX]XjXjE$6$6$?$?@S$Tpt$ #% #% '&5#%$#%  	AFM%-@@	AsP   B0H 3=H 1H 5A;H0	H :H A;H	H 
H 	H: H5/H:5H:audit_idc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|rwd|j                  |j                  |j                  |j                  r|j                  j                  d      nd|j                  r|j                  j                  d      ndddS dddS # t        $ r}t        |      }d|dcY d}~S d}~ww xY w)	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
   r5   r   r6   r   firstr   r   r   r$   r   r%   r'   )r   rA   r>   r)   r*   s        r   getz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 	C0C+%C0+C0r   )Nr   
   )__name__
__module____qualname__r   r   intr   dictr+   r   r@   rD    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	   rK   r   r   <module>rO      s     " ,  xA xAr   