
    'Xi^                     b    d dl m Z  d dlmZmZ d dlmZ d dlmZ d Zdede	fdZ
 G d	 d
      Zy)    )datetime)OptionalAny)Session)MeetingSchedulalingModelc                     | yt        | d      r| S t        | t              r(	 t        j                  | dd d      j                         S y# t        t        f$ r Y yw xY w)z(Convierte string a date si es necesario.Nyear
   z%Y-%m-%d)hasattr
isinstancestrr   strptimedate
ValueError	TypeError)values    W/var/www/pie360backend.cl/public_html/app/backend/classes/meeting_schedulaling_class.py_parse_dater      sh    }uf%	$$U3BZ<AACC  I& 		s   &A AArreturnc           
         | j                   | j                  | j                  t        | dd       | j                  r| j                  j                         nd | j                  | j                  r| j                  j                         nd | j                  r| j                  j                         nd | j                  r| j                  j                         d	S d d	S )N	period_id)	id	school_id	course_idr   meeting_datemeeting_time
added_dateupdated_datedeleted_date)
r   r   r   getattrr   	isoformatr   r   r   r    )r   s    r   _row_to_dictr#      s    dd[[[[QT267nn002$23,,all,,.D67nn002$67nn002
 
 KO
 
    c            	           e Zd ZdefdZ	 	 	 ddee   dee   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)MeetingSchedulalingClassdbc                     || _         y )N)r'   )selfr'   s     r   __init__z!MeetingSchedulalingClass.__init__$   s	    r$   Nr   r   r   r   c                 <   	 | j                   j                  t              j                  t        j                  j                  d            }|'|dk7  r"|j                  t        j                  |k(        }|'|dk7  r"|j                  t        j                  |k(        }|'|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)z\Lista registros activos (deleted_date is None). Filtros opcionales (-1 o None = no filtrar).Nsuccessstatusdataerrorr/   messager0   )r'   queryr   filterr    is_r   r   r   allr#   	Exceptionr   )r)   r   r   r   qrowsr   es           r   getzMeetingSchedulalingClass.get'   s    	F670==AA$GH  $bHH5??9LM$bHH5??9LM$bHH5??9LM557D'41Pa,q/1PQQ1P 	F%#a&"EE	Fs0   CC9 C4/C9 4C9 9	DDDD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.r1   Registro no encontrado.Nr2   r-   r.   )	r'   r4   r   r5   r   firstr#   r8   r   r)   r   rowr;   s       r   	get_by_idz"MeetingSchedulalingClass.get_by_id>   s    	H''-- 89@@AYA\A\`bAbciikC")6OY]^^'c1BCC 	H%#a&$GG	Hs$   AA% A% %	B.B<BBr0   c           
      :   	 t        j                         }t        |j                  d            }t	        |j                  d      |j                  d      |j                  d      ||j                  d      ||d      }| j
                  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)Crea un registro en meeting_schedualings.r   r   r   r   r   N)r   r   r   r   r   r   r   r    r-   zRegistro creado.r/   r3   r   r1   r/   r3   )r   nowr   r<   r   r'   addcommitrefreshr   r8   rollbackr   )r)   r0   rF   r   rA   r;   s         r   storezMeetingSchedulalingClass.storeH   s    	:,,.C&txx'?@L*((;/((;/((;/)!XXn5 !	C GGKKGGNNGGOOC '4FcffUU 	:GG%#a&99	:s   CC 	D('DDDc                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS d|v r|d   
|d   |_        d|v r|d   
|d   |_        d|v r
|d   |_        d|v rt        |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)z0Actualiza un registro; solo los campos enviados.r1   r>   rE   r   Nr   r   r   r   r-   zRegistro actualizado.rD   )r'   r4   r   r5   r   r?   r   r   r   r   r   r   r   rF   r   rH   rI   r8   rJ   r   )r)   r   r0   rA   r;   s        r   updatezMeetingSchedulalingClass.update_   s9   	:''-- 89@@AYA\A\`bAbciikC")6OPPd"tK'8'D $[ 1d"tK'8'D $[ 1d" $[ 1%#.tN/C#D %#'#7 '||~CGGNNGGOOC '4KSVSYSYZZ 	:GG%#a&99	:s%   AD B6D 	E'E=EE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.r1   r>   rE   r-   zRegistro eliminado.N)r'   r4   r   r5   r   r?   r   rF   r    r   rH   r8   rJ   r   r@   s       r   deletezMeetingSchedulalingClass.deletew   s    
	:''-- 89@@AYA\A\`bAbciikC")6OPP'||~C'||~CGGNN'4IJJ 	:GG%#a&99	:s%   AB' AB' '	C"0'CC"C")NNN)__name__
__module____qualname__r   r*   r   intr   r<   rB   dictrK   rM   rO    r$   r   r&   r&   #   s    7 
 $(#'#'	FC=F C=F C=	F
 
F.HC HC H:$ :3 :.: :D :S :0: : :r$   r&   N)r   typingr   r   sqlalchemy.ormr   app.backend.db.modelsr   r   rT   r#   r&   rU   r$   r   <module>rY      s6       " :,  `: `:r$   