
    'Xi                     \    d dl m Z  d dlmZmZ d dlmZ d dlmZ dedefdZ	 G d d	      Z
y
)    )datetime)OptionalAny)Session)SubjectModelrreturnc                 8   | j                   | j                  | j                  | j                  r| j                  j	                         nd | j
                  r| j
                  j	                         nd | j                  r| j                  j	                         dS d dS )N)id	school_idsubject
added_dateupdated_datedeleted_date)r   r   r   r   	isoformatr   r   )r   s    J/var/www/pie360backend.cl/public_html/app/backend/classes/subject_class.py_row_to_dictr      sx    dd[[9923,,all,,.D67nn002$67nn002  KO     c                   t    e Zd ZdefdZdde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edefdZy)SubjectClassdbc                     || _         y N)r   )selfr   s     r   __init__zSubjectClass.__init__   s	    r   Nr   r	   c                    	 | j                   j                  t              j                  t        j                  j                  d            }|'|dk7  r"|j                  t        j                  |k(        }|j                         }d|D cg c]  }t        |       c}dS c c}w # t        $ r}dt        |      g dcY d}~S d}~ww xY w)zgLista registros activos (deleted_date is None). Filtro opcional por school_id (-1 o None = no filtrar).Nsuccessstatusdataerrorr    messager!   )r   queryr   filterr   is_r   allr   	Exceptionstr)r   r   qrowsr   es         r   getzSubjectClass.get   s    
	Fl+1155d;<  $bHH\33y@A557D'41Pa,q/1PQQ1P 	F%#a&"EE	Fs0   B	B' B"B' "B' '	C	0C>C	C	r   c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sddddS dt        |      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%   r   r&   r   firstr   r)   r*   r   r   rowr-   s       r   	get_by_idzSubjectClass.get_by_id$   s|    	H''---44\__5JKQQSC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA% A% %	B.B<BBr!   c                    	 t        j                         }t        |j                  d      |j                  d      ||d      }| j                  j                  |       | j                  j                          | j                  j                  |       dd|j                  t        |      dS # t        $ r2}| j                  j                          dt        |      d	cY d}~S d}~ww xY w)
zCrea un registro en subjects.r   r   N)r   r   r   r   r   r   zRegistro creado.)r    r$   r   r!   r"   r    r$   )r   nowr   r.   r   addcommitrefreshr   r   r)   rollbackr*   )r   r!   r7   r3   r-   s        r   storezSubjectClass.store.   s    	:,,.C((;/+ !C GGKKGGNNGGOOC '4Fcff^jkn^opp 	:GG%#a&99	:s   B+B. .	C)7'C$C)$C)c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS d|v r
|d   |_        d|v r
|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)
z7Actualiza un registro por id; solo los campos enviados.r"   r0   r6   r   r   r   zRegistro actualizado.)r    r$   r   N)r   r%   r   r&   r   r1   r   r   r   r7   r   r9   r:   r)   r;   r*   )r   r   r!   r3   r-   s        r   updatezSubjectClass.updateA   s    	:''---44\__5JKQQSC")6OPPd" $[ 1D "9o'||~CGGNNGGOOC '4KSVSYSYZZ 	:GG%#a&99	:s%   AC A9C 	D'D DDc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS t        j                         |_        t        j                         |_	        | j                   j                          dddS # t        $ r2}| j                   j                          dt        |      dcY d}~S d}~ww xY w)u$   Borrado lógico: setea deleted_date.r"   r0   r6   r   zRegistro eliminado.N)r   r%   r   r&   r   r1   r   r7   r   r   r9   r)   r;   r*   r2   s       r   deletezSubjectClass.deleteS   s    
	:''---44\__5JKQQSC")6OPP'||~C'||~CGGNN'4IJJ 	:GG%#a&99	:s%   AB' AB' '	C"0'CC"C"r   )__name__
__module____qualname__r   r   r   intr   r.   r4   dictr<   r>   r@    r   r   r   r      s~    7 FXc] Fc FHC HC H:$ :3 :&: :D :S :$: : :r   r   N)r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   rE   r   r   rF   r   r   <module>rJ      s0       " .L T M: M:r   