horarioautorizacion.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. <?php
  2. require_once("../include/constantes.php");
  3. require_once("../include/util.php");
  4. require_once("../include/bd_pdo.php");
  5. require_once("../classes/ValidaSesion.php");
  6. require_once("../classes/MainMenu.php");
  7. $menu = 8;
  8. $submenu = 81;
  9. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  10. $objSesion = new ValidaSesion($pdo, $submenu, APSA);
  11. if(!$objSesion->tieneAcceso()){
  12. $objSesion->terminaSesion();
  13. }
  14. //Obtiene fechas de periodo
  15. $fecha_ini = date("d/m/Y");
  16. ?>
  17. <!DOCTYPE html>
  18. <html lang="es" prefix="og: http://ogp.me/ns#">
  19. <head>
  20. <title>APSA - Facultad de Ingeniería</title>
  21. <meta charset="utf-8">
  22. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  23. <link rel="icon" type="image/png" href="../img/favicon.png" />
  24. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  25. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  26. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  27. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  28. <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
  29. <link rel="stylesheet" href="../css/calendar.css" type="text/css">
  30. <script src="../js/util.js"></script>
  31. </head>
  32. <body>
  33. <div>
  34. <?php
  35. //--- Objeto que pinta menu
  36. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, APSA, "Autorizar horarios de subordinados");//usr, menu, pdo, sist
  37. $menuObj->printMenu();
  38. $stmt = $pdo->prepare('Select * from fs_subordinadoHorario(:usr)');//con horarios en autorizacion
  39. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  40. if(!$stmt->execute()){
  41. $errorDesc = "Ocurrió un error al cargar los usuarios.";
  42. print_r($stmt->errorInfo());
  43. }else
  44. $usuario_rs = $stmt->fetchAll();
  45. $stmt->closeCursor();
  46. //--Manejo de errores y mensajes de exito
  47. if(isset($_GET["error"]) && is_numeric($_GET["error"])){
  48. switch ($_GET["error"]){
  49. case 0: $errorDesc = "No se reciberon los datos del usuario."; break;
  50. case 1: $errorDesc = "No existe el usuario que buscas. Selecciona una del listado."; break;
  51. case 2: $errorDesc = "Ocurrió un error al leer los datos del usuario."; break;
  52. case 3: $errorDesc = "No tienes permisos para realizar esa acción."; break;
  53. }
  54. }
  55. if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
  56. switch ($_GET["ok"]){
  57. case 0: $successDesc = "Se canceló el envío de aprobación."; break;
  58. case 1: $successDesc = "El horario se aprobó correctamente."; break;
  59. }
  60. }
  61. ?>
  62. <main class="container-fluid content marco">
  63. <?php include_once("../include/errorMessage.php");?>
  64. <?php
  65. if(isset($usuario_rs)){
  66. if(count($usuario_rs) == 0){
  67. echo "<h5 class='font-weight-bold text-center text-danger'>".$ICO["alerta"]." No tienes subordinados</h5>";
  68. }else{
  69. ?>
  70. <div class="row">
  71. <div class="col-12 table-responsive">
  72. <p class="d-none"><span class="alerta"><?php echo $ICO["alerta"];?></span> Para poder autorizar o rechazar los horarios, <b>primero debes abrir el archivo</b>.</p>
  73. <table class="table table-sm table-striped table-white">
  74. <thead class="thead-dark">
  75. <tr class="row">
  76. <th class="col-md-1 col-2">Clave</th>
  77. <th class="col-md-6 col-5">Nombre</th>
  78. <th class="col-md-2 col-2">Horario actual</th>
  79. <th class="col-md-3 col-3">Horario por autorizar</th>
  80. </tr>
  81. </thead>
  82. <tbody>
  83. <?php
  84. foreach($usuario_rs as $usuario){
  85. if($usuario["Usuario_id"] != $_SESSION["usuario_id"]){
  86. ?>
  87. <tr class="row" data-id="<?php echo $usuario["Usuario_id"]; ?>" id="row_<?php echo $usuario["Usuario_id"]; ?>">
  88. <td class="col-md-1 col-2 text-center font-weight-bold text-nowrap"><?php echo $usuario["Usuario_claveULSA"] ?></td>
  89. <td class="col-md-6 col-5 nombre_usuario"><?php echo $usuario["Usuario_apellidos"]." ".$usuario["Usuario_nombre"]; ?></td>
  90. <td class="col-md-2 col-2 text-center">
  91. <?php if($usuario["Tiene_HorarioFinal"]){?>
  92. <a href="#" class="open-pdf" title="Ver horario final" data-tipo="3" data-id="<?php echo $usuario["Usuario_id"]; ?>"><?php echo $ICO["ver"];?></a>
  93. <!--<a href="#" class="modal-open aut-no" data-autoriza="false" title="Rechazar"><?php echo $ICO["borrar"];?></a>-->
  94. <?php } ?>
  95. </td>
  96. <td class="col-md-3 col-3 text-center icono-acciones">
  97. <?php if($usuario["Tiene_HorarioAprobar"]){?>
  98. <a href="#" class="open-pdf" title="Ver horario por aprobar" data-tipo="2" data-id="<?php echo $usuario["Usuario_id"]; ?>"><?php echo $ICO["ver"];?></a>
  99. <a href="#" class="modal-open aut-si" data-autoriza="true" title="Autorizar"><?php echo $ICO["aceptar"];?></a>
  100. <a href="#" class="modal-open aut-no" data-autoriza="false" title="Rechazar"><?php echo $ICO["cancelar"];?></a>
  101. <?php }else { ?>
  102. <span style="font-size: 90%" class="text-danger"><i>Sin horario para autorizar</i></span>
  103. <?php } ?>
  104. </td>
  105. </tr>
  106. <?php }//no es el mismo
  107. }//for
  108. ?>
  109. </tbody>
  110. </table>
  111. </div>
  112. </div>
  113. <form id="pdfForm" action="./export/pdf_horarioadministrativo.php" target="_blank" method="post">
  114. <input type="hidden" id="usr_id" name="id" value="">
  115. <input type="hidden" id="tipo_id" name="tipo" value="">
  116. <input type="hidden" id="fecha_pdf" name="fecha" value="">
  117. </form>
  118. <?php
  119. }//count
  120. } ?>
  121. </main>
  122. <!--- FOOTER--->
  123. <?php require_once("../include/footer.php"); ?>
  124. <!-- Modal -->
  125. <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  126. <div class="modal-dialog modal-dialog-centered" role="document">
  127. <div class="modal-content">
  128. <div class="modal-body">
  129. <div class="row">
  130. <div class="col">
  131. <p id="modal-text" class="font-weight-bold"></p>
  132. </div>
  133. </div>
  134. </div>
  135. <div class="modal-footer">
  136. <button type="button" class="btn btn-outline-primary bloque-send" data-usr="" data-dest="2"><?php echo $ICO["aceptar"];?> <span class="send-text">Enviar</span></button>
  137. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. <!-- Modal fecha Horario -->
  143. <div class="modal fade" id="modalFecha" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  144. <div class="modal-dialog modal-sm" role="document">
  145. <div class="modal-content">
  146. <div class="modal-header">
  147. <h4 class="col-12 modal-title text-center" id="modalLabel">Abrir horario
  148. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  149. <span aria-hidden="true">&times;</span>
  150. </button>
  151. </h4>
  152. </div>
  153. <div class="modal-body pb-0">
  154. <form action="" method="post">
  155. <div class="form-box">
  156. <div class="form-group row">
  157. <label for="filter_fecha" class="col-4 col-form-label">Fecha *</label>
  158. <div class="col-8">
  159. <input id="filter_fecha" name="fecha" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="readonly" value="<?php if(isset($filter_fecha)){ echo fechaSlash($filter_fecha);}else{ echo $fecha_ini;}?>">
  160. </div>
  161. </div>
  162. </div>
  163. <div class="form-group row">
  164. <div class="col-12 text-center">
  165. <button type="button" class="btn btn-outline-primary btn-fecha"><?php echo $ICO["calendario"];?> Abrir horario</button>
  166. </div>
  167. </div>
  168. </form>
  169. </div>
  170. </div>
  171. </div>
  172. </div>
  173. </div>
  174. <script src="../js/jquery.min.js"></script>
  175. <script src="../js/jquery-ui.js"></script>
  176. <script src="../js/datepicker-es.js"></script>
  177. <script src="../js/bootstrap/popper.min.js"></script>
  178. <script src="../js/bootstrap/bootstrap.min.js"></script>
  179. <script src="../js/sidebarmenu.js"></script>
  180. <script>
  181. var renglonAbrir = null;
  182. $(document).on( "click", ".btn-reset", function(event){
  183. var forma = $(this).parents("form");
  184. forma.find("input[type=text]").val("");
  185. forma.find("select").prop("selectedIndex",0);
  186. forma.submit();
  187. });
  188. $(document).ready(function(){
  189. $(".date-picker" ).datepicker({ dateFormat: "dd/mm/yy" });
  190. $(".date-picker" ).datepicker( $.datepicker.regional[ "es" ] );
  191. $(".modal-open").click(function(){
  192. var autoriza = $(this).data("autoriza");
  193. var nombre = $(this).parents("tr").find(".nombre_usuario").text();
  194. var id = $(this).parents("tr").data("id");
  195. $("#modal .bloque-send").data("usr", id);
  196. if(autoriza){
  197. $("#modal-text").html("¿Quieres AUTORIZAR el horario de<br>"+nombre+" ?");
  198. $("#modal .bloque-send").removeClass("btn-outline-danger").addClass("btn-outline-primary");
  199. $("#modal .bloque-send").data("dest","3");
  200. $("#modal .send-text").text("Autorizar");
  201. }else{
  202. $("#modal-text").html("¿Estás seguro de querer RECHAZAR el horario de<br>"+nombre+" ?");
  203. $("#modal .bloque-send").addClass("btn-outline-danger").removeClass("btn-outline-primary");
  204. $("#modal .bloque-send").data("dest","1");
  205. $("#modal .send-text").text("Rechazar");
  206. }
  207. $("#errorBox").collapse('hide');
  208. $("#errorBox_text").html("");
  209. $('#modal').modal("show");
  210. });
  211. $(".bloque-send").click(function(){
  212. $.ajax({
  213. url: './action/subordinadohorario_update.php',
  214. type: 'POST',
  215. dataType: 'json',
  216. data: { usr: $(this).data("usr"), dest: $(this).data("dest") },
  217. success: function(result) {
  218. if(result["error"]!= "" && result["error"] !== undefined){
  219. $("#errorBox").collapse('show');
  220. $("#errorBox_text").html(result["error"]);
  221. $('#messageBox')[0].scrollIntoView({ block: "end" });
  222. }else{
  223. /*$("#successBox").collapse('show');
  224. $("#successBox_text").html(result["ok"]);
  225. $('#messageBox')[0].scrollIntoView({ block: "end" });*/
  226. window.location.href = "horarioautorizacion.php?ok="+result["ok_id"];
  227. }
  228. $('#modal').modal("hide");
  229. },
  230. error: function(jqXHR, textStatus, errorThrown ){
  231. $("#errorBox").collapse('show');
  232. $("#errorBox_text").html(errorThrown);
  233. $('#messageBox')[0].scrollIntoView({ block: "end" });
  234. $('#modal').modal("hide");
  235. }
  236. });//ajax
  237. });//click
  238. /*$(".open-pdf").click(function(){
  239. $("#tipo_id").val($(this).data("tipo"));
  240. $("#usr_id").val($(this).data("id"));
  241. $("#pdfForm").submit();
  242. });*/
  243. $(document).on( "click", ".open-pdf", function(event){
  244. $("#usr_id").val($(this).data("id"));
  245. $("#tipo_id").val($(this).data("tipo"));
  246. $('#modalFecha').modal("show");
  247. renglonAbrir = $(this).data("id");
  248. //$("#pdfForm").submit();
  249. });
  250. $(document).on( "click", ".btn-fecha", function(event){
  251. $("#fecha_pdf").val($("#filter_fecha").val());
  252. $("#pdfForm").submit();
  253. /*
  254. if(renglonAbrir !== null){
  255. $("#row_"+renglonAbrir).find(".aut-no").removeClass("d-none");
  256. $("#row_"+renglonAbrir).find(".aut-si").removeClass("d-none");
  257. }*/
  258. });
  259. $('.btn-fecha').on('hidden.bs.modal', function (e) {
  260. renglonAbrir = null;
  261. });
  262. });
  263. </script>
  264. </body>
  265. </html>