
    HŴi                     b    d Z ddlmZ ddlmZmZ ddlmZ ddlmZ dee   fdZ	 G d d	      Z
y
)z CRUD para tabla document_alerts.    )datetime)OptionalAny)Session)DocumentAlertModelreturnc                    | y t        | t              r| S t        | t              r| j                         r|| j                         }	 t	        |      dk\  rt        j
                  |d d d      S 	 	 t	        |      dk\  rt        j
                  |d d d      S 	 	 t        j
                  |d d d      S y # t        $ r Y Ow xY w# t        $ r Y 5w xY w# t        $ r Y y w xY w)N   z%Y-%m-%dT%H:%M:%Sz%Y-%m-%d %H:%M:%S
   z%Y-%m-%d)
isinstancer   strstriplenstrptime
ValueError)vss     Q/var/www/pie360backend.cl/public_html/app/backend/classes/document_alert_class.py_parse_datetimer   
   s    y!X!SaggiGGI	1v|((3B1DEE 	1v|((3B1DEE 	$$QsVZ88   		
  		  		s6   &B3 0&C C 3	B?>B?	CC	CCc                       e Zd ZdefdZ	 	 	 	 ddee   dee   dee   dedef
d	Z	d
edefdZ
dedefdZd
ededefdZdd
ededefdZy)DocumentAlertClassdbc                     || _         y )N)r   )selfr   s     r   __init__zDocumentAlertClass.__init__#   s	        N
student_idprofessional_iddocument_idinclude_deletedr   c                 P   	 | j                   j                  t              }|"|j                  t        j                  |k(        }|"|j                  t        j
                  |k(        }|"|j                  t        j                  |k(        }|s.|j                  t        j                  j                  d            }|j                  t        j                  j                               }|j                         }|D cg c]  }|j                  |j                  |j
                  |j                  |j                  r|j                  j                         nd|j                  r|j                  j                         nd|j                   r|j                   j                         nd|j"                  r|j"                  j                         nd|j                  r|j                  j                         ndd	 }}d|dS c c}w # t$        $ r}	dt'        |	      g dcY d}	~	S d}	~	ww xY w)zULista registros filtrados. Por defecto excluye eliminados (deleted_date IS NOT NULL).N	idr   r   r   must_be_finish_datedocument_uploaded_date
added_dateupdated_datedeleted_datesuccessstatusdataerrorr+   messager,   )r   queryr   filterr   r   r   r(   is_order_byr#   descallr$   	isoformatr%   r&   r'   	Exceptionr   )
r   r   r   r   r    qrowsrr,   es
             r   getzDocumentAlertClass.get&   s   	F01A%HH/::jHI*HH/???RS&HH/;;{JK"HH/<<@@FG

-005578A557D   $$"#,,'('8'8#$==PQPePe1+@+@+J+J+LkoVWVnVna.F.F.P.P.Rtx>?ll!,,"8"8":PTBC..ANN$<$<$>VZBC..ANN$<$<$>VZ
D  (66  	F%#a&"EE	Fs1   C<H >C9G>7H >H 	H%H H% H%r#   c           
         	 | j                   j                  t              j                  t        j                  |k(        j                         }|sddddS |j                  |j                  |j                  |j                  |j                  r|j                  j                         nd|j                  r|j                  j                         nd|j                  r|j                  j                         nd|j                  r|j                  j                         nd|j                  r|j                  j                         ndd	}d|dS # t        $ r}dt!        |      ddcY d}~S d}~ww xY w)zObtiene un registro por id.r-   Registro no encontrado.Nr.   r"   r)   r*   )r   r0   r   r1   r#   firstr   r   r   r$   r6   r%   r&   r'   r(   r7   r   )r   r#   rowr,   r;   s        r   	get_by_idzDocumentAlertClass.get_by_idL   s0   	H''-- 23::;M;P;PTV;VW]]_C")6OY]^^ff!nn#&#6#6"NQNeNes'>'>'H'H'JkoTWTnTn#*D*D*N*N*Ptx<?NNcnn668PT@C@P@P 0 0 : : <VZ@C@P@P 0 0 : : <VZ
D (66 	H%#a&$GG	Hs%   AE C6E 	E0E+%E0+E0r,   c           
      D   	 t        |j                  d            }t        |j                  d            }t        |d   |d   |d   ||t        j                         t        j                         d      }| j
                  j                  |       | j
                  j                          | j
                  j                  |       dd	|j                  d
|j                  idS # t        $ r3}| j
                  j                          dt        |      ddcY d}~S d}~ww xY w)z$Crea un registro en document_alerts.r$   r%   r   r   r   N)r   r   r   r$   r%   r&   r'   r(   r)   zRegistro creado.r#   )r+   r/   r#   r,   r-   r.   )r   r<   r   r   utcnowr   addcommitrefreshr#   r7   rollbackr   )r   r,   must_beuploadedr@   r;   s         r   storezDocumentAlertClass.storea   s    	H%dhh/D&EFG&txx0H'IJH$- $%6 7 /$+'/#??,%__.!	C GGKKGGNNGGOOC '4Fcff_cehekek^lmm 	HGG%#a&$GG	Hs   C C# #	D,(DDDc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS |j                  d      
|d   |_        |j                  d      
|d   |_        |j                  d      
|d   |_	        d|v rt        |d         |_        d	|v rt        |d	         |_        t        j                         |_        | j                   j!                          | j                   j#                  |       d
d|j                  dS # t$        $ r2}| j                   j'                          dt)        |      dcY d}~S d}~ww xY w)zActualiza un registro por id.r-   r>   r+   r/   r   Nr   r   r$   r%   r)   zRegistro actualizado.)r+   r/   r#   )r   r0   r   r1   r#   r?   r<   r   r   r   r   r$   r%   r   rC   r'   rE   rF   r7   rG   r   )r   r#   r,   r@   r;   s        r   updatezDocumentAlertClass.updatex   sE   	:''-- 23::;M;P;PTV;VW]]_C")6OPPxx%1!%l!3xx)*6&*+<&=#xx&2"&}"5$,*9$?T:U*V''4/-<TBZ=[-\*'0CGGNNGGOOC '4KSVSYSYZZ 	:GG%#a&99	:s%   AD3 CD3 3	E.<'E)#E.)E.softc                 B   	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS |rQt        j                         |_        t        j                         |_	        | j                   j                          dddS | j                   j                  |       | j                   j                          dddS # t        $ r2}| j                   j                          dt        |      dcY d}~S d}~ww xY w)z@Elimina por id. soft=True hace soft delete (deleted_date = now).r-   r>   rL   r)   zRegistro eliminado (soft).zRegistro eliminado.N)r   r0   r   r1   r#   r?   r   rC   r(   r'   rE   deleter7   rG   r   )r   r#   rN   r@   r;   s        r   rP   zDocumentAlertClass.delete   s    	:''-- 23::;M;P;PTV;VW]]_C")6OPP#+??#4 #+??#4  "+8TUUGGNN3GGNN'4IJJ 	:GG%#a&99	:s+   AC# AC# )9C# #	D,'DDD)NNNF)T)__name__
__module____qualname__r   r   r   intbooldictr<   rA   rJ   rM   rP    r   r   r   r   "   s    7 
 %))-%) %$FSM$F "#$F c]	$F
 $F 
$FLHC HD H*H$ H4 H.: :D :T :0: :D :D :r   r   N)__doc__r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   r   r   rW   r   r   <module>r\      s1    &    " 4(8, 0~: ~:r   