<?php



/*

 * To change this license header, choose License Headers in Project Properties.

 * To change this template file, choose Tools | Templates

 * and open the template in the editor.

 */



/**

 * Description of Permisos

 *

 * @author Desarrollo

 */

class Permisos {



    const PENDIENTE = 'PENDIENTE';

    const CANCELADO = 'CANCELADO';

    const AUTORIZADO = 'AUTORIZADO';

    const NOAUTORIZADO = 'NO AUTORIZADO';

    const CERRADO = 'CERRADO';

    const NOUSADO = 'NO USADO';



    public static function autorizacionUsuario($accion = NULL, $username, $vista = NULL) {

        $sqlQuery = 'SELECT * FROM Usuarios '

            . 'INNER JOIN ControlPersonasAccesos ON (Usuarios.usuarioID=ControlPersonasAccesos.usuarioID) 	'

            . 'INNER JOIN ControlAccesos ON (ControlPersonasAccesos.controlAccesoID=ControlAccesos.accesosID) '

            . 'INNER JOIN ControlAcciones ON (ControlAccesos.controlAccionesID=ControlAcciones.accionesID) '

            . 'LEFT JOIN ControlVistas ON (ControlAccesos.controlVistaID=ControlVistas.vistaID) '

            . 'WHERE (ControlAcciones.accionesTITULO=? OR ControlVistas.vistaTITULO=?) AND Usuarios.usuarioNOMBRE=?;';

        return SicamDB::selectUnaFila($sqlQuery,

                array($accion, $vista, $username));

    }



    public static function autorizacionIp($userID, $ipAddress) {

        $sqlQuery = "SELECT * FROM CamaraApi WHERE usuarioID = ? AND apiIP = ?";

        return SicamDB::selectUnaFila($sqlQuery, array($userID, $ipAddress));

    }



    public static function registrarPermiso($colaboradorID, $motivo, $fechaInicio, $justificacion) {

        $sqlQuery = "INSERT INTO ColaboradoresPermisos"

            . "(colaboradorID, permisoMotivoID, permisoFCHPERMISO, permisoJUSTIFICACION)"

            . "VALUES (?, ?, ?, ?)";

        return SicamDB::insertFila($sqlQuery,

                array(

             $colaboradorID, $motivo, $fechaInicio, $justificacion

        ));

    }



    public static function datos($permisoID) {

        $sqlQuery = " SELECT * FROM ColaboradoresPermisos WHERE ColaboradoresPermisos.permisoID = ? ";

        return SicamDB::selectUnaFila($sqlQuery, array($permisoID));

    }



    static $sqlDatosCompletos = <<<sql

SELECT

    `ColaboradoresPermisos`.*

    , `Personas`.`personaID`

    , `Personas`.`personaIDENTIFICACION`

    , `Personas`.`personaNOMBRES`

    , `Personas`.`personaAPELLIDOS`

    , `CamaraColaboradores`.`colaboradorEMAIL`

    , `CamaraColaboradores`.`colaboradorJEFEINMEDIATO`

    , `JefeInmediato`.`colaboradorEMAIL` AS `jefeInmediatoColaboradorEMAIL`

    , `DatosJefeInmediato`.`personaID` AS jefeInmediatoPersonaID   

    , `DatosJefeInmediato`.`personaIDENTIFICACION` AS jefeInmediatoPersonaID

    , `DatosJefeInmediato`.`personaNOMBRES` AS jefeInmediatoPersonaNOMBRES

    , `DatosJefeInmediato`.`personaAPELLIDOS` AS jefeInmediatoPersonaAPELLIDOS

    , `ColaboradoresPermisosMotivos`.`permisoMotivoCODIGO`

    , `ColaboradoresPermisosMotivos`.`permisoMotivoTITULO`

    , `Autorizo`.`colaboradorID` AS autorizoColaboradorID

    , `Autorizo`.`colaboradorEMAIL` AS autorizoColaboradorEMAIL

    , `DatosAutorizo`.`personaID` AS autorizoPersonaID

    , `DatosAutorizo`.`personaIDENTIFICACION` AS autorizoPersonaIDENTIFICACION

    , `DatosAutorizo`.`personaNOMBRES` AS autorizoPersonaNOMBRES

    , `DatosAutorizo`.`personaAPELLIDOS` AS autorizoPersonaAPELLIDOS

FROM

    `ColaboradoresPermisos`

    INNER JOIN `CamaraColaboradores` 

