o
    ;?ri;  ã                   @   s6   d dl mZ d dlmZ d dlmZ G dd„ dƒZdS )é    )Úget_db)ÚConfig)Úformat_date_for_dbc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚAsistenciaServicec                 C   s
   d | _ d S ©N)Údb©Úself© r
   ú/var/www/ultranav/services.pyÚ__init__   s   
zAsistenciaService.__init__c                 C   s   t ƒ | _d S r   )r   r   r   r
   r
   r   Úconnect	   s   zAsistenciaService.connectc                 C   s   | j r
| j  ¡  d S d S r   )r   Úcloser   r
   r
   r   r      s   ÿzAsistenciaService.closec                 C   s4   d|› d�}|t jt jg}| j ||¡}| j |¡S )Na‹  
        WITH estructura AS (
          SELECT id_struct, id_padre, nombre_struct
          FROM key_estructura
          WHERE id_struct = ? AND instancia = ?
          UNION ALL
          SELECT e.id_struct, e.id_padre, e.nombre_struct
          FROM key_estructura e
          INNER JOIN estructura o ON o.id_struct = e.id_padre
        )
        SELECT
            U.UserID,
            U.DEFAULTDEPTID,
            e.nombre_struct AS DEPTNAME,
            U.Name,
            U.habilitado,
            U.rut_formato_3 AS rut
        FROM USERINFO U
        INNER JOIN estructura e ON U.id_estructura = e.id_struct
        WHERE U.TIPO_CUENTA IN (z`)
          AND U.instancia = ?
          AND U.habilitado > -1
        ORDER BY U.Name
        ©r   Ú	INSTANCIAr   Úexecute_queryÚ	fetch_all)r	   Úid_nodoÚaccount_typesÚsqlÚparamsÚcursorr
   r
   r   Úget_colaboradores   s   íz#AsistenciaService.get_colaboradoresc                 C   s,   d}||t j|g}| j ||¡}| j |¡S )Nz2
        EXEC PRColabporDia ?, ?, ?, ?, 1
        r   )r	   Úfecha_inicioÚ	fecha_finÚuser_idr   r   r   r
   r
   r   Úget_asistencia_por_dia/   s   z(AsistenciaService.get_asistencia_por_diac                 C   sÊ   g }|D ]^}|d }|d }|d }|d }	|   |||¡}
d}|
D ]@}| dd¡}| dd¡}|ra|ra| ||||	| d	d¡||| d
d¡| dd¡| dd¡| dd¡| dd¡dœ¡ |d7 }q!q|S )NÚUserIDÚNameÚDEPTNAMEÚruté   ÚtEntradaÚ ÚtSalidaÚtfechaÚtinicioColacionÚtfinColacionÚtAntesAlmorzarÚtdeltaÚtDespuesAlmorzar)ÚobsÚdivisionÚnombrer    ÚfechaÚmarca_entradaÚmarca_salidaÚsalida_almorzarÚllegada_almorzarÚtiempo_antes_almuerzoÚalmuerzoÚtiempo_despues_almuerzo)r   ÚgetÚappend)r	   Úcolaboradoresr   r   Ú
resultadosÚcolabr   r-   r,   r    Úasistenciasr+   Ú
asistenciaÚentradaÚsalidar
   r
   r   Úprocesar_asistencia8   s<   





ô€íz%AsistenciaService.procesar_asistenciaN)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r?   r
   r
   r
   r   r      s    	r   N)Údatabaser   Úconfigr   Ú
validatorsr   r   r
   r
   r
   r   Ú<module>   s    