
    yi                     T   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ  eddg      Zej/                  d       edddd       edddd       edddd       eddd       ee       ee      fdededee   dee   ded efd!       Zej/                  d"       eddd#       eddd#       edddd$       ee       ee      fdededee   ded ef
d%       Zej/                  d&       eddd#       eddd#       eddd#       ee       ee      fd'edededee   ded efd(       Zej/                  d)       eddd#       eddd#       eddd#       ee       ee      fd'edededee   ded efd*       Zy)+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                    t        ||      }|dk(  rt        t        j                  ddg d      S |r|dkD  r|nd }t	        |      }|j                  || |||      }	|	j                  d      d	k(  r>t        t        j                  d
|	j                  dd      |	j                  d      d      S t        t        j                  dd|	j                  d      d      S )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
             T/var/www/pie360backend.cl/public_html/app/backend/routes/kpi_document_assignments.pykpi_by_courser4      s    $ *"l;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                    t        ||      }|dk(  rt        t        j                  ddg d      S |r|dkD  r|nd}t	        |      }|j                  || ||      }|j                  d	      d
k(  r>t        t        j                  d|j                  dd      |j                  d      d      S t        t        j                  dd|j                  d      d      S )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     *"l;E{**"tR@
 	
 !UQY%DK
%b
)C]]*	  F zz(w&==!::i9

6*
 	
 &&4F9KL r5   z$/by-course/{course_id}/professionals	course_idc                    t        ||      }|dk(  rt        t        j                  ddg d      S |r|dkD  r|nd }t	        |      }|j                  || |||      }	|	j                  d      d	k(  r>t        t        j                  d
|	j                  dd      |	j                  d      d      S t        t        j                  dd|	j                  d      d      S )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     *"l;E{**"tR@
 	
 !UQY%DK
%b
)C  * ! F zz(w&==!::i9

6*
 	
 &&4F9KL r5   z"/by-course/{course_id}/by-documentc                    t        ||      }|dk(  rt        t        j                  ddg d      S |r|dkD  r|nd}t	        |      }|j                  || |||      }	|	j                  d	      d
k(  r>t        t        j                  d|	j                  dd      |	j                  d      d      S t        t        j                  dd|	j                  d      d      S )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     *"l;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   