        ON (`ColaboradoresPermisos`.`colaboradorID` = `CamaraColaboradores`.`colaboradorID`)

    INNER JOIN `ColaboradoresPermisosMotivos` 

        ON (`ColaboradoresPermisos`.`permisoMotivoID` = `ColaboradoresPermisosMotivos`.`permisoMotivoID`)

    LEFT JOIN `CamaraColaboradores` AS `Autorizo`

        ON (`ColaboradoresPermisos`.`colaboradorAUTORIZA` = `Autorizo`.`colaboradorID`)

    INNER JOIN `Personas` 

        ON (`CamaraColaboradores`.`personaID` = `Personas`.`personaID`)

    INNER JOIN `CamaraColaboradores` AS `JefeInmediato`

        ON (`CamaraColaboradores`.`colaboradorJEFEINMEDIATO` = `JefeInmediato`.`colaboradorID`)

    INNER JOIN `Personas` AS `DatosJefeInmediato`

        ON (`JefeInmediato`.`personaID` = `DatosJefeInmediato`.`personaID`)

    LEFT JOIN `Personas` AS `DatosAutorizo`

        ON (`Autorizo`.`personaID` = `DatosAutorizo`.`personaID`)  

            

sql;



    public static function datosCompletos($permisoID) {

        $sqlQuery = self::$sqlDatosCompletos . " WHERE ColaboradoresPermisos.permisoID = ? ";

        return SicamDB::selectUnaFila($sqlQuery, array($permisoID));

    }



    public static function delColaborador($colaboradorID, $permisoESTADO = self::AUTORIZADO) {

        $sqlQuery = self::$sqlDatosCompletos . " WHERE ColaboradoresPermisos.colaboradorID = ? "

            . "and ColaboradoresPermisos.permisoESTADO = ? ";

        return SicamDB::selectVariasFilas($sqlQuery,

                array($colaboradorID, $permisoESTADO));

    }



    public static function autorizacion($colaborador, $permisoID, $permisoESTADO = self::AUTORIZADO) {

        $sqlQuery = "UPDATE ColaboradoresPermisos "

            . "SET ColaboradoresPermisos.permisoESTADO = ?, "

            . "permisoFCHAUTORIZACION = CURRENT_TIMESTAMP, "

            . "colaboradorAUTORIZA = ? "

            . "WHERE ColaboradoresPermisos.permisoID = ?";

        return SicamDB::actualizarFila($sqlQuery,

                array($permisoESTADO, $colaborador, $permisoID));

    }



    public static function cancelacion($permisoID) {

        $sqlQuery = "UPDATE ColaboradoresPermisos "

            . "SET ColaboradoresPermisos.permisoESTADO = ?, "

            . "permisoFCHCANCELADO = CURRENT_TIMESTAMP "

            . "WHERE ColaboradoresPermisos.permisoID = ?";

        return SicamDB::actualizarFila($sqlQuery,

                array(self::CANCELADO, $permisoID));

    }



    public static function nousar($permisoID, $justificacion) {

        $sqlQuery = "UPDATE ColaboradoresPermisos "

            . "SET ColaboradoresPermisos.permisoESTADO = ?, "

            . "permisoFCHCERRADO = CURRENT_TIMESTAMP, "

            . "permisoPORQUENOUSO = ?"

            . "WHERE ColaboradoresPermisos.permisoID = ?";

        return SicamDB::actualizarFila($sqlQuery,

                array(self::NOUSADO, $justificacion, $permisoID));

    }



    public static function cerrar($permisoID) {

        $sqlQuery = "UPDATE ColaboradoresPermisos "

            . "SET ColaboradoresPermisos.permisoESTADO = ?, "

            . "permisoFCHCERRADO = CURRENT_TIMESTAMP "

            . "WHERE ColaboradoresPermisos.permisoID = ?";

        return SicamDB::actualizarFila($sqlQuery,

                array(self::CERRADO, $permisoID));

    }



    public static function correoAutorizacion($OBJPermiso, $idAutoriza, $emailAutoriza, $nombreAutoriza) {



        $variables = array('%%LOGOCCSM%%');

        $datos = array(Parametros::valor('LOGOCCSM'));

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'cabeza-correos.html');

        $htmlMensaje = str_replace(

            $variables, $datos, $htmlContenido

        );





        $variables = array(

         '%%LOGOCCSM%%', '%%NOMBRECOLABORADOR%%', '%%APELLIDOCOLABORADOR%%',

         '%%FECHAPERMISO%%', '%%MOTIVOPERMISO%%', '%%JUSTIFICACIONPERMISO%%',

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%',

         '%%URLAUTORIZAR%%', '%%URLNOAUTORIZAR%%'

        );

