
    i                     6    d dl m Z  d dlmZ d Z G d d      Zy)    )datetime)DiagnosisSummaryModelc                 F   | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  r| j                  j                  d      nd | j                  r| j                  j                  d      d	S d d	S )Nz%Y-%m-%d %H:%M:%S)	id	school_idspecial_educational_need_id	course_id
year_indexavailable_slotsoccupied_slots
added_dateupdated_date)
r   r   r   r	   r
   r   r   r   strftimer   )rows    T/var/www/pie360backend.cl/public_html/app/backend/classes/diagnosis_summary_class.py_serialize_rowr      s    ff]]'*'F'F]]nn..,,FInncnn--.ABZ^JMJZJZ((112EF
 
 ae
 
    c                   J    e Zd Zd Z	 	 	 	 	 	 d
dZd Zd Zd Zd Zd Z	d	 Z
y)DiagnosisSummaryClassc                     || _         y )N)db)selfr   s     r   __init__zDiagnosisSummaryClass.__init__   s	    r   Nc           
      B   	 | j                   j                  t              }|"|j                  t        j                  |k(        }|"|j                  t        j
                  |k(        }|"|j                  t        j                  |k(        }|"|j                  t        j                  |k(        }|j                  t        j                  j                         t        j
                  j                         t        j                  j                         t        j                  j                               }|dkD  r|dkD  r|j                         }|r||z   dz
  |z  nd}	|dk  s|	r||	kD  r||	xs d||g dS |j                  |dz
  |z        j                  |      j                         }
||	|||
D cg c]  }t        |       c}dS |j                         }
|
D cg c]  }t        |       c}S c c}w c c}w # t        $ r}dt!        |      g dcY d }~S d }~ww xY w)Nr      )total_itemstotal_pagescurrent_pageitems_per_pagedataerror)statusmessager    )r   queryr   filterr   r   r	   r
   order_byasccountoffsetlimitallr   	Exceptionstr)r   pager   r   r   r	   r
   r$   r   r   r    res                r   get_allzDiagnosisSummaryClass.get_all   s   )	FGGMM"78E$%:%D%D	%QR*6)EEIdd $%:%D%D	%QR%%:%E%E%STNN%//335%AAEEG%//335%00446	E axNQ.#kkmVd{^;a?NRjk!8{0B'2'2'7a(,*8 "  ||TAX$?@FF~VZZ\#.#.$(&48<=1^A.=  99;D/34!N1%44 > 5 	F%#a&"EE	FsH   E3G< 6<G< 2G2G< 	G< G7/G< 2
G< <	HHHHc                 
   	 | j                   j                  t              j                  t        j                  |k(        j                         }|rt        |      S dddS # t        $ r}dt        |      dcY d }~S d }~ww xY w)Nr!   No data foundr"   r#   )	r   r$   r   r%   r   firstr   r,   r-   r   r   r   r0   s       r   getzDiagnosisSummaryClass.getK   ss    	:''-- 56==>S>V>VZ\>\]cceC%c**%/BB 	:%#a&99	:s$   AA! A! !	B*A=7B=Bc                    | j                   j                  t              j                  t        j                  |k(  t        j
                  |k(  t        j                  |k(        }|>|j                  t        j                  j                  d            }|j                         S |j                  t        j                  |k(        }|j                         S )uW   Busca por clave única (school_id, special_educational_need_id, course_id, year_index).N)
r   r$   r   r%   r   r	   r
   r   is_r5   )r   r   r   r	   r
   qs         r   find_by_uniquez$DiagnosisSummaryClass.find_by_uniqueT   s    GGMM/077!==A\\!++y8!,,
:

 .88<<TBCA wwy .88IEFAwwyr   c                 H   	 t        j                         }t        |j                  d      |j                  d      |j                  d      |j                  dd      |j                  d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)Nr   r   r	   r
   r   r   r   )r   r   r	   r
   r   r   r   r   successu   Resumen de diagnóstico creador"   r#   r   r!   r4   )r   nowr   r7   r   addcommitrefreshr   r,   rollbackr-   )r   inputsr?   r   r0   s        r   storezDiagnosisSummaryClass.storea   s    	:,,.C' **[1,2JJ7T,U **[1!::lA6 &

+<a @%zz*:A> 	C GGKKGGNNGGOOC '4T\_\b\bcc 	:GG%#a&99	:s   C#C& &	D!/'DD!D!c                 ~   |j                  d      }|j                  d      }|j                  d      }|j                  dd      }| j                  ||||      }|r7| j                  |j                  |      }|j                  d      dk(  rd|d	<   |S | j	                  |      }|j                  d      dk(  rd
|d	<   |S )uE   Si existe registro con la misma clave única, actualiza; si no, crea.r   r   r	   r
   r   r"   r=   FcreatedT)r7   r;   updater   rE   )r   rD   r   need_idr	   r
   existingouts           r   store_or_updatez%DiagnosisSummaryClass.store_or_updatev   s    JJ{+	**:;JJ{+	ZZa0
&&y'9jQ++hkk62Cwwx I-!&IJjj 778	)!C	N
r   c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|sdddS d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_	        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)Nr!   r3   r4   r   r   r	   r
   r   r   r=   u#   Resumen de diagnóstico actualizador>   )r   r$   r   r%   r   r5   r   r   r	   r
   r   r   r   r?   r   rA   rB   r,   rC   r-   )r   r   rD   r   r0   s        r   rH   zDiagnosisSummaryClass.update   s7   	:''-- 56==>S>V>VZ\>\]cceC")oFFf$ &{ 3,6289V2W/f$ &{ 3v%!'!5 F*&,->&?#6)%+,<%="'||~CGGNNGGOOC '4Yadagaghh 	:GG%#a&99	:s%   AD B1D 	E'D>8E>Ec                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|s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)Nr!   r3   r4   r=   u!   Resumen de diagnóstico eliminado)r   r$   r   r%   r   r5   deleterA   r,   rC   r-   r6   s       r   rO   zDiagnosisSummaryClass.delete   s    		:''-- 56==>S>V>VZ\>\]cceC")oFFGGNN3GGNN'4WXX 	:GG%#a&99	:s$   AB 9B 	C'C CC)r   
   NNNN)__name__
__module____qualname__r   r1   r7   r;   rE   rL   rH   rO    r   r   r   r      s@    
 $(2Fh::*":2
:r   r   N)r   app.backend.db.modelsr   r   r   rT   r   r   <module>rV      s     7W: W:r   