<?php
/* 
Cambia de estado la reposición
 */
$pag = "../reposiciones_crear.php";
$ruta = "../";
require_once "../class/c_login.php";
require_once "../class/mailer.php";

define("COORDINADOR", 9);
define("SUPERVISOR", 7);
define("ENVIO_CORREOS", true);

// check if the session is started
if (!isset($_SESSION['user']))
    die('No se ha iniciado sesión');

$user = unserialize($_SESSION['user']);

$pag = "../reposiciones_autorizar.php";


if(!isset($_POST["id"]) || !isset($_POST["edo"]) ){
    header("Location: ".$pag."?error=0");
    exit();
}

$id_repo = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);//limpia texto
$edo = filter_input(INPUT_POST, "edo", FILTER_SANITIZE_NUMBER_INT);//limpia texto
$tipo = filter_input(INPUT_POST, "tipo", FILTER_SANITIZE_NUMBER_INT);//limpia texto
if(isset($_POST["salon"]) && $_POST["salon"] != "")
    $salon = filter_input(INPUT_POST, "salon", FILTER_SANITIZE_NUMBER_INT);//limpia texto
//--------------

//Obtiene datos de salón asignado
$salon_desc = "Pendiente";
if(!empty($salon)){
    $salon_rs = $db->querySingle('SELECT s.salon_id, s.salon_array FROM salon_view s where s.salon_id  = :id_salon',
            [':id_salon' => $salon]
        );
    if($salon_rs["salon_id"] == "" || $salon_rs["salon_id"] == NULL){
        $salon_desc = "Pendiente";
    }else{
        $salon_json = json_decode($salon_rs["salon_array"], true);
        if($salon_json[0]== "UNIVERSIDAD LA SALLE"){
            unset($salon_json[0]);
        }
        $salon_desc = join(" / ",$salon_json);
    }
}


if($tipo ==1 || $tipo == 2){
    //--------------
    //Obtiene datos reposición
    $reposicion_rs = $db->querySingle('SELECT h.materia, r.fecha_nueva, r.hora_nueva, r.fecha_clase, r.descripcion, h.horario_hora, h.facultad_id,  h.facultad, f.clave_dependencia, r.motivo_cancelacion, ta.tipoaula_supervisor , ta.tipoaula_nombre 
        from reposicion_solicitud r
        inner join horario_view h on h.horario_id = r.horario_id 
        inner join facultad f on f.facultad_id = h.facultad_id
        inner join tipoaula ta on ta.tipoaula_id = r.tipoaula_id
        where r.reposicion_solicitud_id = :id_repo',
                [':id_repo' => $id_repo]
            );

    //Obtiene correos
    $correos_rs = $db->query('SELECT p.profesor_nombre, p.profesor_correo, u.usuario_nombre as jefe_nombre, u.usuario_correo as jefe_correo,
            coor.usuario_nombre as coordinador_nombre, coor.usuario_correo as coordinador_correo 
            from reposicion_solicitud rs 
            inner join profesor p on rs.profesor_id =p.profesor_id 
            inner join usuario u on u.usuario_id = rs.usuario_id
            inner join horario_view hv on hv.horario_id  = rs.horario_id 
            inner join usuario coor on hv.facultad_id = coor.facultad_id and coor.rol_id = :rol_coord
            where rs.reposicion_solicitud_id = :id_repo',
                [':rol_coord' => COORDINADOR, ':id_repo' => $id_repo]
            );
    //print_r($correos_rs);  exit();
}else{
    //Obtiene datos asignación
    $reposicion_rs = $db->querySingle('SELECT r.fecha_nueva, r.hora_nueva, r.descripcion, f.facultad_id, f.facultad_nombre as facultad, f.clave_dependencia, r.motivo_cancelacion, ta.tipoaula_supervisor , ta.tipoaula_nombre, p.profesor_nombre
        from asignacion_solicitud r
        inner join usuario u on u.usuario_id = r.usuario_id
        inner join facultad f on f.facultad_id = u.facultad_id
        inner join tipoaula ta on ta.tipoaula_id = r.tipoaula_id
        inner join profesor p on p.profesor_id = r.profesor_id
        where r.asignacion_solicitud_id = :id_repo',
                [':id_repo' => $id_repo]
            );

    //Obtiene correos
    $correos_rs = $db->query('SELECT p.profesor_nombre, p.profesor_correo, NULL as jefe_nombre, NULL as jefe_correo,
            coor.usuario_nombre as coordinador_nombre, coor.usuario_correo as coordinador_correo 
            from asignacion_solicitud rs 
            inner join profesor p on rs.profesor_id =p.profesor_id 
            inner join usuario u on u.usuario_id = rs.usuario_id
            inner join usuario coor on u.facultad_id = coor.facultad_id and coor.rol_id = :rol_coord
            where rs.asignacion_solicitud_id = :id_repo',
                [':rol_coord' => COORDINADOR, ':id_repo' => $id_repo]
            );

}
        
