reposicion_autoriza.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. <?php
  2. /*
  3. Cambia de estado la reposición
  4. */
  5. $pag = "../reposiciones_crear.php";
  6. $ruta = "../";
  7. require_once "../class/c_login.php";
  8. require_once "../class/mailer.php";
  9. define("COORDINADOR", 9);
  10. define("SUPERVISOR", 7);
  11. define("ENVIO_CORREOS", true);
  12. // check if the session is started
  13. if (!isset($_SESSION['user']))
  14. die('No se ha iniciado sesión');
  15. $user = unserialize($_SESSION['user']);
  16. $pag = "../reposiciones_autorizar.php";
  17. if(!isset($_POST["id"]) || !isset($_POST["edo"]) ){
  18. header("Location: ".$pag."?error=0");
  19. exit();
  20. }
  21. $id_repo = filter_input(INPUT_POST, "id", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  22. $edo = filter_input(INPUT_POST, "edo", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  23. $tipo = filter_input(INPUT_POST, "tipo", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  24. if(isset($_POST["salon"]) && $_POST["salon"] != "")
  25. $salon = filter_input(INPUT_POST, "salon", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  26. //--------------
  27. //Obtiene datos de salón asignado
  28. $salon_desc = "Pendiente";
  29. if(!empty($salon)){
  30. $salon_rs = $db->querySingle('SELECT s.salon_id, s.salon_array FROM salon_view s where s.salon_id = :id_salon',
  31. [':id_salon' => $salon]
  32. );
  33. if($salon_rs["salon_id"] == "" || $salon_rs["salon_id"] == NULL){
  34. $salon_desc = "Pendiente";
  35. }else{
  36. $salon_json = json_decode($salon_rs["salon_array"], true);
  37. if($salon_json[0]== "UNIVERSIDAD LA SALLE"){
  38. unset($salon_json[0]);
  39. }
  40. $salon_desc = join(" / ",$salon_json);
  41. }
  42. }
  43. if($tipo ==1 || $tipo == 2){
  44. //--------------
  45. //Obtiene datos reposición
  46. $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
  47. from reposicion_solicitud r
  48. inner join horario_view h on h.horario_id = r.horario_id
  49. inner join facultad f on f.facultad_id = h.facultad_id
  50. inner join tipoaula ta on ta.tipoaula_id = r.tipoaula_id
  51. where r.reposicion_solicitud_id = :id_repo',
  52. [':id_repo' => $id_repo]
  53. );
  54. //Obtiene correos
  55. $correos_rs = $db->query('SELECT p.profesor_nombre, p.profesor_correo, u.usuario_nombre as jefe_nombre, u.usuario_correo as jefe_correo,
  56. coor.usuario_nombre as coordinador_nombre, coor.usuario_correo as coordinador_correo
  57. from reposicion_solicitud rs
  58. inner join profesor p on rs.profesor_id =p.profesor_id
  59. inner join usuario u on u.usuario_id = rs.usuario_id
  60. inner join horario_view hv on hv.horario_id = rs.horario_id
  61. inner join usuario coor on hv.facultad_id = coor.facultad_id and coor.rol_id = :rol_coord
  62. where rs.reposicion_solicitud_id = :id_repo',
  63. [':rol_coord' => COORDINADOR, ':id_repo' => $id_repo]
  64. );
  65. //print_r($correos_rs); exit();
  66. }else{
  67. //Obtiene datos asignación
  68. $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
  69. from asignacion_solicitud r
  70. inner join usuario u on u.usuario_id = r.usuario_id
  71. inner join facultad f on f.facultad_id = u.facultad_id
  72. inner join tipoaula ta on ta.tipoaula_id = r.tipoaula_id
  73. inner join profesor p on p.profesor_id = r.profesor_id
  74. where r.asignacion_solicitud_id = :id_repo',
  75. [':id_repo' => $id_repo]
  76. );
  77. //Obtiene correos
  78. $correos_rs = $db->query('SELECT p.profesor_nombre, p.profesor_correo, NULL as jefe_nombre, NULL as jefe_correo,
  79. coor.usuario_nombre as coordinador_nombre, coor.usuario_correo as coordinador_correo
  80. from asignacion_solicitud rs
  81. inner join profesor p on rs.profesor_id =p.profesor_id
  82. inner join usuario u on u.usuario_id = rs.usuario_id
  83. inner join usuario coor on u.facultad_id = coor.facultad_id and coor.rol_id = :rol_coord
  84. where rs.asignacion_solicitud_id = :id_repo',
  85. [':rol_coord' => COORDINADOR, ':id_repo' => $id_repo]
  86. );
  87. }
  88. $prof_correos=array();
  89. $jefe_correos=[];
  90. $coord_correos=[];
  91. foreach($correos_rs as $correo){
  92. if( count($prof_correos)==0 && $correo["profesor_correo"]!=""){
  93. if( !isset($prof_correos["correo"]) || !in_array($correo["profesor_correo"], $prof_correos["correo"]) ){
  94. array_push($prof_correos, $correo["profesor_correo"]);
  95. }
  96. }
  97. if( count($jefe_correos)==0 && $correo["jefe_correo"]!=""){
  98. if(!isset($jefe_correos["correo"]) || !in_array($correo["jefe_correo"], $jefe_correos["correo"])){
  99. array_push($jefe_correos, $correo["jefe_correo"]);
  100. }
  101. }
  102. if( count($coord_correos)==0 && $correo["coordinador_correo"]!=""){
  103. if(!isset($coord_correos["correo"]) || !in_array($correo["coordinador_correo"], $coord_correos["correo"])){
  104. array_push($coord_correos, $correo["coordinador_correo"]);
  105. }
  106. }
  107. }
  108. $correosSup_rs = $db->query("SELECT DISTINCT sup.usuario_correo as supervisor_correo
  109. FROM horario_supervisor hs
  110. inner join usuario sup on sup.usuario_id =hs.usuario_id
  111. where :facultad = ANY(hs.facultad_id_array)",
  112. [':facultad'=>$reposicion_rs["facultad_id"]] );
  113. $sup_correos=[];
  114. foreach($correosSup_rs as $correo){
  115. array_push($sup_correos, $correo["supervisor_correo"]);
  116. }
  117. if($tipo ==1 || $tipo == 2){
  118. if($edo == 4){//cancelación
  119. $motivo = "";
  120. if(isset($_POST["motivo"]) && $_POST["motivo"] != "")
  121. $motivo = trim($_POST["motivo"]);
  122. $db->querySingle('SELECT fu_reposicion_cancela(:id, :motivo)',
  123. [':id' => $id_repo, ':motivo' => $motivo]
  124. );
  125. }else{
  126. if(!empty($salon)){
  127. $db->querySingle('SELECT fu_reposicion_solicitud(:id, NULL, NULL, NULL, :sal, :edo, NULL, NULL, NULL, NULL)',
  128. [':id' => $id_repo, ':sal' => $salon, ':edo' => $edo]
  129. );
  130. }else{
  131. $db->querySingle('SELECT fu_reposicion_solicitud(:id, NULL, NULL, NULL, NULL, :edo, NULL, NULL, NULL, NULL)',
  132. [':id' => $id_repo, ':edo' => $edo]
  133. );
  134. }
  135. }
  136. $fecha_clase = date('d/m/Y', strtotime($reposicion_rs["fecha_clase"]));
  137. $fecha_nueva = date('d/m/Y', strtotime($reposicion_rs["fecha_nueva"]));
  138. $hora_tmp = explode(":",$reposicion_rs["horario_hora"]);
  139. $hora_clase = $hora_tmp[0].":".$hora_tmp[1];
  140. $hora_tmp = explode(":",$reposicion_rs["hora_nueva"]);
  141. $hora_nueva = $hora_tmp[0].":".$hora_tmp[1];
  142. $asunto = "";
  143. $texto = "";
  144. $to = "";
  145. switch($edo){
  146. case 2://Correo a supervisor
  147. $asunto = "Reposición nueva - ".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"];
  148. //crear plantilla
  149. $texto = "<p>Se creó una reposición nueva para: <b>".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"]."</b>.</p>";
  150. $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>";
  151. if(!$reposicion_rs["tipoaula_supervisor"]){
  152. $texto .= " en el salón: <b>".$salon_desc."</b></p>";
  153. }else{
  154. $texto .= " en un salón de tipo: <b>".$reposicion_rs["tipoaula_nombre"]."</b></p>";
  155. }
  156. $texto .= "<p style='font-style:italic; padding-left:25px'>".$reposicion_rs["descripcion"]."</p>";
  157. $texto .= "<p>Ingresa al <a href='https://paad.lci.ulsa.mx'>sistema PAAD</a> para autorizarla.</p>";
  158. $to = join(",", $sup_correos);
  159. $ok = 0;
  160. break;
  161. case 3://Correo a coordinador, profesor y jefe
  162. $asunto = "Reposición autorizada - ".$reposicion_rs["materia"];
  163. $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>";
  164. $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
  165. $ok = 0;
  166. $db->querySingle('SELECT fu_reposicion_solicitud_supervisor(:id, :sup)',
  167. [':id' => $id_repo, ':sup'=>$user->user["id"]]
  168. );
  169. break;
  170. case 4://Correo a coordinador, profesor y jefe
  171. $asunto = "Reposición declinada - ".$reposicion_rs["materia"];
  172. $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>";
  173. $texto .= "<p style='font-style:italic; padding-left:25px'>".$motivo."</p>";
  174. $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
  175. $ok = 1;
  176. $db->querySingle('SELECT fu_reposicion_solicitud_supervisor(:id, :sup)',
  177. [':id' => $id_repo, ':sup'=>$user->user["id"]]
  178. );
  179. break;
  180. }
  181. }else{
  182. if($edo == 4){//cancelación
  183. $motivo = "";
  184. if(isset($_POST["motivo"]) && $_POST["motivo"] != "")
  185. $motivo = trim($_POST["motivo"]);
  186. $db->querySingle('SELECT fu_asignacion_cancela(:id, :motivo)',
  187. [':id' => $id_repo, ':motivo' => $motivo]
  188. );
  189. }else{
  190. if(!empty($salon)){
  191. $db->querySingle('SELECT fu_asignacion_solicitud(:id, NULL, NULL, :sal, :edo, NULL, NULL, NULL, NULL, NULL)',
  192. [':id' => $id_repo, ':sal' => $salon, ':edo' => $edo]
  193. );
  194. }else{
  195. $db->querySingle('SELECT fu_asignacion_solicitud(:id, NULL, NULL, NULL, :edo, NULL, NULL, NULL, NULL, NULL)',
  196. [':id' => $id_repo, ':edo' => $edo]
  197. );
  198. }
  199. }
  200. $fecha_nueva = date('d/m/Y', strtotime($reposicion_rs["fecha_nueva"]));
  201. $hora_tmp = explode(":",$reposicion_rs["hora_nueva"]);
  202. $hora_nueva = $hora_tmp[0].":".$hora_tmp[1];
  203. $asunto = "";
  204. $texto = "";
  205. $to = "";
  206. switch($edo){
  207. case 2://Correo a supervisor
  208. $asunto = "Asignación nueva - ".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"];
  209. //crear plantilla
  210. $texto = "<p>Se creó una solicitud de asignación nueva para: <b>".$reposicion_rs["clave_dependencia"]." ".$reposicion_rs["facultad"]."</b>.</p>";
  211. $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>.";
  212. if(!$reposicion_rs["tipoaula_supervisor"]){
  213. $texto .= " en el salón: <b>".$salon_desc."</b></p>";
  214. }else{
  215. $texto .= " en un salón de tipo: <b>".$reposicion_rs["tipoaula_nombre"]."</b></p>";
  216. }
  217. $texto .= "<p style='font-style:italic; padding-left:25px'>".$reposicion_rs["descripcion"]."</p>";
  218. $texto .= "<p>Ingresa al <a href='https://paad.lci.ulsa.mx'>sistema PAAD</a> para autorizarla.</p>";
  219. $to = join(",", $sup_correos);
  220. $ok = 0;
  221. break;
  222. case 3://Correo a coordinador, profesor y jefe
  223. $asunto = "Asignación autorizada - ".$reposicion_rs["profesor_nombre"];
  224. $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>";
  225. $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
  226. $ok = 0;
  227. $db->querySingle('SELECT fu_asignacion_solicitud_supervisor(:id, :sup)',
  228. [':id' => $id_repo, ':sup'=>$user->user["id"]]
  229. );
  230. break;
  231. case 4://Correo a coordinador, profesor y jefe
  232. $asunto = "Asignación declinada - ".$reposicion_rs["profesor_nombre"];
  233. $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>";
  234. $texto .= "<p style='font-style:italic; padding-left:25px'>".$motivo."</p>";
  235. $to = join(",", $coord_correos).",".join(",", $prof_correos).",".join(",", $jefe_correos);
  236. $ok = 1;
  237. $db->querySingle('SELECT fu_asignacion_solicitud_supervisor(:id, :sup)',
  238. [':id' => $id_repo, ':sup'=>$user->user["id"]]
  239. );
  240. break;
  241. }
  242. }
  243. if($to!= "" && ENVIO_CORREOS){
  244. $texto = '<body >
  245. <img src="https://paad.lci.ulsa.mx/imagenes/logo_lasalle.png" alt="La Salle" style="margin-bottom:60px">
  246. '.$texto.'
  247. </body>';
  248. require_once('../include/phpmailer/PHPMailerAutoload.php');
  249. if($_ENV['DB_NAME'] == "paad_pruebas"){
  250. $asunto = "PRUEBAS-".$asunto;
  251. Mailer::enviarCorreo("alejandro.lara@lasalle.mx", $asunto, $texto, true);
  252. }else{
  253. Mailer::enviarCorreo($to, $asunto, $texto, true);
  254. }
  255. }
  256. /*
  257. $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
  258. */
  259. header("Location: ".$pag."?ok=".$ok);
  260. exit();
  261. ?>