constancias_busca.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  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 = 32;
  8. $submenu = 321;
  9. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  10. $objSesion = new ValidaSesion($pdo, $submenu, CONSTANCIA);
  11. if(!$objSesion->tieneAcceso()){
  12. $objSesion->terminaSesion();
  13. }
  14. $objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
  15. ?>
  16. <!DOCTYPE html>
  17. <html lang="es" prefix="og: http://ogp.me/ns#">
  18. <head>
  19. <title>Constancias - Facultad de Ingeniería</title>
  20. <meta charset="utf-8">
  21. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  22. <link rel="icon" type="image/png" href="../img/favicon.png" />
  23. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  24. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  25. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  26. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  27. <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
  28. <link rel="stylesheet" href="../css/calendar.css" type="text/css">
  29. </head>
  30. <body>
  31. <div>
  32. <?php
  33. //--- Objeto que pinta menu
  34. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, CONSTANCIA, "Consultar constancias");//usr, menu, pdo, sist
  35. $menuObj->printMenu();
  36. $stmt = $pdo->prepare('Select * from fs_constancialogtipo(NULL)');
  37. if($stmt->execute()){
  38. $tipo_rs = $stmt->fetchAll();
  39. }
  40. $stmt->closeCursor();
  41. $stmt = null;
  42. $folio1 = "";
  43. if(isset($_POST["folio1"])){
  44. $folio1 = trim(filter_input(INPUT_POST, "folio1", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
  45. $sist = "";
  46. switch(strtoupper($folio1[0])){
  47. case 'X': $sist = CONSTANCIA; break;
  48. case 'G': $sist = GEMA; break;
  49. case 'C': $sist = CIDIT; break;
  50. }
  51. $evento = intval(substr($folio1, 1, strlen($folio1)));
  52. if(!empty($_POST["folio2"])){
  53. $serial = intval(filter_input(INPUT_POST, "folio2", FILTER_SANITIZE_NUMBER_INT));//limpia texto
  54. $stmt = $pdo->prepare('Select * from fs_constancialog(:sist, :evento, :serial)');
  55. $stmt->bindParam(":serial", $serial);
  56. $serial = sprintf("%04d", $serial);
  57. }else{
  58. $stmt = $pdo->prepare('Select * from fs_constancialog(:sist, :evento, NULL)');
  59. }
  60. $stmt->bindParam(":sist", $sist);
  61. $stmt->bindParam(":evento", $evento);
  62. if($stmt->execute()){
  63. $constancia_rs = $stmt->fetchAll();
  64. if(count($constancia_rs) == 0){
  65. $errorDesc = "No se encontraron constancias con ese folio";
  66. }
  67. }
  68. $stmt->closeCursor();
  69. $stmt = null;
  70. }
  71. //--Manejo de errores y mensajes de exito
  72. if(isset($_GET["error"]) && is_numeric($_GET["error"])){
  73. switch ($_GET["error"]){
  74. case 0: $errorDesc = "No se reciberon los datos para cancelar el documento."; break;
  75. case 1: $errorDesc = "No tienes permisos de realizar esa acción."; break;
  76. case 2: $errorDesc = "Ocurrió un error al obtener los datos de las constancias."; break;
  77. case 3: $errorDesc = "Ocurrió un error al cancelar el documento."; break;
  78. }
  79. }
  80. if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
  81. switch ($_GET["ok"]){
  82. case 0: $successDesc = "El documento se canceló correctamente."; break;
  83. }
  84. }
  85. ?>
  86. <main class="container-fluid content marco">
  87. <?php include_once("../include/errorMessage.php");?>
  88. <form action="constancias_busca.php" method="post" id="formaConstancias" onsubmit="return validaForm()">
  89. <div class="form-box form-box-info">
  90. <div class="form-group row">
  91. <label for="folio1" class="col-4 col-form-label">Folio del documento *</label>
  92. <div class="col-2 col-md-1">
  93. <input type="text" class="form-control bg-white" value="FI" readonly="readonly" required="required">
  94. </div>
  95. <div class="col-2 col-md-2">
  96. <input type="text" name="folio1" id="folio1" class="form-control" value="<?php echo $folio1;?>" required="required" maxlength="5">
  97. </div>
  98. <div class="col-3 col-md-2">
  99. <input type="number" name="folio2" id="folio2" class="form-control" value="<?php if(isset($serial)){ echo $serial; }?>" maxlength="5" min="1" max="9999">
  100. </div>
  101. </div>
  102. </div>
  103. <div class="form-group row">
  104. <div class="col-12 text-center">
  105. <button type="submit" class="btn btn-outline-primary btn-buscar"><?php echo $ICO["buscar"];?> Buscar</button>
  106. </div>
  107. </div>
  108. </form>
  109. <div>
  110. <p>El folio de las constancias se compone de 3 partes: Facultad, sistema y número consecutivo. Las claves de sistema son las siguients:</p>
  111. <ul>
  112. <li><b>C</b> - Sistema CIDIT, seguido del número de concurso</li>
  113. <li><b>G</b> - Sistema GEMA, seguido del número (ID) de evento</li>
  114. <li><b>X</b> - Otros eventos, seguido del año en el que se emitió</li>
  115. </ul>
  116. </div>
  117. <?php if(isset($constancia_rs) && count($constancia_rs)>0){ ?>
  118. <div class="row mt-5">
  119. <div class="col-12 table-responsive">
  120. <table class="table table-sm table-striped table-white">
  121. <thead class="thead-dark">
  122. <tr>
  123. <th style="width:70px;">Activo</th>
  124. <th>Tipo</th>
  125. <th>Otorgada a</th>
  126. <th>Evento</th>
  127. <th>Generada</th>
  128. <th style="width:110px;">Acciones</th>
  129. <?php if($objSesion->puedeEditar()){ ?>
  130. <th style="width:35px;" class="pl-2">
  131. <div class="custom-control custom-checkbox">
  132. <input type="checkbox" class="custom-control-input" id="selectAll">
  133. <label class="custom-control-label" for="selectAll"></label>
  134. </div>
  135. </th>
  136. </th>
  137. <?php } ?>
  138. </tr>
  139. </thead>
  140. <tbody>
  141. <?php foreach($constancia_rs as $constancia){?>
  142. <tr <?php if(!$constancia["ConstanciaLog_activa"]){ echo 'class="text-info"'; }?> id="const<?php echo $constancia["ConstanciaLog_id"];?>" data-id="<?php echo $constancia["ConstanciaLog_id"];?>">
  143. <td class="text-center align-middle"><?php if($constancia["ConstanciaLog_activa"]){ echo $ICO["aceptar"];}else{ echo $ICO["menos"];} ?></td>
  144. <td class="text-center"><b><?php echo $constancia["ConstanciaLogTipo_desc"];?></b><br><small>FI-<?php echo strtoupper($folio1);?>-<?php echo sprintf("%04d", $constancia["ConstanciaLog_id"]);?></small></td>
  145. <td class="align-middle"><?php echo $constancia["ConstanciaLog_participante"];?><br><small><?php echo $constancia["ConstanciaLog_motivo"]; ?></small></td>
  146. <td class="text-center align-middle"><?php echo $constancia["ConstanciaLog_evento"];?></td>
  147. <td class="text-center align-middle"><?php echo date("d/m/Y h:i", strtotime($constancia["ConstanciaLog_fecha_generacion"]));?></td>
  148. <td class="text-center align-middle">
  149. <?php if($constancia["ConstanciaLog_activa"]){?>
  150. <a href="./export/pdf_constancias.php?sist=<?php echo $sist;?>&ev=<?php echo $evento;?>&id=<?php echo $constancia["ConstanciaLog_id"];?>" title="Ver" target="_blank"><?php echo $ICO["ver"];?></a>
  151. <?php if($objSesion->puedeEditar() && $constancia["ConstanciaLog_activa"]){ ?>
  152. <a href="#" data-toggle="modal" data-target="#modal_confirm" title="Cancelar"><?php echo $ICO["borrar2"];?></a>
  153. <!--<a href="#" data-toggle="modal" data-target="#modal_nueva" title="Editar"><?php echo $ICO["editar"];?></a>-->
  154. <?php } ?>
  155. <?php } else {?>
  156. <a href="#" data-toggle="modal" data-target="#modal_motivo" data-text="<?php echo $constancia["ConstanciaLog_motivo_cancelacion"]; ?>" title="Motivo"><?php echo $ICO["ver"];?></a>
  157. <?php } ?>
  158. </td>
  159. <?php if($objSesion->puedeEditar()){ ?>
  160. <td class="pl-2 text-center align-middle">
  161. <?php if($constancia["ConstanciaLog_activa"]){ ?>
  162. <div class="custom-control custom-checkbox">
  163. <input type="checkbox" class="custom-control-input select_constancia" id="check<?php echo $constancia["ConstanciaLog_id"];?>" name="folio[]" value="<?php echo $constancia["ConstanciaLog_id"];?>">
  164. <label class="custom-control-label" for="check<?php echo $constancia["ConstanciaLog_id"];?>"></label>
  165. </div>
  166. <?php } ?>
  167. </td>
  168. <?php } ?>
  169. </tr>
  170. <?php } ?>
  171. </tbody>
  172. </table>
  173. </div>
  174. </div>
  175. <?php if($objSesion->puedeEditar()){ ?>
  176. <div class="row justify-content-center my-2">
  177. <div class="col-8 col-md-4 text-center">
  178. <!--<div class="input-group">
  179. <div class="datalist datalist-select mb-1 w-100 disabled">
  180. <div class="datalist-input">&nbsp;</div>
  181. <span class="ing-buscar icono"></span>
  182. <ul style="display:none">
  183. <li data-id="asignamateria.php">Cancelar seleccionadas</li>
  184. <li data-id="asignarevalida.php">Editar seleccionadas</li>
  185. </ul>
  186. <input type="hidden" id="accion_lote" name="accion_lote" value="">
  187. </div>
  188. </div>-->
  189. <button type="button" data-toggle="modal" data-target="#modal_confirm" class="btn btn-outline-primary" id="btn_lote"><?php echo $ICO["borrar2"];?> Cancelar seleccionadas</button>
  190. </div>
  191. </div>
  192. <?php } ?>
  193. <?php } ?>
  194. </main>
  195. <!--- FOOTER--->
  196. <?php require_once("../include/footer.php"); ?>
  197. <!-- Modal -->
  198. <div class="modal fade" id="modal_motivo" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  199. <div class="modal-dialog modal-dialog-centered" role="document">
  200. <div class="modal-content">
  201. <div class="modal-header">
  202. <h4 class="col-12 modal-title text-center">Documento cancelado
  203. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  204. <span aria-hidden="true">&times;</span>
  205. </button></h4>
  206. </div>
  207. <div class="modal-body">
  208. <div class="row">
  209. <div class="col-4">
  210. <h5 class="text-right font-weight-bold barra-right">Motivo</h5>
  211. </div>
  212. <div class="col-8">
  213. <p id="motivo-text" style="margin-top:2px;">Motivo de cancelación</p>
  214. </div>
  215. </div>
  216. </div>
  217. </div>
  218. </div>
  219. </div>
  220. <?php if($objSesion->puedeEditar() && isset($sist, $evento)){ ?>
  221. <div class="modal fade" id="modal_confirm" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  222. <div class="modal-dialog modal-dialog-centered" role="document">
  223. <div class="modal-content">
  224. <form action="./action/constancia_update.php" id="formCancela" onsubmit="return validaBaja()" method="post">
  225. <div class="modal-body">
  226. <div class="row">
  227. <div class="col">
  228. <p class="font-weight-bold">¿Estás seguro de que quieres cancelar el documento?</p>
  229. <p>Una vez cancelado no se puede recuperar. Los folios de documentos cancelados no son visibles para los participantes.</p>
  230. <p>Escribe el motivo de cancelación:</p>
  231. <textarea rows="3" class="form-control" id="desc" name="desc"></textarea>
  232. </div>
  233. </div>
  234. </div>
  235. <div class="modal-footer">
  236. <input type="hidden" name="sistema" id="sistema_borra" value="<?php echo $sist;?>">
  237. <input type="hidden" name="evento" id="evento_borra" value="<?php echo $evento;?>">
  238. <input type="hidden" name="serial" id="serial_borra" value="">
  239. <button type="submit" class="btn btn-outline-primary"><?php echo $ICO["aceptar"];?> Continuar</button>
  240. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  241. </div>
  242. </form>
  243. </div>
  244. </div>
  245. </div>
  246. <?php } ?>
  247. </div>
  248. <script src="../js/jquery.min.js"></script>
  249. <script src="../js/jquery-ui.js"></script>
  250. <script src="../js/datepicker-es.js"></script>
  251. <script src="../js/bootstrap/popper.min.js"></script>
  252. <script src="../js/bootstrap/bootstrap.min.js"></script>
  253. <script src="../js/fechas.js"></script>
  254. <script src="../js/sidebarmenu.js"></script>
  255. <script src="../js/util.js"></script>
  256. <script src="../js/datalist.js"></script>
  257. <script>
  258. function validaForm(){
  259. $("#folio1").removeClass("is-invalid");
  260. $("#folio2").removeClass("is-invalid");
  261. if(trim($("#folio1").val())=="" && trim($("#folio2").val())==""){
  262. $("#folio1").addClass("is-invalid");
  263. $("#folio2").addClass("is-invalid");
  264. $("#errorBox").collapse('show');
  265. $('#messageBox')[0].scrollIntoView({ block: "end" });
  266. $("#errorBox_text").html("Debes completar todos los campos");
  267. return false;
  268. }
  269. return true;
  270. }
  271. $('#modal_motivo').on('show.bs.modal', function (e) {
  272. var motivo = $(e.relatedTarget).data("text");
  273. $('#motivo-text').html(motivo);
  274. });
  275. <?php if($objSesion->puedeEditar()){ ?>
  276. function validaBaja(){
  277. if(trim($("#desc").val() ) == "" ){
  278. $("#desc").addClass("is-invalid");
  279. return false;
  280. }
  281. return true;
  282. }
  283. $("#btn_lote").prop("disabled", true);
  284. $("#selectAll").change(function(){
  285. var check = $(this).prop("checked");
  286. $(".select_constancia").prop("checked", check);
  287. if( $('.select_constancia:checked').length > 0)
  288. $("#btn_lote").prop("disabled", !check);
  289. });
  290. $(".select_constancia").change(function(event){
  291. event.stopPropagation();
  292. //var check = $(this).prop("checked");
  293. var numberOfChecked = $('.select_constancia:checked').length;
  294. var totalCheckboxes = $('.select_constancia').length;
  295. if(numberOfChecked == totalCheckboxes){
  296. $("#selectAll").prop("checked", true);
  297. }else{
  298. $("#selectAll").prop("checked", false);
  299. }
  300. if(numberOfChecked > 0){
  301. $("#btn_lote").prop("disabled", false);
  302. }else{
  303. $("#btn_lote").prop("disabled", true);
  304. }
  305. });
  306. $('#modal_confirm').on('show.bs.modal', function (e) {
  307. var id_list = "";
  308. $('.select_constancia:checked').each(function(index) {
  309. id_list+=$(this).val()+",";
  310. });
  311. $('#serial_borra').val(id_list);
  312. });
  313. <?php } ?>
  314. </script>
  315. </body>
  316. </html>