
    Q(i!                     j   S r SSKJrJr  SSKJrJrJrJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  \" SS/S9rS\\   S\4S jrS\S\S\\   4S jrS\S\S\S\4S jr\R?                  S5      \" SSSSS9\" \5      \" \5      4S\S\S\4S jj5       r \R?                  S5      \" SSSSS9\" S S!S"S#9\" \5      \" \5      4S\S\\   S\S\4S$ jj5       r!\R?                  S%5      \" SSSS&9\" S S!S'S#9\" \5      \" \5      4S(\S\S\\   S\S\4
S) jj5       r"g )*u\   KPI: avance de documentación transversal (document_type_id = 1) por curso y por estudiante.    )ListOptional)	APIRouterDependsQuerystatus)JSONResponse)Session)get_current_active_user)KpiDocumentationProgressClass)session_professional_scope_id)get_db)SchoolModel)	UserLoginz/kpi/documentation-progresszKPI documentation progress)prefixtagsscopereturnc                 
    U SL $ )u;   Solo coordinador/admin (sin restricción a un profesional).N )r   s    _C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\kpi_documentation_progress.py_scope_allows_kpir      s    D=    dbsession_userc                    [        USS5      n[        USS5      n[        USS5      nUb  [        U5      S;   a  Ub  U R                  [        R                  5      R                  [        R                  [        U5      :H  5      R                  [        R                  R                  5       5      R                  5       nU Vs/ s H  n[        US   5      PM     sn$ Ub  [        U5      S:X  az  Ucw  U R                  [        R                  5      R                  [        R                  R                  5       5      R                  5       nU Vs/ s H  n[        US   5      PM     sn$ Ub  [        U5      /$ / $ s  snf s  snf )uj   Administrador cliente: todos los colegios del customer. Super (rol 1 sin customer): todos. Resto: sesión.rol_idNcustomer_id	school_id      r   r!   )getattrintqueryr   idfilterr   order_byschool_nameascall)r   r   r   r   r   rowsrs          r   _resolve_doc_kpi_school_idsr.      s:   \8T2F,t<Kk48Ic&kV38OHH[^^$VK++s;/??@Xk--1134SU	 	 $((4aAaD	4((c&kQ.;3Fxx'001H1H1L1L1NOSSU#'(4aAaD	4((II ) )s   E:E?r   c                 F   [        U5      n[        USS 5      n[        USS 5      n[        USS 5      nUb  [        U5      S;   ar  Ubo  U R                  [        5      R	                  [        R
                  U:H  5      R                  5       nUS L=(       a!    [        UR                  5      [        U5      :H  $ UbW  [        U5      S:X  aH  UcE  U R                  [        5      R	                  [        R
                  U:H  5      R                  5       S L$ Ub  [        U5      U:H  $ g)Nr   r   r   r    r!   F)r$   r#   r%   r   r'   r&   firstr   )r   r   r   sidr   r   session_schoolschs           r   _school_allowed_for_doc_kpir4   3   s     i.C\8T2F,t<K\;=Nc&kV38Ohh{#**;>>S+@AGGI$K3s#73{;K#KKc&kQ.;3Fxx$++KNNc,ABHHJRVVV!>"c))r   z
/by-school.i  i4  u   Año escolar (period_year))geledescriptionperiod_yearc                    [        X!5      n[        U5      (       d  [        [        R                  SS/ S.S9$ [        X!5      nU(       d  [        [        R                  SS/ S.S9$ [        U5      nUR                  X@S9nUR                  S5      S	:X  a;  [        [        R                  S
UR                  SS5      UR                  S5      S.S9$ [        [        R                  SSUR                  S5      S.S9$ )uL   Resumen por establecimiento (administración: varios colegios del customer).   OKr   messagedatastatus_codecontent  z,No hay establecimientos asociados al usuario)
school_idsr8   r   error  r=   Errorr>   )r   r   r	   r   HTTP_200_OKr.   HTTP_400_BAD_REQUESTr   	by_schoolgetHTTP_500_INTERNAL_SERVER_ERROR)r8   r   r   r   rC   svcresults          r   kpi_doc_progress_by_schoolrN   G   s     *";EU##**"tR@
 	
 -R>J33I
 	
 (
+C]]j]JFzz(w&==!::i9

6*
 	
 &&4F9KL r   z
/by-courseNr!   uI   Establecimiento (admin puede filtrar; si no, se usa school_id de sesión))r5   r7   c                 |   [        X25      n[        U5      (       d  [        [        R                  SS/ S.S9$ Ub  UO[        USS 5      nUc  [        [        R                  SS/ S.S9$ [        X2[        U5      5      (       d  [        [        R                  SS	/ S.S9$ [        U5      nUR                  [        U5      U S
9nUR                  S5      S:X  a;  [        [        R                  SUR                  SS5      UR                  S5      S.S9$ [        [        R                  SSUR                  S5      S.S9$ )Nr:   r;   r<   r?   r   rB   school_id requerido  !Sin acceso a este establecimiento)r   r8   r   rD   rE   r=   rF   r>   )r   r   r	   r   rG   r#   rH   r4   r$   HTTP_403_FORBIDDENr   	by_courserJ   rK   )r8   r   r   r   r   	effectiverL   rM   s           r   kpi_doc_progress_by_courserV   o   sH    *";EU##**"tR@
 	
 '2	k[_8`I330
 	
 'rYHH11>
 	
 (
+C]]S^]MFzz(w&==!::i9

6*
 	
 &&4F9KL r   z/by-course/{course_id}/students)r5   r6   uO   Establecimiento (admin con varios colegios; si no, se usa school_id de sesión)	course_idc                    [        XC5      n[        U5      (       d  [        [        R                  SSS S.S9$ Ub  UO[        USS 5      nUc  [        [        R                  SSS S.S9$ [        XC[        U5      5      (       d  [        [        R                  SS	S S.S9$ [        U5      nUR                  [        U5      U US
9nUR                  S5      S:X  a  S[        UR                  SS5      5      R                  5       ;   a  [        R                  O[        R                   n	[        U	U	S:X  a  SOSUR                  SS5      UR                  S5      S.S9$ [        [        R                  SSUR                  S5      S.S9$ )Nr:   r;   r<   r?   r   rB   rP   rQ   rR   )r   rW   r8   r   rD   zno encontrador=    i  rE   rF   r>   )r   r   r	   r   rG   r#   rH   r4   r$   rS   r   students_detailrJ   strlowerHTTP_404_NOT_FOUNDrK   )
rW   r8   r   r   r   r   rU   rL   rM   codes
             r   kpi_doc_progress_studentsr_      s    *";EU##**"tTB
 	
 '2	k[_8`I330
 	
 'rYHH11>
 	
 (
+C  i. ! F
 zz(w& #fjjB&?"@"F"F"HH %%66 	
 !%##!::i9

6*
 	
 &&4F9KL r   )#__doc__typingr   r   fastapir   r   r   r   fastapi.responsesr	   sqlalchemy.ormr
   app.backend.auth.auth_userr   4app.backend.classes.kpi_documentation_progress_classr   &app.backend.classes.professional_classr   app.backend.db.databaser   app.backend.db.modelsr   app.backend.schemasr   kpi_documentation_progressr$   boolr   r.   r4   rJ   rN   rV   r_   r   r   r   <module>rm      s   b ! 5 5 * " > ^ P * - )&(
&	' Xc] t 
G 9 c 0(58	( -STd@\]%&=>&/$$$ 	$ .$N -STd@\]$_ 
 &&=>&/22}2 2 	2 .2j  AB STd3$e 
 &&=>&/<<< }< < 	< C<r   