浏览代码

Crear solicitudes y envío de correos

alejandro.lara 1 年之前
父节点
当前提交
0308d5c42e
共有 4 个文件被更改,包括 231 次插入124 次删除
  1. 119 118
      action/solicitud_insert.php
  2. 84 0
      class/manda_correo.php
  3. 20 2
      rest/horarios.php
  4. 8 4
      solicitud_crear.php

+ 119 - 118
action/solicitud_insert.php

@@ -50,7 +50,7 @@ $duracion_rs = $db->querySingle("select * from duracion where duracion_id = :id"
 $duracion_tiempo = $duracion_rs["duracion_interval"];
 
 //-- Obtiene datos de horario regular de clase
-if($horario!= null)
+if($horario!= null && $tipo !=3)
 {
     $horario_rs = $db->querySingle('SELECT * from horario_view where horario_id = :hor',
         [':hor' => $horario]
@@ -58,140 +58,141 @@ if($horario!= null)
     
     $materia = $horario_rs["materia_id"];
     $dia = $horario_rs["horario_dia"];
+    $hora_orig = $horario_rs["horario_hora"];
 }else{
     $dia = date('w', strtotime($fecha));
 }
 
 $hora = $hora_ini.":".$min_ini.":00";
 
+switch($tipo){
+    case 1://Reposición
+        $fecha_new =  DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d')." ".$hora;
+        $fecha_fin_new = date("Y-m-d", strtotime($fecha_new))." ".$duracion_tiempo;
+        $dia_new = date('w', strtotime($fecha_new));
 
-if($tipo == 2){//Cambio
-    $fecha_cambio = DateTime::createFromFormat('d/m/Y', $fecha_cambio)->format('Y-m-d');
-    $dia_falta = date('w', strtotime($fecha_cambio));
-}else{
-    $fecha_new =  DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d')." ".$hora;
-    $fecha_fin_new = date("Y-m-d", strtotime($fecha_new))." ".$duracion_tiempo;
-    $dia_new = date('w', strtotime($fecha_new));
-
-    $fecha_falta = DateTime::createFromFormat('d/m/Y', $fecha_falta)->format('Y-m-d');
-    $dia_falta = date('w', strtotime($fecha_falta));
+        $fecha_falta = DateTime::createFromFormat('d/m/Y', $fecha_falta)->format('Y-m-d');
+        $dia_falta = date('w', strtotime($fecha_falta)); 
+        
+        //Valida que tenga clase en la fecha de falta
+        if(intval($dia) != intval($dia_falta)){
+            header("Location:".$pag."?error=11");
+            /*print_r($_POST);
+            echo 'SELECT * from horario_view where horario_id = '.$horario;
+            echo intval($dia)." != ".intval($dia_falta);*/
+            exit();
+        }
+        $fecha_nueva = date('d/m/Y', strtotime($fecha_new));
+        $fecha_clase = date('d/m/Y', strtotime($fecha_falta));
+    break;
+    case 2://Cambio
+        $fecha_cambio = DateTime::createFromFormat('d/m/Y', $fecha_cambio)->format('Y-m-d');
+        $dia_falta = date('w', strtotime($fecha_cambio));
+        $fecha_nueva = date('d/m/Y', strtotime($fecha_cambio));
+    break;
+    case 3://Solicitud de espacio
+        $fecha_new =  DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d')." ".$hora;
+        $fecha_fin_new = date("Y-m-d", strtotime($fecha_new))." ".$duracion_tiempo;
+        $dia_new = date('w', strtotime($fecha_new));
+        $fecha_nueva = date('d/m/Y', strtotime($fecha_new));
+    break;
+    case 4://Cambio permanente
+        $fecha_new =  DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d')." ".$hora;
+        $fecha_fin_new = date("Y-m-d", strtotime($fecha_new))." ".$duracion_tiempo;
+        $dia_new = date('w', strtotime($fecha_new));
+
+        $fecha_cambio = DateTime::createFromFormat('d/m/Y', $fecha_cambio)->format('Y-m-d');
+        $dia_falta = date('w', strtotime($fecha_cambio));
+
+        $fecha_nueva = date('d/m/Y', strtotime($fecha_new));
+        $fecha_clase = date('d/m/Y', strtotime($fecha_cambio));
+    break;
 }
 
-
-//Valida que tenga clase en la fecha de falta
-if(intval($dia) != intval($dia_falta)){
-    header("Location:".$pag."?error=11");
-    /*print_r($_POST);
-    echo 'SELECT * from horario_view where horario_id = '.$horario;
-    echo intval($dia)." != ".intval($dia_falta);*/
-    exit();
+if($materia!= null && $tipo !=3){
+    //Obtiene materia
+    $materia_rs = $db->querySingle('SELECT materia_nombre  from materia where materia_id = :mat',[':mat' => $materia]);
 }
 
-//Obtiene materia
-$materia_rs = $db->querySingle('SELECT materia_nombre  from materia where materia_id = :mat',[':mat' => $materia]);
 
-//Obtiene correo
-$correos_rs = $db->querySingle('SELECT coor.usuario_correo, coor.usuario_nombre  from usuario coor where rol_id = :rol_coord and facultad_id = (
-	select coalesce(facultad_id,0) from usuario u where u.usuario_id = :id_usr) and coor.usuario_correo != \'\'',[':rol_coord' => COORDINADOR, ':id_usr' => $user->user["id"]]
-);
-if( count($correos_rs) > 0 ){
-    $to = $correos_rs["usuario_correo"];
-}
+switch($tipo){
+    case 1://Reposición
+        $traslape = $db->querySingle('SELECT * from traslape_profesor_reposicion(:prof, :fecha, :hora, :dur)',
+            [':prof' => $prof, ':fecha'=>DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d'), ':hora'=>$hora, ':dur'=>$duracion_tiempo]
+        )["traslape_profesor_reposicion"];
+        if($traslape){
+            //print_r($_POST);
+            //echo "SELECT * from traslape_profesor_reposicion($prof,'".DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d')."' , '$hora', $duracion)";            
+            header("Location:".$pag."?error=9");
+            exit();
+        }
 
-if($tipo == 1){//Reposición
-    // Valida que grupo no tenga clases
-    /*$result = validaConflictoHoras($pdo, $gpo, $dia_new, $hora, $materia, "-", $fecha_new, $fecha_fin_new, $duracion);
-    if($result != ""){//error
-        //echo $result;
-        header("Location:".$pag."?error=7");
-        exit();
-    }
-    */
-    //Valida que profesor no este en 2 reposiciones al mismo tiempo en la fecha nueva
-    
-    $traslape = $db->querySingle('SELECT * from traslape_profesor_reposicion(:prof, :fecha, :hora, :dur)',
-        [':prof' => $prof, ':fecha'=>DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d'), ':hora'=>$hora, ':dur'=>$duracion_tiempo]
-    )["traslape_profesor_reposicion"];
-    if($traslape){
-        //print_r($_POST);
-        //echo "SELECT * from traslape_profesor_reposicion($prof,'".DateTime::createFromFormat('d/m/Y', $fecha)->format('Y-m-d')."' , '$hora', $duracion)";
+        $db_params=[
+            ":f_falta"=>$fecha_falta, ":f_nueva"=>$fecha_new, ":hora_nueva"=>$hora, ":prof"=>$prof, ":desc"=>$comentario,
+            ":edo"=>1, ":alumnos"=>$alumnos, ":aula"=>$aula, ":solicitudtipo"=>$tipo, ":usr"=>$user->user["id"],
+            ":duracion"=>$duracion_tiempo, ":hor"=>$horario, ":bloque"=>$bloque, ":ciclo"=>$ciclo
+        ];
+        $asunto = "Solicitud - Reposición nueva";
+        $texto = "<p>Se creó un cambio de salón nuevo.</p>";
+        $texto .= "<p><b>".mb_strtoupper($materia_rs["materia_nombre"])."</b> del día <b>".$fecha_falta." a las ".$hora_orig." hrs. </b> se propone reponer el <b>".$fecha_nueva." a las ".$hora." hrs.</b>";
         
-        header("Location:".$pag."?error=9");
-        exit();
-    }
-
-    try{
-        if($user->jefe_carrera){//jefe
-            $db->query('SELECT * from fi_reposicion_solicitud(:f_falta, :f_nueva, :hora_nueva, :hor, :prof, 1, :desc, :alumnos, true, :aula, :duracion, :usr, :bloque, :ciclo)',
-                [':f_falta' => $fecha_falta, ':f_nueva' => $fecha_new, ':hora_nueva' => $hora, ':hor' => $horario,
-                ':prof' => $prof, ':desc' => $comentario, ':alumnos' => $alumnos, ':aula' => $aula, ':duracion' => $duracion_tiempo, ':usr'=>$user->user["id"],
-                ':bloque' => $bloque, ':ciclo' => $ciclo
-                ]
-            );
-            
-        }else{//coordinador
-            echo 'SELECT * from fi_reposicion_solicitud(:f_falta, :f_nueva, :hora_nueva, :hor, :prof, 2, :desc, :alumnos, true, :aula, :duracion, :usr, :bloque, :ciclo, '.$salon.')';
-            $db->query('SELECT * from fi_reposicion_solicitud(:f_falta, :f_nueva, :hora_nueva, :hor, :prof, 2, :desc, :alumnos, true, :aula, :duracion, :usr, :bloque, :ciclo, :salon)',
-                [':f_falta' => $fecha_falta, ':f_nueva' => $fecha_new, ':hora_nueva' => $hora, ':hor' => $horario,
-                ':prof' => $prof, ':desc' => $comentario, ':alumnos' => $alumnos, ':aula' => $aula, ':duracion' => $duracion_tiempo, ':usr'=>$user->user["id"],
-                ':bloque' => $bloque, ':ciclo' => $ciclo, ':salon'=>$salon
-                ]
-            );
-        }
-    }catch(Exception $e){
+        /*
+        $log = new LogActividad();
+        $desc_log = "Inserta reposición nueva ID[".$rs["fi_reposicion"]."] Fechas[".$fecha_falta.">".$fecha_new."] Periodo[".$_SESSION["periodo_id"]."] Materia[".$materia."] Profesor[".$prof."] Salon[".$salon."] Horario[".$horario."] Alumnos[".$alumnos."]";
+        $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);*/
+    break;
+    case 2:
+        $db_params=[
+            ":f_falta"=>$fecha_cambio, ":f_nueva"=>$fecha_cambio, ":hora_nueva"=>$hora, ":prof"=>$prof, ":desc"=>$comentario,
+            ":edo"=>1, ":alumnos"=>$alumnos, ":aula"=>$aula, ":solicitudtipo"=>$tipo, ":usr"=>$user->user["id"],
+            ":duracion"=>$duracion_tiempo, ":hor"=>$horario, ":bloque"=>$bloque, ":ciclo"=>$ciclo
+        ];
+        $asunto = "Solicitud - Cambio de salón";
+        $texto = "<p>Se creó una solicitud de cambio de salón nuevo.</p>";
+        $texto .= "<p>El día <b>".$fecha_nueva." a las ".$hora." hrs. </b>";
         
-        echo "ERROR Reposición<br>".$e->getMessage();
-        //header("Location: ".$pag."?error=1");
-        exit();
-    }
-    $fecha_clase = date('d/m/Y', strtotime($fecha_falta));
-    $fecha_nueva = date('d/m/Y', strtotime($fecha_new));
-    $texto = "<p>Se creó una reposición nueva.</p>";
-    $texto .= "<p><b>".mb_strtoupper($materia_rs["materia_nombre"])."</b> del día <b>".$fecha_clase." a las ".$horario_rs["horario_hora"]." hrs. </b> se propone reponer el <b>".$fecha_nueva." a las ".$hora." hrs.</b>";
-    $texto .= "<p>Ingresa al <a href='https://paad.lci.ulsa.mx'>sistema PAAD</a> para autorizarla.</p>";
-    
-/*
-    $log = new LogActividad();
-    $desc_log = "Inserta reposición nueva ID[".$rs["fi_reposicion"]."] Fechas[".$fecha_falta.">".$fecha_new."] Periodo[".$_SESSION["periodo_id"]."] Materia[".$materia."] Profesor[".$prof."] Salon[".$salon."] Horario[".$horario."] Alumnos[".$alumnos."]";
-    $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);*/
-
-    
-}else{//Cambio salón / hora
-    
-    try{
-        if($user->jefe_carrera){//jefe
-            $db->query('SELECT * from fi_reposicion_solicitud(:f_falta, :f_nueva, :hora_nueva, :hor, :prof, 1, :desc, :alumnos, false, :aula, :duracion, :usr, :bloque, :ciclo)',
-                [':f_falta' => $fecha_cambio, ':f_nueva' => $fecha_cambio, ':hora_nueva' => $hora, ':hor' => $horario,
-                ':prof' => $prof, ':desc' => $comentario, ':alumnos' => $alumnos, ':aula' => $aula, ':duracion' => $duracion_tiempo, ':usr'=>$user->user["id"],
-                ':bloque' => $bloque, ':ciclo' => $ciclo
-                ]
-            );
-        }else{//coordinador
-            $db->query('SELECT * from fi_reposicion_solicitud(:f_falta, :f_nueva, :hora_nueva, :hor, :prof, 2, :desc, :alumnos, false, :aula, :duracion, :usr, :bloque, :ciclo, :salon)',
-                [':f_falta' => $fecha_cambio, ':f_nueva' => $fecha_cambio, ':hora_nueva' => $hora, ':hor' => $horario,
-                ':prof' => $prof, ':desc' => $comentario, ':alumnos' => $alumnos, ':aula' => $aula, ':duracion' => $duracion_tiempo, ':usr'=>$user->user["id"],
-                ':bloque' => $bloque, ':ciclo' => $ciclo, ':salon'=>$salon
-                ]
-            );
-        }
-    }catch(Exception $e){
-        echo "ERROR Cambio<br>".$e->getMessage();
-        //header("Location: ".$pag."?error=1");
-        exit();
-    }
-    $texto = "<p>Se creó un cambio de salón nuevo.</p>";
-    $texto .= "<p><b>".mb_strtoupper($materia_rs["materia_nombre"])."</b> del día <b>".$fecha_falta." a las ".$hora." hrs. </b> se propone reponer el <b>".$fecha_nueva." a las ".$hora." hrs.</b>";
-    $texto .= "<p>Ingresa al <a href='https://paad.lci.ulsa.mx'>sistema PAAD</a> para autorizarlo.</p>";
+        /*
+        $log = new LogActividad();
+        $desc_log = "Inserta reposición nueva ID[".$rs["fi_reposicion"]."] Fechas[".$fecha_cambio.">".$fecha_cambio_nueva."] Periodo[".$_SESSION["periodo_id"]."] Materia[".$materia."] Profesor[".$prof."] Salon[".$salon."] Horario[".$horario."] Alumnos[".$alumnos."]";
+        $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
+        */
+    break;
+    case 3:
+        $db_params=[
+            ":f_falta"=>null, ":f_nueva"=>$fecha_new, ":hora_nueva"=>$hora, ":prof"=>$prof, ":desc"=>$comentario,
+            ":edo"=>1, ":alumnos"=>$alumnos, ":aula"=>$aula, ":solicitudtipo"=>$tipo, ":usr"=>$user->user["id"],
+            ":duracion"=>$duracion_tiempo, ":hor"=>null, ":bloque"=>null, ":ciclo"=>null
+        ];
+        $asunto = "Solicitud - Asignación de espacio";
+        $texto = "<p>Se creó una solicitud de asignación de salón nuevo.</p>";
+        $texto .= "<p><b>".mb_strtoupper($materia_rs["materia_nombre"])."</b> del día <b>".$fecha_nueva." a las ".$hora." hrs. </b>";
+    break;
+    case 4:
+        $db_params=[
+            ":f_falta"=>$fecha_cambio, ":f_nueva"=>$fecha_new, ":hora_nueva"=>$hora, ":prof"=>$prof, ":desc"=>$comentario,
+            ":edo"=>1, ":alumnos"=>$alumnos, ":aula"=>$aula, ":solicitudtipo"=>$tipo, ":usr"=>$user->user["id"],
+            ":duracion"=>$duracion_tiempo, ":hor"=>$horario, ":bloque"=>$bloque, ":ciclo"=>$ciclo
+        ];
+        $asunto = "Solicitud - Cambio permanente";
+        $texto = "<p>Se creó una solicitud de asignación de salón nuevo.</p>";
+        $texto .= "<p><b>".mb_strtoupper($materia_rs["materia_nombre"])."</b> del día <b>".$fecha_clase." a las ".$hora_orig." hrs. </b> se propone cambiar para el <b>".$fecha_nueva." a las ".$hora." hrs.</b>";
+    break;
 
-    /*
-    $log = new LogActividad();
-    $desc_log = "Inserta reposición nueva ID[".$rs["fi_reposicion"]."] Fechas[".$fecha_cambio.">".$fecha_cambio_nueva."] Periodo[".$_SESSION["periodo_id"]."] Materia[".$materia."] Profesor[".$prof."] Salon[".$salon."] Horario[".$horario."] Alumnos[".$alumnos."]";
-    $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
-    */
-    
 }
+try{
+    $db->query('SELECT * from fi_solicitud(:f_falta, :f_nueva, :hora_nueva, :prof, :desc, :edo, :alumnos, :aula, :solicitudtipo, :usr, :duracion, :hor, :bloque, :ciclo)',
+    $db_params);
+}catch(Exception $e){
+    echo "ERROR Cambio<br>".$e->getMessage();
+    //header("Location: ".$pag."?error=1");
+    exit();
+}
+
 
-if($to!= "" && ENVIO_CORREOS){
+MandaCorreos::enviarCorreo($db, $asunto, $texto, $user->facultad["facultad_id"], MandaCorreos::COORDINADOR);
+
+/*if($to!= "" && ENVIO_CORREOS){
+    $texto .= "<p>Ingresa al <a href='https://paad.lci.ulsa.mx'>sistema PAAD</a> para autorizarlo.</p>";
     $asunto = "Reposición nueva - solicitud";
         //crear plantilla
     $texto = '<body >
@@ -207,7 +208,7 @@ if($to!= "" && ENVIO_CORREOS){
         Mailer::enviarCorreo($to, $asunto, $texto, true);
     }
     
-}
+}*/
 
 header("Location: ".$pag."?ok=0");
 exit();

+ 84 - 0
class/manda_correo.php

@@ -0,0 +1,84 @@
+<?php
+
+class MandaCorreos{
+    public static const COORDINADOR = 1;
+    public static const SUPERVISOR = 2;
+    public static const JEFE = 4;
+    public static const PROFESOR = 8;
+    private const ENVIO_CORREOS = true;
+    private const PRUEBAS = false;
+
+    /* tipo es un acumulador de las banderas */
+    public static function enviarCorreo($db, $asunto, $texto, $facultad, $tipo, $prof_id = NULL){
+        $to="";
+        $correos=[];
+        if($_ENV['DB_NAME'] == "paad_pruebas" || self::PRUEBAS){
+            $to = "alejandro.lara@lasalle.mx";
+        }else{
+            if($tipo & self::COORDINADOR){
+                $correos_rs = $db->querySingle("SELECT DISTINCT coor.usuario_correo FROM usuario coor
+                    where rol_id = 9 and facultad_id = :fac
+                        and coor.usuario_correo is not null and coor.usuario_correo != ''",
+                    [':fac' => $facultad]
+                );   
+                foreach($correos_rs as $correo){
+                    array_push($correos, $correo["usuario_correo"]);
+                }
+                unset($correos_rs);
+            }
+            if($tipo & self::SUPERVISOR){
+                $correosSup_rs = $db->querySingle("SELECT DISTINCT sup.usuario_correo 
+                    FROM horario_supervisor hs
+                    inner join usuario sup on sup.usuario_id =hs.usuario_id 
+                    where :id_fac = ANY(hs.facultad_id_array)
+                        and sup.usuario_correo is not null and sup.usuario_correo != ''",
+                    [':id_fac' => $facultad] );
+                foreach($correosSup_rs as $correo){
+                    array_push($correos, $correo["usuario_correo"]);
+                }
+                unset($correosSup_rs);
+            }
+            if($tipo & self::JEFE){
+                $correosJefe_rs = $db->querySingle("SELECT DISTINCT jefe.usuario_correo 
+                    FROM horario_jefe_carrera hs
+                    inner join usuario jefe on jefe.usuario_id =hs.usuario_id 
+                    where :id_fac = ANY(hs.facultad_id_array)
+                        and jefe.usuario_correo is not null and jefe.usuario_correo != ''",
+                    [':id_fac' => $facultad] );
+                foreach($correosJefe_rs as $correo){
+                    array_push($correos, $correo["usuario_correo"]);
+                }
+                unset($correosJefe_rs);
+            }
+            if($tipo & self::PROFESOR && $prof_id != NULL){
+                $correosProf_rs = $db->querySingle("SELECT DISTINCT prof.usuario_correo 
+                    FROM horario_profesor hs
+                    inner join usuario prof on prof.usuario_id =hs.usuario_id 
+                    where :id_fac = ANY(hs.facultad_id_array) and prof.usuario_id = :id_prof
+                        and prof.usuario_correo is not null and prof.usuario_correo != ''",
+                    [':id_prof'=>$prof_id, ':id_fac' => $facultad] );
+                foreach($correosProf_rs as $correo){
+                    array_push($correos, $correo["usuario_correo"]);
+                }
+                unset($correosProf_rs);
+            }
+            $to .= join(",", $correos);
+        }
+
+        if($to!= "" && self::ENVIO_CORREOS){
+                //crear plantilla
+            $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" || self::PRUEBAS){
+                $asunto = "PRUEBAS-".$asunto;
+            }
+            Mailer::enviarCorreo($to, $asunto, $texto, true);
+           
+        }
+    }
+}
+?>

+ 20 - 2
rest/horarios.php

@@ -19,6 +19,14 @@ require_once $ruta_superior."/include/bd_pdo_rest.php";
 require_once __DIR__."/token.php";
 require_once __DIR__."/LogCambios.php";
 
+function quitaAcentos($cadena) {
+    // Normalizar la cadena para descomponer caracteres acentuados en sus formas base y acentos
+    $cadenaNormalizada = Normalizer::normalize($cadena, Normalizer::FORM_D);
+    // Utilizar una expresión regular para eliminar los caracteres diacríticos
+    $cadenaSinAcentos = preg_replace('/\p{M}/u', '', $cadenaNormalizada);
+    return $cadenaSinAcentos;
+}
+
 //--------------ACTUALIZA HORARIOS--------------------------
 if(!empty($_GET["fecha"])){
     $hoy = $_GET["fecha"];
@@ -271,7 +279,12 @@ try{
     
     //------------------
     // Encontrar los "hash" que están en $sgu pero no están en $bd
-    $hashes_no_en_sgu = array_diff($hashes_bd, $hashes_sgu);
+    //$hashes_no_en_sgu = array_udiff($hashes_bd, $hashes_sgu, 'strcasecmp');
+    $hashes_no_en_sgu = array_udiff($hashes_bd, $hashes_sgu, function($a, $b){
+        return strcasecmp(quitaAcentos($a), quitaAcentos($b));
+    });
+    
+
     if($debug) echo "hashes_no_en_sgu ".count($hashes_no_en_sgu)."<br>";
 
     if(count($hashes_no_en_sgu)>0){
@@ -305,7 +318,12 @@ try{
     }
 
     // Encontrar los "hash" que están en $sgu pero no están en $bd
-    $hashes_no_en_bd = array_diff($hashes_sgu, $hashes_bd);
+    //$hashes_no_en_bd = array_udiff($hashes_sgu, $hashes_bd, 'strcasecmp');
+    //comparar $hashes_sgu y $hashes_bd sin importar las maypusculas, minúsculas incluyendo acentos y ñ
+    $hashes_no_en_bd = array_udiff($hashes_sgu, $hashes_bd, function($a, $b){
+        return strcasecmp(quitaAcentos($a), quitaAcentos($b));
+    });
+
 
     //echo "hashes_no_en_bd ".count($hashes_no_en_bd)."<br>";
     

+ 8 - 4
solicitud_crear.php

@@ -128,8 +128,8 @@ if(!is_null($user->periodo_id)){
         if($write==true && isset($prof_rs) && count($prof_rs)>0)  {?>
         <!-- Botón para abrir el modal -->
         <div class="row mb-4">
-            <div class="col-12 text-right">
-                <div class="btn-group" role="group" aria-label="Basic example">
+            <div class="col-12 text-center">
+                <div class="btn-group" role="group">
                     <?php foreach ($tiposol_rs as $tipo){ ?>
                     <button type="button" class="btn btn-outline-primary" data-accion="1" data-tipo="<?php echo $tipo["solicitudtipo_id"];?>" data-toggle="modal" data-target="#modal" <?php if (!$en_fecha ) { echo "disabled"; } ?>><span class="ing-mas ing-fw"></span><?php echo $tipo["solicitudtipo_nombre"];?></button>
                     <?php } ?>
@@ -642,6 +642,7 @@ if(!is_null($user->periodo_id)){
                 $('#fecha_nueva').attr("required", true);
 
                 $("#hora_nombre").text("Hora reposición *");
+                $("#materiaBlock").show();
             break;
             case 2://cambio de salón
                 $('#fecha_cambio').parents('.row').show();
@@ -653,6 +654,7 @@ if(!is_null($user->periodo_id)){
                 $('#fecha_nueva').removeAttr("required");
 
                 $("#hora_nombre").text("Hora cambio *");
+                $("#materiaBlock").show();
                 var hora = $("#dlMateria ul li.selected").data("hr");
                 var min = $("#dlMateria ul li.selected").data("min");
                 $("#hora_ini").val(hora);
@@ -668,17 +670,19 @@ if(!is_null($user->periodo_id)){
                 $('#fecha_nueva').attr("required", true);
 
                 $("#hora_nombre").text("Hora *");
+                $("#materiaBlock").hide();
             break;
             case 4:
                 $('#fecha_cambio').parents('.row').show();
                 $('#fecha_falta').parents('.row').hide();
                 $('#fecha_nueva').parents('.row').show();
-
+                
                 $('#fecha_cambio').attr("required", true);
                 $('#fecha_falta').removeAttr("required");
                 $('#fecha_nueva').attr("required", true);
-
+                
                 $("#hora_nombre").text("Hora cambio *");
+                $("#materiaBlock").show();
             break;
         }
     }