$prof_correos=array();
$jefe_correos=[];
$coord_correos=[];
        
foreach($correos_rs as $correo){
    if( count($prof_correos)==0 && $correo["profesor_correo"]!=""){
        if( !isset($prof_correos["correo"]) || !in_array($correo["profesor_correo"], $prof_correos["correo"]) ){
            array_push($prof_correos, $correo["profesor_correo"]);
        }
    }
    if( count($jefe_correos)==0 && $correo["jefe_correo"]!=""){
        if(!isset($jefe_correos["correo"]) || !in_array($correo["jefe_correo"], $jefe_correos["correo"])){
            array_push($jefe_correos, $correo["jefe_correo"]);
        }
    }
    if( count($coord_correos)==0 && $correo["coordinador_correo"]!=""){
        if(!isset($coord_correos["correo"]) || !in_array($correo["coordinador_correo"], $coord_correos["correo"])){
            array_push($coord_correos, $correo["coordinador_correo"]);
        }
    }
}

$correosSup_rs = $db->query("SELECT DISTINCT sup.usuario_correo as supervisor_correo
    FROM horario_supervisor hs
    inner join usuario sup on sup.usuario_id =hs.usuario_id 
    where :facultad = ANY(hs.facultad_id_array)",
    [':facultad'=>$reposicion_rs["facultad_id"]] );

$sup_correos=[];
foreach($correosSup_rs as $correo){
    array_push($sup_correos, $correo["supervisor_correo"]);
}


