
    sF"i\                     D    d dl m Z  d dlmZmZmZ d dlmZ  G d d      Zy)    )datetime)StudentModelStudentAcademicInfoModelStudentPersonalInfoModel)aliasedc                   2    e Zd Zd ZddZd Zd Zd Zd Zy)	StudentClassc                     || _         y )N)db)selfr   s     _C:\Users\jesus\OneDrive\Escritorio\proyecto_pie360\backend\app\backend\classes\student_class.py__init__zStudentClass.__init__   s	        Nc                    	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  j                  d      t        j                  t        j                  t        j                  j                  d      t        j                  t        j                  t        j                  t        j                  j                  d      t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  t        j8                  t        j:                  t        j<                        j?                  t        t        j                  t        j@                  k(        j?                  t        t        j                  t        j@                  k(        jC                  t        j                  dk(        }|r"|jC                  t        j
                  |k(        }|rP|jE                         r@|jC                  t        j                  jG                  d|jE                          d            }|rP|jE                         r@|jC                  t        j(                  jG                  d|jE                          d            }|rP|jE                         r@|jC                  t        j                  jG                  d|jE                          d            }|jI                  t        j                  jK                               }|dkD  r=|dk  rd}|jM                         }|r||z   dz
  |z  nd}	|dk(  s
|	dk(  s||	kD  r||	||g dS |jO                  |dz
  |z        jQ                  |      jS                         }
|
D cg c]  }|j                  |j                  |j
                  |jT                  |j                  r|j                  jW                  d      nd |j                  r|j                  jW                  d      nd |jX                  r/|jX                  |j                  |j                  |j                  d	nd |jZ                  ri d
|jZ                  d|j                  d|j                   d|j"                  d|j$                  d|j&                  d|j                  d|j(                  d|j*                  d|j,                  d|j.                  d|j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  d|j<                  ind d }}||	|||dS |jS                         }
|
D cg c]  }|j                  |j                  |j
                  |jT                  |j                  r|j                  jW                  d      nd |j                  r|j                  jW                  d      nd |jX                  r/|jX                  |j                  |j                  |j                  d	nd |jZ                  ri d