        $datos = array(

         Parametros::valor('LOGOCCSM'), htmlspecialchars($OBJPermiso->personaNOMBRES),

         htmlspecialchars($OBJPermiso->personaAPELLIDOS), $OBJPermiso->permisoFCHPERMISO,

         htmlspecialchars($OBJPermiso->permisoMotivoTITULO), htmlspecialchars($OBJPermiso->permisoJUSTIFICACION),

         date('Y-m-d h:i:s'), $emailAutoriza, $nombreAutoriza,

         Parametros::valor('URLAUTORIZARPERMISO') . $idAutoriza . WS . $OBJPermiso->permisoID,

         Parametros::valor('URLNOAUTORIZARPERMISO') . $idAutoriza . WS . $OBJPermiso->permisoID

        );

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'permisos/autorizacion.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );





        $variables = array('%%URLAUTORIZAR%%', '%%URLNOAUTORIZAR%%');

        $datos = array(

         Parametros::valor('URLAUTORIZARPERMISO') . $idAutoriza . WS . $OBJPermiso->permisoID,

         Parametros::valor('URLNOAUTORIZARPERMISO') . $idAutoriza . WS . $OBJPermiso->permisoID

        );

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'permisos/btn-autorizacion.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );







        $variables = array(

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%'

        );

        $datos = array(

         date('Y-m-d h:i:s'), $emailAutoriza, $nombreAutoriza);

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'pie-correos.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );



        return $htmlMensaje;

    }



    public static function correoSolicitud($OBJPermiso) {



        $variables = array('%%LOGOCCSM%%');

        $datos = array(Parametros::valor('LOGOCCSM'));

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'cabeza-correos.html');

        $htmlMensaje = str_replace(

            $variables, $datos, $htmlContenido

        );





        $variables = array(

         '%%LOGOCCSM%%', '%%FECHASOLICITUD%%', '%%NOMBRECOLABORADOR%%', '%%APELLIDOCOLABORADOR%%',

         '%%FECHAPERMISO%%', '%%MOTIVOPERMISO%%', '%%JUSTIFICACIONPERMISO%%',

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%',

         '%%URLCANCELARPERMISO%%'

        );

        $datos = array(

         Parametros::valor('LOGOCCSM'), $OBJPermiso->permisoFCHPERMISO,

         htmlspecialchars($OBJPermiso->personaNOMBRES), htmlspecialchars($OBJPermiso->personaAPELLIDOS),

         $OBJPermiso->permisoFCHPERMISO, htmlspecialchars($OBJPermiso->permisoMotivoTITULO),

         htmlspecialchars($OBJPermiso->permisoJUSTIFICACION),

         date('Y-m-d h:i:s'), $OBJPermiso->colaboradorEMAIL, $OBJPermiso->personaNOMBRES . " " . $OBJPermiso->personaAPELLIDOS,

         Parametros::valor('URLCANCELARPERMISO') . $OBJPermiso->permisoID

        );

        //$htmlContenido = Archivos::leer_archivo("correos" . DIRECTORY_SEPARATOR . "autorizacion.html.php");

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'permisos/solicitud.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );



        $variables = array('%%URLCANCELARPERMISO%%');

        $datos = array(

         Parametros::valor('URLCANCELARPERMISO') . $OBJPermiso->permisoID

        );

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'permisos/btn-solicitud.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );





        $variables = array(

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%'

        );

        $datos = array(

         date('Y-m-d h:i:s'), $OBJPermiso->colaboradorEMAIL, $OBJPermiso->personaNOMBRES . " " . $OBJPermiso->personaAPELLIDOS,

        );

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'pie-correos.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );



        return $htmlMensaje;

    }



    public static function correoRespuestaAutorizacion($OBJPermiso) {

        $variables = array('%%LOGOCCSM%%');

        $datos = array(Parametros::valor('LOGOCCSM'));

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'cabeza-correos.html');

        $htmlMensaje = str_replace(

            $variables, $datos, $htmlContenido

        );



        $variables = array(

         '%%LOGOCCSM%%', '%%FECHASOLICITUD%%', '%%NOMBRECOLABORADOR%%', '%%APELLIDOCOLABORADOR%%',

         '%%FECHAPERMISO%%', '%%MOTIVOPERMISO%%', '%%JUSTIFICACIONPERMISO%%',

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%',

         '%%URLCANCELARPERMISO%%', '%%URLCERRARPERMISO%%', '%%ESTADOPERMISO%%'

        );

        $datos = array(

         Parametros::valor('LOGOCCSM'), $OBJPermiso->permisoFCHPERMISO,

         htmlspecialchars($OBJPermiso->personaNOMBRES), htmlspecialchars($OBJPermiso->personaAPELLIDOS),

         $OBJPermiso->permisoFCHPERMISO, htmlspecialchars($OBJPermiso->permisoMotivoTITULO),

         htmlspecialchars($OBJPermiso->permisoJUSTIFICACION),

         date('Y-m-d h:i:s'), $OBJPermiso->colaboradorEMAIL, $OBJPermiso->personaNOMBRES . " " . $OBJPermiso->personaAPELLIDOS,

         Parametros::valor('URLCANCELARPERMISO') . $OBJPermiso->permisoID,

         Parametros::valor('URLCERRARPERMISO') . $OBJPermiso->permisoID,

         $OBJPermiso->permisoESTADO

        );

        //$htmlContenido = Archivos::leer_archivo("correos" . DIRECTORY_SEPARATOR . "autorizacion.html.php");

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'permisos/respuesta-autorizacion.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );



        if ($OBJPermiso->permisoESTADO == Permisos::AUTORIZADO) {

            $variables = array('%%URLCANCELARPERMISO%%', '%%URLCERRARPERMISO%%');

            $datos = array(

             Parametros::valor('URLCANCELARPERMISO') . $OBJPermiso->permisoID,

             Parametros::valor('URLCERRARPERMISO') . $OBJPermiso->permisoID

            );

            $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'permisos/btn-respuesta-autorizacion.html');

            $htmlMensaje .= str_replace(

                $variables, $datos, $htmlContenido

            );

        }



        $variables = array(

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%'

        );

        $datos = array(

         date('Y-m-d h:i:s'), $OBJPermiso->colaboradorEMAIL, $OBJPermiso->personaNOMBRES . " " . $OBJPermiso->personaAPELLIDOS

        );

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'pie-correos.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );



        return $htmlMensaje;

    }



    public static function correoCerrado($OBJPermiso, $idAutoriza, $emailAutoriza, $nombreAutoriza) {



        $variables = array('%%LOGOCCSM%%');

        $datos = array(Parametros::valor('LOGOCCSM'));

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'cabeza-correos.html');

        $htmlMensaje = str_replace(

            $variables, $datos, $htmlContenido

        );



        $variables = array(

         '%%LOGOCCSM%%', '%%FECHASOLICITUD%%', '%%NOMBRECOLABORADOR%%', '%%APELLIDOCOLABORADOR%%',

         '%%FECHAPERMISO%%', '%%MOTIVOPERMISO%%', '%%JUSTIFICACIONPERMISO%%',

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%',

         '%%URLCANCELARPERMISO%%', '%%URLCERRARPERMISO%%', '%%ESTADOPERMISO%%'

        );

        $datos = array(

         Parametros::valor('LOGOCCSM'), $OBJPermiso->permisoFCHPERMISO,

         htmlspecialchars($OBJPermiso->personaNOMBRES), htmlspecialchars($OBJPermiso->personaAPELLIDOS),

         $OBJPermiso->permisoFCHPERMISO, htmlspecialchars($OBJPermiso->permisoMotivoTITULO),

         htmlspecialchars($OBJPermiso->permisoJUSTIFICACION),

         date('Y-m-d h:i:s'), $emailAutoriza, $nombreAutoriza,

         Parametros::valor('URLCANCELARPERMISO') . $OBJPermiso->permisoID,

         Parametros::valor('URLCERRARPERMISO') . $OBJPermiso->permisoID,

         $OBJPermiso->permisoESTADO

        );

        //$htmlContenido = Archivos::leer_archivo("correos" . DIRECTORY_SEPARATOR . "autorizacion.html.php");

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . '/permisos/respuesta-cerrado.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );



        $variables = array(

         '%%FECHAENVIOCORREO%%', '%%EMAILCOLABORADORENVIO%%', '%%NOMBRECOLABORADORENVIO%%'

        );

        $datos = array(

         date('Y-m-d h:i:s'), $emailAutoriza, $nombreAutoriza);

        $htmlContenido = file_get_contents(DIR_TMPLCORREOS . 'pie-correos.html');

        $htmlMensaje .= str_replace(

            $variables, $datos, $htmlContenido

        );



        return $htmlMensaje;

    }



}


