
    &i                        S r SSK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/S9r\R/                  S5      \" SSSSS9\" SSSSS9\" SSSSS9\" SSSS9\" \5      \" \5      4S\S\S\\   S\\   S\S \4S! jj5       r\R/                  S"5      \" SSSS#9\" SSSS#9\" SSSS$S9\" \5      \" \5      4S\S\S\\   S\S \4
S% jj5       r\R/                  S&5      \" SSSS#9\" SSSS#9\" SSSS#9\" \5      \" \5      4S'\S\S\S\\   S\S \4S( jj5       r\R/                  S)5      \" SSSS#9\" SSSS#9\" SSSS#9\" \5      \" \5      4S'\S\S\S\\   S\S \4S* jj5       rg)+zLKPI: documentos asignados vs cargados (por curso y detalle por profesional).    )Optional)	APIRouterDependsQuerystatus)JSONResponse)Session)get_current_active_user)KpiDocumentAssignmentsClass)session_professional_scope_id)get_db)	UserLoginz/kpi/document-assignmentszKPI document assignments)prefixtagsz
/by-course.i  i4  u#   Año calendario del mes a consultar)geledescription      z&Mes calendario (1-12) sobre added_dateNuS   Opcional: filtrar por period_year de la asignación (el front del KPI no lo envía)z-Opcional: solo cursos de este establecimiento)r   r   yearmonthperiod_year	school_idsession_userdbc                    [        XT5      nUS:X  a  [        [        R                  SS/ S.S9$ U(       a  US:  a  UOS n[	        U5      nUR                  UU UU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$ )N   OKr   messagedatastatus_codecontentr   )r   r   r   professional_id_filterschool_id_filterr   error  r!   Errorr"   )r   r   r   HTTP_200_OKr   	by_coursegetHTTP_500_INTERNAL_SERVER_ERROR)
r   r   r   r   r   r   scopeprof_filtersvcresults
             ]C:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\kpi_document_assignments.pykpi_by_courser4      s    $ *";E{**"tR@
 	
 !UQY%DK
%b
)C]]*"  F zz(w&==!::i9

6*
 	
 &&4F9KL     z
/by-school)r   r   u3   Opcional: filtrar por period_year de la asignaciónc                    [        XC5      nUS:X  a  [        [        R                  SS/ S.S9$ U(       a  US:  a  UOSn[	        U5      nUR                  UU U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$ )uS   Resumen por establecimiento (administración): agrega todos los cursos del colegio.r   r   r   r    r#   r   N)r   r   r   r&   r   r(   r)   r!   r*   r"   )r   r   r   r+   r   	by_schoolr-   r.   )	r   r   r   r   r   r/   r0   r1   r2   s	            r3   kpi_by_schoolr8   E   s     *";E{**"tR@
 	
 !UQY%DK
%b
)C]]*	  F zz(w&==!::i9

6*
 	
 &&4F9KL r5   z$/by-course/{course_id}/professionals	course_idc                    [        XT5      nUS:X  a  [        [        R                  SS/ S.S9$ U(       a  US:  a  UOS n[	        U5      nUR                  UU UU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#   r   r   r9   r   r   r&   r   r(   r)   r!   r*   r"   )r   r   r   r+   r   by_professionalr-   r.   
r9   r   r   r   r   r   r/   r0   r1   r2   s
             r3   kpi_by_professionalr>   p   s     *";E{**"tR@
 	
 !UQY%DK
%b
)C  * ! F zz(w&==!::i9

6*
 	
 &&4F9KL r5   z"/by-course/{course_id}/by-documentc                    [        XT5      nUS:X  a  [        [        R                  SS/ S.S9$ U(       a  US:  a  UOSn[	        U5      nUR                  UU UU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$ )uR   Por tipo de documento (catálogo): asignados y cargados (detalle del profesional).r   r   r   r    r#   r   Nr;   r   r(   r)   r!   r*   r"   )r   r   r   r+   r   by_documentr-   r.   r=   s
             r3   kpi_by_documentrA      s     *";E{**"tR@
 	
 !UQY%DK
%b
)C__*  F zz(w&==!::i9

6*
 	
 &&4F9KL r5   )__doc__typingr   fastapir   r   r   r   fastapi.responsesr   sqlalchemy.ormr	   app.backend.auth.auth_userr
   2app.backend.classes.kpi_document_assignments_classr   &app.backend.classes.professional_classr   app.backend.db.databaser   app.backend.schemasr   kpi_document_assignmentsr-   intr4   r8   r>   rA    r5   r3   <module>rO      s   R  5 5 * " > Z P * )$&
$	%  l+cdt9^_sqR5]^!&i	"  %C 
 &&=>&/,
,, #, }, , 	, ,,^ l+cdt,sqR(!&I	" &&=>&/'
'' #' ' 	' ,'T DE cdt,sqR(!&t!>%&=>&/##
# # #	#
 # 	# F#L BC cdt,sqR(!&t!>%&=>&/$$
$ $ #	$
 $ 	$ D$r5   