|jZ                  d|j                  d|j                   d|j"                  d|j$                  d|j&                  d|j                  d|j(                  d|j*                  d|j,                  d|j.                  d|j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  d|j<                  ind d }}|S c c}w c c}w # t\        $ r}t_        |      }d|dcY d }~S d }~ww xY w)Nstudent_identification_numberacademic_idpersonal_idr   %   )total_itemstotal_pagescurrent_pageitems_per_pagedata%Y-%m-%d %H:%M:%Sidspecial_educational_need_id	course_idsip_admission_yearr   	region_id
commune_id	gender_idproficiency_native_language_idproficiency_language_used_ididentification_numbernamesfather_lastnamemother_lastnamesocial_name	born_datenationalityaddressphoneemailnative_languagelanguage_usually_usedr   deleted_status_id	school_idr&   
added_dateupdated_dateacademic_infopersonal_dataerrorstatusmessage)0r   queryr   r   r3   r4   r&   labelr5   r6   r   r   r   r    r   r!   r"   r#   r$   r%   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   	outerjoin
student_idfilterstriplikeorder_bydesccountoffsetlimitallr   strftimer   r   	Exceptionstr)r   pager   r4   rutr'   r&   r=   r   r   r   studentserialized_dataeerror_messages                  r   get_allzStudentClass.get_all	   s   ]	AGGMM..&&22889XY''))(++11-@(DD(22(;;(++11-@(22(33(22(GG(EE(>>(..(88(88(44(22(44(00(..(..(88(>>9: i(#;#F#FF i(#;#F#FF f\33q89G L \%;%;y%HI syy{\%G%G%L%LqQTQZQZQ\P]]^M_%`a%=%C%C%H%H1U[[]O[\I]%^_$)>)D)D)F%=%S%S%X%X[\]r]x]x]z\{{|Y}%~NN<??#7#7#9:Eax!8D#kkmVd{^;a?NRjk!#{a'74+;M'2'2(,*8 "  ||TAX$?@FF~VZZ\F "&C!#'B A "**)0)B)B!(!2!2-4-R-RV]VhVh'"4"4"="=>Q"RnrZaZnZnG$8$8$A$ABU$Vtx !,,	 &117>7Z7Z%,%6%6.5.H.H	&
 37( !,,'&g11&#W%6%6& %g&8&8& $W%6%6	&
 9':`:`& 78\8\& 01N1N&  & *7+B+B& *7+B+B& &w':':& $W%6%6& &w':':& "7??&  &   !&" *7+B+B#&$ 01N1N%&& 37A!$ !#' !#'H $/#.$(&4+  yy{F "&C!#'B A "**)0)B)B!(!2!2-4-R-RV]VhVh'"4"4"="=>Q"RnrZaZnZnG$8$8$A$ABU$Vtx !,,	 &117>7Z7Z%,%6%6.5.H.H	&
 37( !,,'&g11&#W%6%6& %g&8&8& $W%6%6	&
 9':`:`& 78\8\& 01N1N&  & *7+B+B& *7+B+B& &w':':& $W%6%6& &w':':& "7??&  &   !&" *7+B+B#&$ 01N1N%&& 37A!$ !#' !#'F '&c!#'\!#'J  	AFM%-@@	AsJ   O:_ =8_ 5F>_3	_ =_ F>__ 
_ 	` &_;5` ;` c                    	 | j                   j                  t        j                  t        j                  t        j
                  t        j                  j                  d      t        j                  t        j                  t        j                  j                  d      t        j                  t        j                  t        j                  t        j                  j                  d      t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  t        j8                  t        j:                  t        j<                        j?                  t        t        j                  t        j@                  k(        j?                  t        t        j                  t        j@                  k(        jC                  t        j                  |k(  t        j                  dk(        jE                         }|r|j                  |j                  |j
                  |jF                  |j                  r|j                  jI                  d      nd |j                  r|j                  jI                  d      nd |jJ                  r/|jJ                  |j                  |j                  |j                  dnd |jL                  ri d|jL                  d|j                  d	|j                   d
|j"                  d|j$                  d|j&                  d|j                  d|j(                  d|j*                  d|j,                  d|j.                  d|j0                  d|j2                  d|j4                  d|j6                  d|j8                  d|j:                  d|j<                  ind d}d|iS ddiS # tN        $ r}tQ        |      }d|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(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   student_datar9   z8No se encontraron datos para el estudiante especificado.r:   ))r   r=   r   r   r3   r4   r&   r>   r5   r6   r   r   r   r    r   r!   r"   r#   r$   r%   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r?   r@   rA   firstr   rJ   r   r   rK   rL   )r   r   
data_queryrU   rQ   rR   s         r   getzStudentClass.get   s   T	A..&&22889XY''))(++11-@(DD(22(;;(++11-@(22(33(22(GG(EE(>>(..(88(88(44(22(44(00(..(..(88(>>9: i(#;#F#FF i(#;#F#FF f2%..!3 egM P $--)3)E)E!+!5!5-7-U-UYcYnYn*"7"7"@"@AT"Utx]g]t]tJ$;$;$D$DEX$Yz~ $//	 )447A7]7]%/%9%9.8.K.K	&
 6:( $//'&j44&#Z%9%9& %j&;&;& $Z%9%9	&
 9*:c:c& 7
8_8_& 01Q1Q&  !1!1& *:+E+E& *:+E+E& &z'='=& $Z%9%9& &z'='=& ":#5#5&  !1!1&   !1!1!&" *:+E+E#&$ 01Q1Q%&& 6:A! F '55  ![\\ 	AFM%-@@	As$   QQ Q 	Q6Q1+Q61Q6c           	         	 t        d|j                  d      |j                  d      t        j                         t        j                               }| j                  j                  |       | j                  j                          | j                  j                  |       t        |j                  |j                  d      |j                  d      |j                  d      |j                  d            }| 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   r4   r&   )r3   r4   r&   r5   r6   r'   r(   r)   )r@   r&   r'   r(   r)   successzStudent created successfully)r;   r<   r@   r9   r:   )r   rX   r   nowr   addcommitrefreshr   r   rK   rollbackrL   )r   student_inputsnew_studentnew_personalrQ   s        r   storezStudentClass.store   s+   "	:&"#(,,[9&4&8&89P&Q#<<>%\\^K GGKK$GGNNGGOOK( 4&>>&4&8&89P&Q$((1 . 2 23D E . 2 23D EL GGKK%GGNN $9)nn   	:GG%#a&99	:s   D<D? ?	E:'E5/E:5E:c                    	 | j                   j                  t              j                  t        j                  |k(        j                         }|rN|j                  dk(  r?d|_        t        j                         |_	        | j                   j                          dddS |rdddS dddS # t        $ r4}| j                   j                          t        |      }d|dcY d }~S d }~ww xY w)Nr   r   rZ   zStudent deleted successfullyr:   r9   No data found)r   r=   r   rA   r   rV   r3   r   r[   r6   r]   rK   r_   rL   )r   r   r   rQ   rR   s        r   deletezStudentClass.delete%  s    	A77==.55loo6KLRRTD..!3)*&$,LLN! "+8VWW")oFF")oFF 	AGGFM%-@@	As*   BB+ B+ &B+ +	C(4)C#C(#C(c           	      t
   	 t        d| d|        | j                  j                  t              j	                  t        j
                  |k(        j                         }|sdddS d|v r|d   r
|d   |_        d|v r|d   r
|d   |_        t        j                         |_        d|v r|d   r|d   }| j                  j                  t              j	                  t        j                  |k(        j                         }|rDd	|v r
|d	   |_        d
|v r
|d
   |_        d|v r
|d   |_        t        j                         |_        n}t        ||j%                  d	      |j%                  d
      |j%                  d      t        j                         t        j                               }| j                  j'                  |       d|v r|d   r|d   }t        d|        | j                  j                  t(              j	                  t(        j                  |k(        j                         }|rt        d|j
                          d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        d|v r
|d   |_        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        d        npt        d!       t)        d'i d"|d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      d|j%                  d      }	| j                  j'                  |	       nt        d#       | j                  jK                          | j                  jM                  |       t        d$       d%d&dS # tN        $ r2}
| j                  jQ                          dtS        |
      dcY d }
~
S d }
~
ww xY w)(Nz [DEBUG StudentClass.update] ID: z
, Inputs: r9   re   r:   r4   r&   r7   r   r   r    )r@   r   r   r    r5   r6   r8   z$[DEBUG] Actualizando personal_data: z7[DEBUG] Encontrado registro personal existente con ID: r!   r"   r#   r$   r%   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   z,[DEBUG] Campos actualizados en personal_dataz6[DEBUG] No existe registro personal, creando uno nuevor@   z.[DEBUG] No hay personal_data en student_inputsz.[DEBUG] Commit exitoso, estudiante actualizadorZ   zStudent updated successfully )*printr   r=   r   rA   r   one_or_noner4   r&   r   r[   r6   r   r@   rV   r   r   r    rX   r\   r   r!   r"   r#   r$   r%   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r]   r^   rK   r_   rL   )r   r   r`   existing_studentr7   existing_academicnew_academicr8   existing_personalrb   rQ   s              r   updatezStudentClass.update7  s   D	:4RD
>BRST#ww}}\:AA2% km  $")oFF n,1L-;K-H * '.8^Lc=d9GH_9` 6,4LLN) .0^O5T . ?$(GGMM2J$K$R$R,772=%%' " %4EHUVsHt)E"m36CK6P)3+}<?LMa?b)<5=\\^%2 $<#%4A4E4EFc4d"/"3"3K"@+8+<+<=Q+R#+<<>%-\\^$L GGKK- .0^O5T . ?<]OLM$(GGMM2J$K$R$R,772=%%' " %STeThThSijk"m36CK6P)3#}47D\7R)4"m36CK6P)37=HKXYyKz)H5FIVWuIv)F.-?BOPgBh)?-/2?2H)/(M9<IJ[<\)9(M9<IJ[<\)9$58Em8T)5"m36CK6P)3$58Em8T)5 M14A)4L)1-/2?2H)/-/2?2H)/(M9<IJ[<\)9.-?BOPgBh)?HJRT#; $#%$"/"3"3K"@$ $1#4#4\#B$ #0"3"3K"@	$
 8E7H7HIi7j$ 6C5F5FGe5f$ /<.?.?@W.X$ ,//8$ )6(9(9:K(L$ )6(9(9:K(L$ %2$5$5m$D$ #0"3"3K"@$ %2$5$5m$D$ !. 1 1) <$ ,//8$  ,//8!$" )6(9(9:K(L#$$ /<.?.?@W.X%$L( GGKK-FHGGNNGGOO,-BD'4RSS 	:GG%#a&99	:s%   A$S< 'RS< <	T7'T2,T72T7)r   
   NNNN)	__name__
__module____qualname__r   rS   rX   rc   rf   ro   rh   r   r   r	   r	      s)    ^A@UAn#:JA$E:r   r	   N)r   app.backend.db.modelsr   r   r   sqlalchemy.ormr   r	   rh   r   r   <module>rv      s     b b "w: w:r   