if($tipo ==1 || $tipo == 2){
    if($edo == 4){//cancelación
        $motivo = "";
        if(isset($_POST["motivo"]) && $_POST["motivo"] != "")
            $motivo = trim($_POST["motivo"]);
        $db->querySingle('SELECT fu_reposicion_cancela(:id, :motivo)',
            [':id' => $id_repo, ':motivo' => $motivo]
        );
    }else{
        if(!empty($salon)){
            $db->querySingle('SELECT fu_reposicion_solicitud(:id, NULL, NULL, NULL, :sal, :edo, NULL, NULL, NULL, NULL)',
                [':id' => $id_repo, ':sal' => $salon, ':edo' => $edo]
            );
        }else{
            $db->querySingle('SELECT fu_reposicion_solicitud(:id, NULL, NULL, NULL, NULL, :edo, NULL, NULL, NULL, NULL)',
                [':id' => $id_repo, ':edo' => $edo]
            );
        }
    }

    $fecha_clase = date('d/m/Y', strtotime($reposicion_rs["fecha_clase"]));
    $fecha_nueva = date('d/m/Y', strtotime($reposicion_rs["fecha_nueva"]));
    $hora_tmp = explode(":",$reposicion_rs["horario_hora"]);
    $hora_clase = $hora_tmp[0].":".$hora_tmp[1];
    $hora_tmp = explode(":",$reposicion_rs["hora_nueva"]);
    $hora_nueva = $hora_tmp[0].":".$hora_tmp[1];

    $asunto = "";
    $texto = "";
    $to = "";
    switch($edo){
        case 2://Correo a supervisor
            $asunto = "Reposición nueva - ".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"];
            //crear plantilla
            $texto = "<p>Se creó una reposición nueva para: <b>".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"]."</b>.</p>";
            $texto .= "<p><b>".mb_strtoupper($reposicion_rs["materia"])."</b> del día <b>".$fecha_clase." a las ".$hora_clase." hrs. </b> se propone reponer el <b>".$fecha_nueva." a las ".$hora_nueva." hrs.</b>";
            if(!$reposicion_rs["tipoaula_supervisor"]){
                $texto .= " en el salón: <b>".$salon_desc."</b></p>";
            }else{
                $texto .= " en un salón de tipo: <b>".$reposicion_rs["tipoaula_nombre"]."</b></p>";
            }
            $texto .= "<p style='font-style:italic; padding-left:25px'>".$reposicion_rs["descripcion"]."</p>";
            $texto .= "<p>Ingresa al <a href='https://paad.lci.ulsa.mx'>sistema PAAD</a> para autorizarla.</p>";
            $to = join(",", $sup_correos);
            $ok = 0;
        break;
        case 3://Correo a coordinador, profesor y jefe
            $asunto = "Reposición autorizada - ".$reposicion_rs["materia"];
            $texto = "<p>La resposición de la clase de <b>".$reposicion_rs["materia"]."</b> del día <b>".$fecha_clase." a las ".$hora_clase." hrs. </b> está autorizada para realizarse el día <b>".$fecha_nueva." a las ".$hora_nueva." hrs. en: $salon_desc</b></p>";
            $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
            $ok = 0;
            $db->querySingle('SELECT fu_reposicion_solicitud_supervisor(:id, :sup)',
                [':id' => $id_repo, ':sup'=>$user->user["id"]]
            );
        break;
        case 4://Correo a coordinador, profesor y jefe
            $asunto = "Reposición declinada - ".$reposicion_rs["materia"];
            $texto = "<p>La resposición de la clase de <b>".$reposicion_rs["materia"]." planeada para el día ".$fecha_nueva." a las ".$hora_nueva." hrs.</b> ha sido declinada por el siguiente motivo:</p>";
            $texto .= "<p style='font-style:italic; padding-left:25px'>".$motivo."</p>";
            $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
            $ok = 1;
            $db->querySingle('SELECT fu_reposicion_solicitud_supervisor(:id, :sup)',
                [':id' => $id_repo, ':sup'=>$user->user["id"]]
            );
        break;
    }
}else{
    if($edo == 4){//cancelación
        $motivo = "";
        if(isset($_POST["motivo"]) && $_POST["motivo"] != "")
            $motivo = trim($_POST["motivo"]);
        $db->querySingle('SELECT fu_asignacion_cancela(:id, :motivo)',
            [':id' => $id_repo, ':motivo' => $motivo]
        );
    }else{
        if(!empty($salon)){
            $db->querySingle('SELECT fu_asignacion_solicitud(:id, NULL, NULL, :sal, :edo, NULL, NULL, NULL, NULL, NULL)',
                [':id' => $id_repo, ':sal' => $salon, ':edo' => $edo]
            );
        }else{
            $db->querySingle('SELECT fu_asignacion_solicitud(:id, NULL, NULL, NULL, :edo, NULL, NULL, NULL, NULL, NULL)',
                [':id' => $id_repo, ':edo' => $edo]
            );
        }
    }
    
    $fecha_nueva = date('d/m/Y', strtotime($reposicion_rs["fecha_nueva"]));
    $hora_tmp = explode(":",$reposicion_rs["hora_nueva"]);
    $hora_nueva = $hora_tmp[0].":".$hora_tmp[1];

    $asunto = "";
    $texto = "";
    $to = "";
    switch($edo){
        case 2://Correo a supervisor
            $asunto = "Asignación nueva - ".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"];
            //crear plantilla
            $texto = "<p>Se creó una solicitud de asignación nueva para: <b>".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"]."</b>.</p>";
            $texto .= "<p>Se solicita el día <b>".$fecha_nueva." a las ".$hora_nueva." hrs.</b> para el profesor: <b>".$reposicion_rs["profesor_nombre"]."</b>.";
            if(!$reposicion_rs["tipoaula_supervisor"]){
                $texto .= " en el salón: <b>".$salon_desc."</b></p>";
            }else{
                $texto .= " en un salón de tipo: <b>".$reposicion_rs["tipoaula_nombre"]."</b></p>";
            }
            $texto .= "<p style='font-style:italic; padding-left:25px'>".$reposicion_rs["descripcion"]."</p>";
            $texto .= "<p>Ingresa al <a href='https://paad.lci.ulsa.mx'>sistema PAAD</a> para autorizarla.</p>";
            $to = join(",", $sup_correos);
            $ok = 0;
        break;
        case 3://Correo a coordinador, profesor y jefe
            $asunto = "Asignación autorizada - ".$reposicion_rs["profesor_nombre"];
            $texto = "<p>La asignación de espacio para el profesor <b>".$reposicion_rs["profesor_nombre"]."</b> está autorizada para realizarse el día <b>".$fecha_nueva." a las ".$hora_nueva." hrs. en: $salon_desc</b></p>";
            $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
            $ok = 0;
            $db->querySingle('SELECT fu_asignacion_solicitud_supervisor(:id, :sup)',
                [':id' => $id_repo, ':sup'=>$user->user["id"]]
            );
        break;
        case 4://Correo a coordinador, profesor y jefe
            $asunto = "Asignación declinada - ".$reposicion_rs["profesor_nombre"];
            $texto = "<p>La asignación de espacio para el profesor <b>".$reposicion_rs["profesor_nombre"]."</b> planeada para el día ".$fecha_nueva." a las ".$hora_nueva." hrs.</b> ha sido declinada por el siguiente motivo:</p>";
            $texto .= "<p style='font-style:italic; padding-left:25px'>".$motivo."</p>";
            $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
            $ok = 1;
            $db->querySingle('SELECT fu_asignacion_solicitud_supervisor(:id, :sup)',
                [':id' => $id_repo, ':sup'=>$user->user["id"]]
            );
        break;
    }
}


if($to!= "" && ENVIO_CORREOS){
    $texto = '<body >
            <img src="https://paad.lci.ulsa.mx/imagenes/logo_lasalle.png" alt="La Salle" style="margin-bottom:60px">
            '.$texto.'
        </body>';
    
    require_once('../include/phpmailer/PHPMailerAutoload.php');
    if($_ENV['DB_NAME'] == "paad_pruebas"){
        $asunto = "PRUEBAS-".$asunto;
        Mailer::enviarCorreo("alejandro.lara@lasalle.mx", $asunto, $texto, true);
    }else{
        Mailer::enviarCorreo($to, $asunto, $texto, true);
    }
}

/*
$log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
*/
header("Location: ".$pag."?ok=".$ok);
exit();
?>
