constancias.php 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  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 = 30;
  8. $submenu = 303;
  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. if(!$objSesion->puedeEditar()){
  16. $errorDesc = "No tienes permiso de editar las fechas.";
  17. }
  18. ?>
  19. <!DOCTYPE html>
  20. <html lang="es" prefix="og: http://ogp.me/ns#">
  21. <head>
  22. <title>Constancias - Facultad de Ingeniería</title>
  23. <meta charset="utf-8">
  24. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  25. <link rel="icon" type="image/png" href="../img/favicon.png" />
  26. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  27. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  28. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  29. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  30. <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
  31. <link rel="stylesheet" href="../css/calendar.css" type="text/css">
  32. <link rel="stylesheet" href="../css/toggle.css" type="text/css">
  33. </head>
  34. <body>
  35. <div>
  36. <?php
  37. //--- Objeto que pinta menu
  38. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, CONSTANCIA, "Otras constancias");//usr, menu, pdo, sist
  39. $menuObj->printMenu();
  40. $stmt = $pdo->prepare('Select * from fs_constancialogtipo(NULL)');
  41. if($stmt->execute()){
  42. $tipo_rs = $stmt->fetchAll();
  43. }
  44. $stmt->closeCursor();
  45. $stmt = null;
  46. $stmt = $pdo->prepare('Select * from fs_constanciafirma(NULL, true)');
  47. if($stmt->execute()){
  48. $firmas_rs = $stmt->fetchAll();
  49. }
  50. $stmt->closeCursor();
  51. $stmt = null;
  52. $stmt = $pdo->prepare('Select * from fs_constanciamotivo(NULL, NULL)');
  53. if($stmt->execute()){
  54. $motivo_rs = $stmt->fetchAll();
  55. }
  56. $stmt->closeCursor();
  57. $stmt = null;
  58. //--Manejo de errores y mensajes de exito
  59. if(isset($_GET["error"]) && is_numeric($_GET["error"])){
  60. switch ($_GET["error"]){
  61. case 0: $errorDesc = "No se reciberon los datos para generar el archivo."; break;
  62. case 1: $errorDesc = "No tienes permisos de realizar esa acción."; break;
  63. case 2: $errorDesc = "Ocurrió un error al obtener los datos de las constancias."; break;
  64. case 3: $errorDesc = "Ocurrió un error al generar las constancias."; break;
  65. }
  66. }
  67. if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
  68. switch ($_GET["ok"]){
  69. case 0: $successDesc = "Las constancias se guardaron correctamente."; break;
  70. }
  71. }
  72. ?>
  73. <main class="container-fluid content marco">
  74. <?php include_once("../include/errorMessage.php");?>
  75. <?php if ($objSesion->puedeEditar()){
  76. ?>
  77. <div id="forma_block">
  78. <form action="./export/pdf_constancias_split.php" method="post" id="formaConstancias" enctype="multipart/form-data">
  79. <div class="form-box form-box-info">
  80. <div class="form-group row">
  81. <label for="tipo" class="col-4 col-form-label">Tipo de documento *</label>
  82. <div class="col-8 col-md-6">
  83. <div class="datalist datalist-select mb-1 w-100">
  84. <div class="datalist-input">1</div>
  85. <span class="ing-buscar icono"></span>
  86. <ul style="display:none">
  87. <?php foreach($tipo_rs as $tipo) {?>
  88. <li data-id="<?php echo $tipo["ConstanciaLogTipo_id"];?>"><?php echo $tipo["ConstanciaLogTipo_desc"];?></li>
  89. <?php }?>
  90. </ul>
  91. <input type="hidden" id="tipo" name="tipo" value="0">
  92. </div>
  93. </div>
  94. </div>
  95. <div class="form-group row">
  96. <label for="evento" class="col-4 col-form-label">Nombre del evento *</label>
  97. <div class="col-8 col-md-6">
  98. <input type="text" name="evento" id="evento" class="form-control" value="" required="required">
  99. </div>
  100. </div>
  101. <div class="form-group row">
  102. <label for="motivo" class="col-4 col-form-label">Motivo *</label>
  103. <div class="col-8 col-md-6">
  104. <div class="datalist datalist-select mb-1 w-100">
  105. <div class="datalist-input">Participante</div>
  106. <span class="ing-buscar icono"></span>
  107. <ul style="display:none">
  108. <?php foreach($motivo_rs as $motivo) {?>
  109. <li data-id="<?php echo $motivo["ConstanciaMotivo_desc"];?>"><?php echo $motivo["ConstanciaMotivo_desc"];?></li>
  110. <?php } ?>
  111. </ul>
  112. <input type="hidden" id="motivo" name="motivo" value="Participante">
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. <div class="form-box">
  118. <div class="form-group row">
  119. <label class="col-4 col-form-label">Participantes *</label>
  120. <div class="col-8 col-md-6">
  121. <div style="max-height:200px; overflow:auto; padding-right:10px" class="d-none" id="participante_list">
  122. <div class="input-group mb-1 participante-block">
  123. <input type="text" name="participantes[]" class="form-control part-texto" value="" readonly="readonly">
  124. <div class="input-group-append">
  125. <button class="btn btn-outline-danger btn-borrar" type="button"><?php echo $ICO["borrar"];?></button>
  126. </div>
  127. </div>
  128. </div>
  129. <button type="button" class="btn btn-outline-secondary" data-toggle="modal" data-target="#modalParticipante"><?php echo $ICO["mas"];?> Agregar participante</button>
  130. </div>
  131. </div>
  132. <div class="form-group row">
  133. <label for="desc" class="col-4 col-form-label">Texto de la constancia *</label>
  134. <div class="col-8 col-md-6">
  135. <textarea id="desc" name="desc" class="richtext" rows="4"></textarea>
  136. </div>
  137. </div>
  138. <div class="form-group row">
  139. <label for="fecha" class="col-4 col-form-label">Fecha de la constancia *</label>
  140. <div class="col-8 col-md-4">
  141. <input id="fecha" name="fecha" type="text" class="form-control date-picker-all" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="readonly" value="<?php echo date("d/m/Y");?>">
  142. </div>
  143. </div>
  144. <div class="form-group row">
  145. <label for="fecha" class="col-4 col-form-label">Imagen adicional</label>
  146. <div class="col-6 col-md-4">
  147. <input id="logo" name="archivo" type="file" class="form-control-file" accept="image/png, image/gif, image/jpeg">
  148. </div>
  149. <!--<div class="col-2">
  150. <button type="button" class="btn btn-outline-danger btn-clear-file btn-block" onclick="$('#logo').val('');"><?php echo $ICO["borrar"];?></button>
  151. </div>-->
  152. </div>
  153. <div class="form-group row">
  154. <label for="tipo" class="col-4 col-form-label">Número de firmas *</label>
  155. <div class="col-8 col-md-4">
  156. <div class="datalist datalist-select mb-1 w-100" id="datalistFirmas">
  157. <div class="datalist-input">1 Firma</div>
  158. <span class="ing-buscar icono"></span>
  159. <ul style="display:none">
  160. <?php for($i=1; $i<=4; $i++) {?>
  161. <li data-id="<?php echo $i;?>"><?php echo $i;?> Firma<?php if ($i>1){echo 's';}?> </li>
  162. <?php }?>
  163. </ul>
  164. <input type="hidden" id="num_firmas" name="num_firmas" value="1">
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. <p class="font-weight-bold">Orden de los firmantes</p>
  170. <ul>
  171. <li>Jerarquía alta | Jerarquía baja </li>
  172. <li>Jerarquía baja | Jerarquía alta | Jerarquía media</li>
  173. </ul>
  174. <div class="form-box" id="firmas_block">
  175. <div class="form-group row firma-box" data-id="1">
  176. <div class="col-5">
  177. <div class="datalist datalist-select mb-1 w-100 datalist-firma" id="datalistFirma_1">
  178. <div class="datalist-input">1</div>
  179. <span class="ing-buscar icono"></span>
  180. <ul style="display:none">
  181. <?php foreach($firmas_rs as $firma) { ?>
  182. <li data-id="<?php echo $firma["ConstanciaFirma_id"];?>" data-puesto="<?php echo $firma["ConstanciaFirma_puesto"];?>">
  183. <?php
  184. //echo mb_convert_case(mb_strtolower($firma["ConstanciaFirma_nombre"]), MB_CASE_TITLE, "UTF-8");
  185. echo $firma["ConstanciaFirma_grado"]." ".$firma["ConstanciaFirma_nombre"];
  186. ?>
  187. </li>
  188. <?php }?>
  189. </ul>
  190. <input type="hidden" id="firma_1" name="firma[]" value="0" class="firma_input">
  191. </div>
  192. </div>
  193. <div class="col-5">
  194. <input type="text" id="puesto_1" name="puesto[]" class="form-control puesto_input" placeholder="Puesto" value="<?php echo $firmas_rs[0]["ConstanciaFirma_puesto"];?>" required="required">
  195. </div>
  196. <div class="col-2 pt-1 pl-4">
  197. <input type="checkbox" class="form-check-input radio-md lleva_firma" value="1" id="lleva_firma_1">
  198. <label for="lleva_firma_1">Mostrar firma</label>
  199. <input name="lleva_firma[]" type="hidden" class="lleva_firma_hidden" value="0">
  200. </div>
  201. </div>
  202. </div>
  203. <div class="form-group row">
  204. <div class="col-12 text-center">
  205. <button type="button" class="btn btn-outline-primary btn-abrir-confirm"><?php echo $ICO["aceptar"];?> Generar constancias</button>
  206. </div>
  207. </div>
  208. </form>
  209. </div>
  210. <div id="generado_block" class="d-none">
  211. <h3 class="mt-5"><?php echo $ICO["alerta"];?> Se ha generado el archivo .zip con los documentos generados</h3>
  212. <p class="text-center">
  213. <button type="button" class="btn btn-outline-primary btn-reiniciar mt-3"><span class=""></span> Regresar</button>
  214. </p>
  215. </div>
  216. <?php } ?>
  217. </main>
  218. <!--- FOOTER--->
  219. <?php require_once("../include/footer.php"); ?>
  220. <!-- Modal -->
  221. <?php if($objSesion->puedeEditar()){ ?>
  222. <div class="modal fade" id="modalParticipante" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true" data-backdrop="static" data-keyboard="false">
  223. <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
  224. <div class="modal-content">
  225. <div class="modal-header">
  226. <h4 class="col-12 modal-title text-center">Agrega participante
  227. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  228. <span aria-hidden="true">&times;</span>
  229. </button></h4>
  230. </div>
  231. <div class="modal-body">
  232. <ul class="nav nav-tabs d-print-none my-4" id="myTab" role="tablist">
  233. <li class="nav-item">
  234. <a class="nav-link active show" id="tabBuscar-tab" data-toggle="tab" href="#tabBuscar" role="tab" aria-controls="calendario" aria-selected="true">Buscar usuario</a>
  235. </li>
  236. <li class="nav-item">
  237. <a class="nav-link" id="tabOtro-tab" data-toggle="tab" href="#tabOtro" role="tab" aria-controls="calendario" aria-selected="false">Otro usuario</a>
  238. </li>
  239. </ul>
  240. <div class="tab-content" id="cardexTabContent">
  241. <div class="tab-pane fade show active" id="tabBuscar" role="tabpanel" aria-labelledby="tabBuscar-tab">
  242. <form id="forma_buscar" onsubmit="return false">
  243. <div class="form-box">
  244. <!--<div class="form-group row">
  245. <label for="filter_clave" class="col-4 col-form-label text-right">Clave a buscar *</label>
  246. <div class="input-group col-8">
  247. <input id="filter_clave" name="clave" type="text" class="form-control" maxlength="6">
  248. <div class="input-group-append">
  249. <button type="button" class="btn btn-outline-primary" id="btn-busca"><?php echo $ICO["buscar"]; ?> Buscar</button>
  250. </div>
  251. </div>
  252. </div>
  253. <p class="my-4 font-weight-bold text-danger d-none" id="res_error"></p>
  254. <h4 class="my-4 font-weight-bold text-center" id="res_nombre"></h4>-->
  255. <div class="form-group row">
  256. <label for="nombre" class="col-4 col-form-label">Nombre</label>
  257. <div class="col-8 col-sm-4">
  258. <input id="filter_nombre" type="text" class="form-control" maxlength="50" value="">
  259. </div>
  260. </div>
  261. <div class="form-group row">
  262. <label for="clave" class="col-4 col-form-label">Clave</label>
  263. <div class="col-8 col-sm-4">
  264. <input id="filter_clave" type="text" class="form-control" maxlength="7" value="">
  265. </div>
  266. </div>
  267. <div class="form-group row mt-4">
  268. <div class="col-12 text-center">
  269. <button type="button" class="btn btn-outline-primary" id="btn-busca"><?php echo $ICO["buscar"]; ?> Buscar</button>
  270. </div>
  271. </div>
  272. <p class="my-4 font-weight-bold text-danger d-none" id="res_error"></p>
  273. <div class="form-group row justify-content-center" id="block-buscar">
  274. <div class="col-10 table-responsive">
  275. <table class="table table-sm table-white">
  276. <thead class="thead-dark">
  277. <tr>
  278. <th>Nombre</th>
  279. <th>Clave</th>
  280. <th style="width:60px">&nbsp;</th>
  281. </tr>
  282. </thead>
  283. <tbody id="alumnos-list">
  284. <tr data-nombre="">
  285. <td class="alumno_nombre">Nombre Completo</td>
  286. <td class="text-center alumno_clave">202020</td>
  287. <td class="text-center">
  288. <button type="button" class="btn btn-outline-primary btn-sm btn-agrega"><?php echo $ICO["mas"]; ?></button>
  289. </td>
  290. </tr>
  291. </tbody>
  292. </table>
  293. </div>
  294. <!--<div class="offset-4">
  295. <button type="button" class="btn btn-outline-primary" id="btn-agrega"><?php echo $ICO["mas"]; ?> Agregar</button>
  296. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"]; ?> Cerrar</button>
  297. </div>-->
  298. </div>
  299. </div>
  300. </form>
  301. </div>
  302. <div class="tab-pane fade" id="tabOtro" role="tabpanel" aria-labelledby="tabOtro-tab">
  303. <form id="forma_buscar" onsubmit="return false">
  304. <div class="form-box">
  305. <div class="form-group row">
  306. <label for="nombre_alumno" class="col-4 col-form-label text-right">Nombre del participante *</label>
  307. <div class="col-8">
  308. <input id="nombre_alumno" name="nombre" type="text" class="form-control" autofocus placeholder="Nombre Apellidos">
  309. </div>
  310. </div>
  311. </div>
  312. <div class="form-group row">
  313. <div class="offset-4">
  314. <button type="button" class="btn btn-outline-primary" id="btn-guarda"><?php echo $ICO["mas"]; ?> Agregar</button>
  315. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"]; ?> Cerrar</button>
  316. </div>
  317. </div>
  318. </form>
  319. </div>
  320. </div>
  321. <div id="resultados" class="d-none">
  322. <p>Solo se mostrarán los primeros <strong><?php echo MAX_ROWS;?></strong> resultados.</p>
  323. <table class="table table-sm table-striped table-white">
  324. <thead class="thead-dark">
  325. <tr>
  326. <th style="width:30px">&nbsp;</th>
  327. <th>Nombre</th>
  328. <th>Apellidos</th>
  329. <th>Clave</th>
  330. <th>&nbsp;</th>
  331. </tr>
  332. </thead>
  333. <tbody id="table-result">
  334. <tr class="materia-row">
  335. <td class="res-estado text-center"><span class="d-none"><?php echo $ICO_LG["circulo"];?></span></td>
  336. <td class="res-nombre"></td>
  337. <td class="res-apellidos"></td>
  338. <td class="res-clave text-center"></td>
  339. <td class="res-agrega text-center"><button type="button" class="btn btn-outline-primary btn-sm d-none btn-agrega-nombre"><?php echo $ICO["mas"]; ?></button></td>
  340. </tr>
  341. </tbody>
  342. </table>
  343. </div>
  344. </div><!-- /Body-->
  345. </div>
  346. </div>
  347. </div>
  348. <div class="modal fade" id="modal_confirm" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  349. <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
  350. <div class="modal-content">
  351. <div class="modal-body">
  352. <div class="row">
  353. <div class="col bg-light p-4">
  354. <h4 id="confirm-participante">Nombre</h4>
  355. <div id="confirm-desc">Texto</div>
  356. <p id="confirm-fecha">Fecha</p>
  357. <div class="row" id="confirm-firma-list">
  358. <div class="col">
  359. <p><b class="confirm-firma">Firma</b><br>
  360. <span class="confirm-puesto">Puesto</span>
  361. </p>
  362. </div>
  363. </div>
  364. </div>
  365. </div>
  366. <hr>
  367. <div class="row">
  368. <div class="col">
  369. <p class="font-weight-bold">¿Estás seguro de que quieres generar las constancias?</p>
  370. <p>Una vez generadas se asignará un folio único.<br>En caso de haber errores se deberá cancelar y generar una nueva.</p>
  371. </div>
  372. </div>
  373. </div>
  374. <div class="modal-footer">
  375. <input type="hidden" id="id_borrar" value="">
  376. <button type="button" class="btn btn-outline-primary btn-enviar"><?php echo $ICO["aceptar"];?> Continuar</button>
  377. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  378. </div>
  379. </div>
  380. </div>
  381. </div>
  382. <?php } ?>
  383. </div>
  384. <script src="../js/jquery.min.js"></script>
  385. <script src="../js/jquery-ui.js"></script>
  386. <script src="../js/datepicker-es.js"></script>
  387. <script src="../js/bootstrap/popper.min.js"></script>
  388. <script src="../js/bootstrap/bootstrap.min.js"></script>
  389. <script src="../js/fechas.js"></script>
  390. <script src="../js/sidebarmenu.js"></script>
  391. <?php if($objSesion->puedeEditar()){ ?>
  392. <script src="../js/toggle.js"></script>
  393. <script src="../js/datalist.js"></script>
  394. <script src="../js/util.js"></script>
  395. <script src="../js/tinymce/tinymce.min.js"></script>
  396. <script>
  397. var datepickerOptions_all = { dateFormat: "dd/mm/yy", changeMonth: true};
  398. tinymce.init({
  399. selector: '.richtext',
  400. statusbar: false,
  401. toolbar: 'undo redo | bold',
  402. branding: false,
  403. menubar: false,
  404. valid_elements : 'strong/b'
  405. });
  406. $(document).ready(function(){
  407. setDatalistFirst("#tipo");
  408. setDatalistFirst("#firma_1");
  409. $(".date-picker-all" ).datepicker(datepickerOptions_all);
  410. $(".date-picker-all" ).datepicker( $.datepicker.regional[ "es" ] );
  411. $("#datalistFirmas ul li").click(function(){//cambia datalist
  412. var total = $("#firmas_block .firma-box").length;
  413. var nuevos = $(this).data('id');
  414. if(total < nuevos){
  415. //Clonar
  416. do{
  417. var cloned = $("#firmas_block >.firma-box:first-child").clone(true).appendTo("#firmas_block");
  418. //cloned.find("input").val("");
  419. total++;
  420. cloned.find(".firma_input").attr("id", "firma_"+total);
  421. cloned.find(".puesto_input").attr("id", "puesto_"+total);
  422. cloned.data("id", total);
  423. cloned.find(".lleva_firma").attr("id", "lleva_firma_"+total);
  424. cloned.find(".lleva_firma").siblings("label").attr("for", "lleva_firma_"+total);
  425. }while(total < nuevos);
  426. }else if(total > nuevos){
  427. //Quitar
  428. do{
  429. $("#firmas_block >.firma-box:last-child").remove();
  430. total--;
  431. }while(total > nuevos);
  432. }
  433. });
  434. $(".datalist-firma ul li").click(function(){//cambia datalist
  435. var id = $(this).parents(".firma-box").data('id');
  436. var puesto = $(this).data('puesto');
  437. console.log("Busca puesto "+id+", "+puesto);
  438. $("#puesto_"+id).val(puesto);
  439. });
  440. //--- Modales
  441. $('#modalParticipante').on('show.bs.modal', function (e) {
  442. $('#modalParticipante').find("input[type=text]").val("");
  443. $("#res_nombre").html("");
  444. $("#block-buscar").addClass("d-none");
  445. });
  446. $('#modalParticipante').on('shown.bs.modal', function (e) {
  447. $('#modalParticipante').find("input[type=text]:first").focus();
  448. });
  449. $('#nombre_alumno').keydown(function(event) {
  450. if (event.keyCode == 13) {
  451. $("#btn-guarda").trigger('click');
  452. }
  453. });
  454. $('#filter_clave').keydown(function(event) {
  455. if (event.keyCode == 13) {
  456. $("#btn-busca").trigger('click');
  457. }
  458. });
  459. $('#filter_nombre').keydown(function(event) {
  460. if (event.keyCode == 13) {
  461. $("#btn-busca").trigger('click');
  462. }
  463. });
  464. $(".perfil").click(function(){
  465. var show = $(this).data("show");
  466. var hide = $(this).data("hide");
  467. $("."+show).removeClass("d-none");
  468. $("."+hide).addClass("d-none");
  469. $("#resultados").addClass("d-none");
  470. $("#nombre_alumno").removeClass("is-invalid");
  471. });
  472. //Cuanso se escribe el nombre manualmente
  473. $("#btn-guarda").click(function(){
  474. $("#nombre_alumno").removeClass("is-invalid");
  475. var nombre_new = trim($("#nombre_alumno").val() );
  476. //console.log(nombre_new);
  477. if(nombre_new == ""){
  478. $("#nombre_alumno").addClass("is-invalid");
  479. return;
  480. }
  481. if($("#participante_list").hasClass("d-none")){
  482. $(".participante-block .part-texto").val( nombre_new );
  483. $(".participante-block .part-texto").attr("disabled", false);
  484. $("#participante_list").removeClass("d-none");
  485. }else{
  486. var cloned = $("#participante_list >.participante-block:first-child").clone(true).appendTo("#participante_list");
  487. cloned.find(".part-texto").val(nombre_new);
  488. }
  489. $("#nombre_alumno").val("");
  490. //$('#modalParticipante').modal('hide');
  491. });
  492. $("#btn-busca").click(function(){
  493. $("#filter_clave").removeClass("is-invalid");
  494. $("#filter_nombre").removeClass("is-invalid");
  495. if($("#filter_clave").val() == "" && $("#filter_nombre").val()== ""){
  496. $("#filter_clave").addClass("is-invalid");
  497. $("#filter_nombre").addClass("is-invalid");
  498. return;
  499. }
  500. $("#res_error").addClass("d-none");
  501. $.ajax({
  502. url: './action/usuarioclave_busca.php',
  503. type: 'POST',
  504. dataType: 'json',
  505. data: {clave: $("#filter_clave").val(), nombre: $("#filter_nombre").val()},
  506. success: function(result) {
  507. if(result["error"]!= "" && result["error"] !== undefined){
  508. $("#res_error").removeClass("d-none");
  509. $("#res_error").html(result["error"]);
  510. $("#res_nombre").html("");
  511. }else{
  512. var rows = result["participantes"].length;
  513. if(rows > 0){
  514. //Borrar renglones de la tabla, y dejar 1
  515. while($('#alumnos-list tr').length > 1){
  516. $("#alumnos-list tr:last-child").remove();
  517. }
  518. //Clona
  519. for(var i=1; i<rows; i++){
  520. $("#alumnos-list tr:first-child").clone(true).appendTo("#alumnos-list");
  521. }
  522. //llena
  523. $("#alumnos-list tr").each(function(index) {
  524. var nombre_new = result["participantes"][index]["Usuario_nombre"]+" "+result["participantes"][index]["Usuario_apellidos"];
  525. $(this).data("nombre", nombre_new);
  526. $(this).find('.alumno_nombre').text(nombre_new);
  527. $(this).find('.alumno_clave').text(result["participantes"][index]["Usuario_clave"]);
  528. });
  529. $("#block-buscar").removeClass("d-none");
  530. }else{
  531. $("#block-buscar").addClass("d-none");
  532. $("#res_error").removeClass("d-none");
  533. $("#res_error").html("No hay usuarios que coincidan con la búsqueda");
  534. }
  535. }
  536. },
  537. error: function(jqXHR, textStatus, errorThrown ){
  538. $('#modal-electiva').modal('hide');
  539. $("#errorBox").collapse('show');
  540. $("#errorBox_text").html(errorThrown);
  541. }
  542. });//ajax
  543. });
  544. $(".btn-agrega").click(function(){
  545. console.log($(this).parents("tr"));
  546. var nombre_new = $(this).parents("tr").data("nombre");
  547. console.log(nombre_new);
  548. if($("#participante_list").hasClass("d-none")){
  549. $(".participante-block .part-texto").val( nombre_new );
  550. $(".participante-block .part-texto").attr("disabled", false);
  551. $("#participante_list").removeClass("d-none");
  552. }else{
  553. var cloned = $("#participante_list >.participante-block:first-child").clone(true).appendTo("#participante_list");
  554. cloned.find(".part-texto").val(nombre_new);
  555. }
  556. if($('#alumnos-list tr').length > 1)
  557. $(this).parents("tr").remove();
  558. else{
  559. $("#block-buscar").addClass("d-none");
  560. }
  561. $("#filter_clave").val("");
  562. $("#filter_nombre").val("");
  563. //$('#modalParticipante').modal('hide');
  564. });
  565. $(".btn-abrir-confirm").click(function(){
  566. if(validaForma()){
  567. $('#modal_confirm').modal('show');
  568. }else{
  569. $("#errorBox").collapse('show');
  570. $('#messageBox')[0].scrollIntoView({ block: "end" });
  571. }
  572. });
  573. $(".btn-reiniciar").click(function(){
  574. $("#evento").val("");
  575. var rows = $("#participante_list .participante-block").length;
  576. while(rows > 1){
  577. $("#participante_list .participante-block:last-child").remove();
  578. rows--;
  579. }
  580. $(".participante-block .part-texto").val("");
  581. $(".participante-block .part-texto").attr("disabled", true);
  582. $("#participante_list").addClass("d-none");
  583. tinymce.get('desc').resetContent();
  584. $("#forma_block").removeClass("d-none");
  585. $("#generado_block").addClass("d-none");
  586. });
  587. $('#modal_confirm').on('show.bs.modal', function (e) {
  588. $("#confirm-participante").text( $(".participante-block .part-texto:first-child").val() );
  589. $("#confirm-desc").html( tinymce.get('desc').getContent() );
  590. $("#confirm-fecha").text( $("#fecha").val() );
  591. var firmas_block = $("#confirm-firma-list .col").length;
  592. var firmas = $('.puesto_input').length;
  593. if(firmas_block < firmas){//faltan
  594. do{
  595. var cloned = $("#confirm-firma-list >.col:first-child").clone(true).appendTo("#confirm-firma-list");
  596. firmas_block++;
  597. }while(firmas_block < firmas);
  598. }else{
  599. while(firmas_block > firmas){
  600. $("#confirm-firma-list >col:last-child").remove();
  601. firmas_block--;
  602. }
  603. }
  604. $.each($('#confirm-firma-list .col'), function(i){
  605. var nombre = getDatalistText($("#firma_"+(i+1)), $("#firma_"+(i+1)).val())
  606. $(this).find(".confirm-firma").text( nombre );
  607. $(this).find(".confirm-puesto").text( $("#puesto_"+(i+1)).val() );
  608. });
  609. });
  610. $(".btn-enviar").click(function(){
  611. $.each($('.firma-box'), function(i){
  612. if($(this).find(".lleva_firma").prop("checked")){
  613. $(this).find(".lleva_firma_hidden").val("1");
  614. }else{
  615. $(this).find(".lleva_firma_hidden").val("0");
  616. }
  617. });
  618. $("#formaConstancias").submit();
  619. $('#modal_confirm').modal('hide');
  620. $('#messageBox')[0].scrollIntoView({ block: "end" });
  621. $("#forma_block").addClass("d-none");
  622. $("#generado_block").removeClass("d-none");
  623. });
  624. });
  625. $(document).on( "click", ".btn-borrar", function(event){
  626. if($(".participante-block").length > 1){
  627. $(this).parents(".participante-block").remove();
  628. }else{
  629. $(".participante-block .part-texto").attr("disabled", true).val("");
  630. $("#participante_list").addClass("d-none");
  631. }
  632. });
  633. function validaForma(){
  634. $(".is-invalid").removeClass("is-invalid");
  635. var error = false;
  636. if(trim($("#evento").val()) == ""){
  637. error = true;
  638. $("#evento").addClass("is-invalid");
  639. }
  640. if(tinymce.get('desc').getContent() == ""){
  641. error = true;
  642. }
  643. $.each($('.puesto_input'), function(){
  644. if(trim($(this).val()) == ""){
  645. error = true;
  646. $(this).addClass("is-invalid");
  647. }
  648. });
  649. if(error){
  650. $("#errorBox_text").html("Debes completar todos los campos");
  651. return false;
  652. }
  653. if($("#participante_list").hasClass("d-none")){
  654. $("#errorBox_text").html("Debes elegir al menos un participante");
  655. return false;
  656. }
  657. return true;
  658. }
  659. </script>
  660. <?php } ?>
  661. </body>
  662. </html>