carreras.php 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  1. <?php
  2. require_once 'class/c_login.php';
  3. require_once 'include/bd_pdo.php';
  4. $user = Login::get_user();
  5. $user->access('facultades');
  6. if($user->acceso == null){
  7. header('Location: main.php?error=1');
  8. }else{
  9. $user->print_to_log('Carreras');
  10. }
  11. if($user->facultad['facultad_id']!=$_GET['facultad']){
  12. header('Location: carreras.php?facultad='.$user->facultad['facultad_id']);
  13. $mal=true;
  14. }
  15. $mal=false;
  16. ?>
  17. <!DOCTYPE html>
  18. <html lang="en">
  19. <head>
  20. <meta charset="UTF-8">
  21. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  22. <title>Carreras</title>
  23. <link rel="stylesheet" href="css/jquery-ui.css">
  24. <link rel="stylesheet" href="css/calendar.css">
  25. <link rel="stylesheet" href="css/toggle.css" type="text/css">
  26. <?php
  27. include 'import/html_css_files.php';
  28. ?>
  29. </head>
  30. <body>
  31. <?php
  32. if(isset($_GET['facultad'])){
  33. $facultad=query("SELECT facultad_nombre FROM facultad WHERE facultad_id = :facultad", array(":facultad" => $_GET['facultad']), true);
  34. $fs_carreras = query(
  35. "SELECT * FROM fs_carreras(:idfacultad, null, null)",
  36. array(':idfacultad' => $_GET['facultad']),
  37. single:false
  38. );
  39. }
  40. include "import/html_header.php";
  41. html_header(
  42. "CARRERAS | " . $facultad['facultad_nombre'],
  43. "Gestión de Checador "
  44. );
  45. $user->access('facultades');
  46. $fs_niveles = query(
  47. "SELECT * FROM nivel", null, false
  48. );
  49. $fs_periodos = query(
  50. "SELECT * FROM fs_periodos(:idfacultad) WHERE estado = 'Activo' ",
  51. array(':idfacultad' => $_GET['facultad']),
  52. false
  53. );
  54. $fs_tiempoLic = query(
  55. "SELECT * FROM fs_tiempo_checado(:idfacultad, 1)",
  56. array(':idfacultad' => $_GET['facultad']),
  57. true
  58. );
  59. $fs_tiempoPos = query(
  60. "SELECT * FROM fs_tiempo_checado(:idfacultad, 2)",
  61. array(':idfacultad' => $_GET['facultad']),
  62. true
  63. );
  64. ?>
  65. <main class="content marco">
  66. <?php #if($mal==true){ ?>
  67. <div class="row">
  68. <div class="col-12 text-left">
  69. <a href="facultades.php" title="Volver">
  70. <button type="button" class="btn btn-outline-secondary"><span class="ing-regresar ing-fw"></span>Volver</button>
  71. </a>
  72. </div>
  73. </div>
  74. <?php #} ?>
  75. <div id="message"></div>
  76. <ul class="nav nav-tabs mt-3" id="myTab" role="tablist">
  77. <li class="nav-item" role="presentation">
  78. <button class="nav-link active" id="periodo-tab" data-toggle="tab" data-target="#periodo" type="button" role="tab" aria-controls="periodo" aria-selected="true">Periodo</button>
  79. </li>
  80. <li class="nav-item" role="presentation">
  81. <button class="nav-link" id="carrera-tab" data-toggle="tab" data-target="#carrera" type="button" role="tab" aria-controls="carrera" aria-selected="false">Carrera</button>
  82. </li>
  83. <li class="nav-item" role="presentation">
  84. <button class="nav-link" id="carrera-tab" data-toggle="tab" data-target="#tiempos" type="button" role="tab" aria-controls="tiempos" aria-selected="false">Tiempos</button>
  85. </li>
  86. </ul>
  87. <div class="tab-content" id="myTabContent">
  88. <!-- PERIODOS -->
  89. <div class="tab-pane fade show active" id="periodo" role="tabpanel" aria-labelledby="periodo-tab">
  90. <div class="row mt-3">
  91. <?php if($user->acceso == 'w') {?>
  92. <div class="col-12 text-right">
  93. <button type="button" class="btn btn-outline-secondary" data-toggle="modal" data-target="#modal_periodo" data-tipo="1"><span class="ing-mas ing-fw"></span>Agregar periodo</button>
  94. </div>
  95. <?php }?>
  96. </div>
  97. <!-- Tabla -->
  98. <div class="row mt-3">
  99. <div class="col-12 table-responsive">
  100. <table class="table table-sm table-striped table-white">
  101. <thead class="thead-dark">
  102. <tr>
  103. <th>Estado</th>
  104. <th>Nivel</th>
  105. <th>Periodo</th>
  106. <th>Inicio</th>
  107. <th>Fin</th>
  108. <?php if($user->acceso == 'w') {?>
  109. <th>Acciones</th>
  110. <?php }?>
  111. </tr>
  112. </thead>
  113. <tbody>
  114. <?php foreach($fs_periodos as $periodo){
  115. $title=$periodo['estado'];
  116. if($title=='Activo')
  117. $color="success";
  118. else
  119. $color="danger";
  120. ?>
  121. <tr data-id="<?= $periodo['id']?>" id="<?= $periodo['id']?>" >
  122. <td class="text-<?= $color ?> text-center" title="<?= $title?>">
  123. <span class="ing-bullet"></span>
  124. </td>
  125. <td class="text-primary">
  126. <?= $periodo['nivel']?>
  127. </td>
  128. <td class="text-primary">
  129. <?= $periodo['periodo']?>
  130. </td>
  131. <td class="text-primary">
  132. <?= $periodo['inicio']?>
  133. </td>
  134. <td class="text-primary">
  135. <?= $periodo['fin']?>
  136. </td>
  137. <?php if($user->acceso == 'w') {?>
  138. <td class="text-center icono-acciones">
  139. <a href="#" data-toggle="modal" data-target="#modal_periodo" data-tipo="2" title="Editar"><span class="ing-editar ing-fw"></span></a>
  140. </td>
  141. <?php }?>
  142. </tr>
  143. <?php } ?>
  144. </tbody>
  145. </table>
  146. </div>
  147. </div>
  148. </div>
  149. <!-- CARRERAS -->
  150. <div class="tab-pane fade" id="carrera" role="tabpanel" aria-labelledby="carrera-tab">
  151. <div class="row mt-3">
  152. <?php if($user->acceso == 'w') {?>
  153. <div class="col-12 text-right">
  154. <button type="button" class="btn btn-outline-secondary" data-toggle="modal" data-target="#modal" data-tipo="1"><span class="ing-mas ing-fw"></span>Crear carrera</button>
  155. </div>
  156. <?php }?>
  157. </div>
  158. <!-- Tabla -->
  159. <div class="row mt-3">
  160. <div class="col-12 table-responsive">
  161. <table class="table table-sm table-striped table-white">
  162. <thead class="thead-dark">
  163. <tr>
  164. <th>Estado</th>
  165. <th>Nivel</th>
  166. <th>Carrera</th>
  167. <?php if($user->acceso == 'w') {?>
  168. <th>Acciones</th>
  169. <?php }?>
  170. </tr>
  171. </thead>
  172. <tbody>
  173. <?php
  174. foreach($fs_carreras as $carrera){
  175. $color = "danger";
  176. $title = "Inactiva";
  177. if($carrera["carrera_activa"]==1){
  178. $color ="success";
  179. $title="Activa";
  180. }
  181. $nivel='Licenciatura';
  182. if($carrera['nivel_id']==2)
  183. $nivel='Posgrado';
  184. ?>
  185. <tr data-id="<?php echo $carrera['carrera_id'];?>" id="<?php echo $carrera['carrera_id'];?>">
  186. <td class="text-<?php echo $color;?> text-center" title="<?php echo $title;?>">
  187. <span class="ing-bullet"></span>
  188. </td>
  189. <td class="text-primary"><?php echo $nivel;?></td>
  190. <td class="text-primary"><?php echo $carrera["carrera_nombre"];?></td>
  191. <?php if($user->acceso == 'w') {?>
  192. <td class="text-center icono-acciones">
  193. <a href="#" data-toggle="modal" data-target="#modal" data-tipo="2" title="Editar"><span class="ing-editar ing-fw"></span></a>
  194. </td>
  195. <?php }?>
  196. </tr>
  197. <?php }?>
  198. </tbody>
  199. </table>
  200. </div>
  201. </div>
  202. </div>
  203. <!-- Tiempos -->
  204. <div class="tab-pane fade" id="tiempos" role="tabpanel" aria-labelledby="tiempos-tab">
  205. <p class="mt-4">Asigna los minutos de tolerancia antes y después del horario de clase</p>
  206. <form action="" method="post" id="formaModalTiempos" onsubmit="return valida_camposT()">
  207. <input type="hidden" name="facultadT" id="facultadT">
  208. <h3 class="text-center">Licenciatura</h3>
  209. <div class="row mt-3" style="border:solid 2px; border-radius: 8px;">
  210. <div class="offset-1 col-2 text-center">
  211. Antes
  212. <input id="antesL" name="antesL" type="number" class="form-control text-center" maxlenth="10">
  213. <div class="invalid-feedback">
  214. Debe ser un numero mayor que 0
  215. </div>
  216. min
  217. </div>
  218. <div class="col-2 text-center bg-light mt-4 mb-4">
  219. <h5 class="mt-2">Hora de clase</h5>
  220. </div>
  221. <div class="col-2 text-center">
  222. Despues
  223. <input id="despuesL" name="despuesL" type="number" class="form-control text-center" maxlenth="10">
  224. <div class="invalid-feedback">
  225. Debe ser un numero mayor que 0
  226. </div>
  227. min
  228. </div>
  229. <div class="col-2 text-center retardoLic">
  230. Retardos
  231. <input id="retardoL" name="retardoL" type="number" class="form-control text-center" maxlenth="10">
  232. <div class="invalid-feedback">
  233. Debe ser un numero mayor que 0
  234. </div>
  235. min
  236. </div>
  237. <div class="col-3 text-center">
  238. ¿Tiene retardos?<br>
  239. <div class="custom-control custom-switch mt-2">
  240. <input type="checkbox" class="custom-control-input tipo-switch" name="retardoLic" id="retardoLic" value="1">
  241. <label class="custom-control-label" for="retardoLic">Si</label>
  242. </div>
  243. </div>
  244. </div>
  245. <br><br>
  246. <h3 class="text-center">Posgrado</h3>
  247. <div class="row mt-3" style="border:solid 2px; border-radius: 8px;">
  248. <div class="offset-1 col-2 text-center">
  249. Antes
  250. <input id="antesP" name="antesP" type="number" class="form-control text-center" maxlenth="10">
  251. <div class="invalid-feedback">
  252. Debe ser un numero mayor que 0
  253. </div>
  254. min
  255. </div>
  256. <div class="col-2 text-center bg-light mt-4 mb-4">
  257. <h5 class="mt-2">Hora de clase</h5>
  258. </div>
  259. <div class="col-2 text-center">
  260. Despues
  261. <input id="despuesP" name="despuesP" type="number" class="form-control text-center" maxlenth="10">
  262. <div class="invalid-feedback">
  263. Debe ser un numero mayor que 0
  264. </div>
  265. min
  266. </div>
  267. <div class="col-2 text-center retardoPos">
  268. Retardo
  269. <input id="retardoP" name="retardoP" type="number" class="form-control text-center" maxlenth="10">
  270. <div class="invalid-feedback">
  271. Debe ser un numero mayor que 0
  272. </div>
  273. min
  274. </div>
  275. <div class="col-3 text-center">
  276. ¿Tiene retardos?<br>
  277. <div class="custom-control custom-switch mt-2">
  278. <input type="checkbox" class="custom-control-input tipo-switch" name="retardoPos" id="retardoPos" value="1">
  279. <label class="custom-control-label" for="retardoPos"></label>
  280. </div>
  281. </div>
  282. </div>
  283. <br>
  284. </form>
  285. <div class="form-group row mt-3">
  286. <div class="offset-4 col-8">
  287. <button class="btn btn-outline-primary" id="submitBtnT">
  288. <span class="ing-aceptar ing-fw"></span> Guardar
  289. </button>
  290. <button type="reset" id="reset" class="btn btn-outline-danger" data-dismiss="modal">
  291. <span class="ing-cancelar ing-fw"></span> Limpiar
  292. </button>
  293. </div>
  294. </div>
  295. </div>
  296. </div>
  297. </main>
  298. <!-- Footer -->
  299. <?php
  300. include "import/html_footer.php";
  301. ?>
  302. <!-- Modal -->
  303. <div class="modal fade" id="modal_periodo" tabindex="-1" role="dialog" arialabelledby="modal" aria-hidden="true">
  304. <div class="modal-dialog modal-dialog-centered" role="document">
  305. <div class="modal-content">
  306. <div class="modal-header">
  307. <h4 class="col-12 modal-title text-center">
  308. <span id="modalLabelP">
  309. Editar periodo
  310. </span>
  311. <button type="button" class="close text-white" data-dismiss="modal" aria-label="close">
  312. <span aria-hidden="true">&times;</span>
  313. </button>
  314. </h4>
  315. </div>
  316. <div class="modal-body">
  317. <form action="" method="post" id="formaModalP" onsubmit="return valida_camposP()">
  318. <input type="hidden" name="idP" id="idP">
  319. <input type="hidden" name="facultadP" id="facultadP" value="<?php echo $_GET['facultad']; ?>">
  320. <div class="form-box">
  321. <div class="form-group row">
  322. <label for="nombreP" class="col-4 col-form-label">Nombre *</label>
  323. <div class="col-8">
  324. <input id="nombreP" name="nombreP" type="text" class="form-control" maxlength="100">
  325. <div class="invalid-feedback" id="nombreP-error">Campo obligatorio</div>
  326. </div>
  327. </div>
  328. <div class="form-group row">
  329. <label for="inicio" class="col-4 col-form-label">Fecha de inicio *</label>
  330. <div class="col-8">
  331. <input id="fecha_inicial" name="fecha_inicial" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="">
  332. <div class="invalid-feedback">Debe seleccionar una fecha</div>
  333. </div>
  334. </div>
  335. <div class="form-group row">
  336. <label for="fin" class="col-4 col-form-label">Fecha de fin *</label>
  337. <div class="col-8">
  338. <input id="fecha_final" name="fecha_final" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="">
  339. <div class="invalid-feedback">Debe seleccionar una fecha</div>
  340. </div>
  341. </div>
  342. <div class="form-group row">
  343. <label for="nivelP" class="col-4 col-form-label">Nivel *</label>
  344. <div class="col-8">
  345. <div class="datalist datalist-select mb-1 w-100">
  346. <div class="datalist-input">Mostrar todos</div>
  347. <span class="ing-buscar icono"></span>
  348. <ul style="display:none">
  349. <?php foreach($fs_niveles as $pnivel){?>
  350. <li data-id="<?php echo $pnivel['nivel_id']?>" class="pl-4"><?php echo $pnivel['nivel_nombre'] ?></li>
  351. <?php }?>
  352. </ul>
  353. <input type="hidden" id="nivelP" name="nivelP" value="">
  354. </div>
  355. <div class="invalid-feedback">Debe seleccionar un nivel</div>
  356. </div>
  357. </div>
  358. <div class="form-group row">
  359. <label for="estadoP" class="col-4 col-form-label">Estado *</label>
  360. <div class="col-4">
  361. <div class="form-check form-check-inline">
  362. <input class="form-check-input radio-lg" type="radio" id="estado_activoP" name="estadoP" value="1" checked="checked">
  363. <label for="estado_activoP" class="col-form-label">Activo</label>
  364. </div>
  365. </div>
  366. <div class="col-4">
  367. <div class="form-check form-check-inline">
  368. <input class="form-check-input radio-lg" type="radio" id="estado_inactivoP" name="estadoP" value="2">
  369. <label for="estado_inactivoP" class="col-form-label">Inactivo</label>
  370. </div>
  371. </div>
  372. </div>
  373. <div class="from-group row">
  374. <div class="offset-4 col-8">
  375. <button type="submit" class="btn btn-outline-primary" id="submitBtnP" data-tipo="1">
  376. <span class="ing-aceptar ing-fw"></span> Guardar
  377. </button>
  378. <button type="reset" class="btn btn-outline-danger" data-dismiss="modal">
  379. <span class="ing-cancelar ing-fw"></span> Cancelar
  380. </button>
  381. </div>
  382. </div>
  383. </div>
  384. </form>
  385. </div>
  386. </div>
  387. </div>
  388. </div>
  389. <div class="modal fade" id="modal" tabindex="-1" role="dialog" arialabelledby="modal" aria-hidden="true">
  390. <div class="modal-dialog modal-dialog-centered" role="document">
  391. <div class="modal-content">
  392. <div class="modal-header">
  393. <h4 class="col-12 modal-title text-center">
  394. <span id="modalLabel">
  395. Editar nombre de Carrera
  396. </span>
  397. <button type="button" class="close text-white" data-dismiss="modal" aria-label="close">
  398. <span aria-hidden="true">&times;</span>
  399. </button>
  400. </h4>
  401. </div>
  402. <div class="modal-body">
  403. <form action="" method="post" id="formaModal" onsubmit="return valida_campos()">
  404. <input type="hidden" name="id" id="id">
  405. <input type="hidden" name="facultad" id="facultad" value="<?php echo $_GET['facultad']; ?>">
  406. <div class="form-box">
  407. <div class="form-group row">
  408. <label for="nivel" class="col-4 col-form-label">Nivel *</label>
  409. <div class="col-8">
  410. <div class="datalist datalist-select mb-1 w-100">
  411. <div class="datalist-input">Mostrar todos</div>
  412. <span class="ing-buscar icono"></span>
  413. <ul style="display:none">
  414. <?php foreach($fs_niveles as $pnivel){?>
  415. <li data-id="<?php echo $pnivel['nivel_id']?>" class="pl-4"><?php echo $pnivel['nivel_nombre'] ?></li>
  416. <?php }?>
  417. </ul>
  418. <input type="hidden" id="nivel" name="nivel" value="">
  419. </div>
  420. </div>
  421. </div>
  422. <div class="form-group row">
  423. <label for="nombre" class="col-4 col-form-label">Nombre *</label>
  424. <div class="col-8">
  425. <input id="nombre" name="nombre" type="text" class="form-control" maxlength="100">
  426. <div class="invalid-feedback" id="nombre-error">Campo obligatorio</div>
  427. </div>
  428. </div>
  429. <div class="form-group row">
  430. <label for="estado" class="col-4 col-form-label">Estado *</label>
  431. <div class="col-4">
  432. <div class="form-check form-check-inline">
  433. <input class="form-check-input radio-lg" type="radio" id="estado_activo" name="estado" value="1" checked="checked">
  434. <label for="estado_activo" class="col-form-label">Activo</label>
  435. </div>
  436. </div>
  437. <div class="col-4">
  438. <div class="form-check form-check-inline">
  439. <input class="form-check-input radio-lg" type="radio" id="estado_inactivo" name="estado" value="0">
  440. <label for="estado_inactivo" class="col-form-label">Inactivo</label>
  441. </div>
  442. </div>
  443. </div>
  444. <div class="from-group row">
  445. <div class="offset-4 col-8">
  446. <button type="submit" class="btn btn-outline-primary" id="submitBtn" data-tipo="1">
  447. <span class="ing-aceptar ing-fw"></span> Guardar
  448. </button>
  449. <button type="reset" class="btn btn-outline-danger" id="reset" data-dismiss="modal">
  450. <span class="ing-cancelar ing-fw"></span> Cancelar
  451. </button>
  452. </div>
  453. </div>
  454. </div>
  455. </form>
  456. </div>
  457. </div>
  458. </div>
  459. </div>
  460. <script src="js/jquery.min.js"></script>
  461. <script src="js/jquery-ui.js"></script>
  462. <script src="js/bootstrap/bootstrap.min.js"></script>
  463. <script src="js/datalist.js"></script>
  464. <script src="js/datepicker-es.js"></script>
  465. <script src="js/toggle.js"></script>
  466. <?php
  467. require_once 'js/messages.php';
  468. ?>
  469. <script>
  470. $('#retardoLic').change(function(){
  471. if($(this).is(':checked')){
  472. $('.retardoLic').show();
  473. }
  474. else{
  475. $('.retardoLic').hide();
  476. $('#retardoL').val("0");
  477. }
  478. });
  479. $('#retardoPos').change(function(){
  480. if($(this).is(':checked')){
  481. $('.retardoPos').show();
  482. }
  483. else{
  484. $('.retardoPos').hide();
  485. $('#retardoP').val("0");
  486. }
  487. });
  488. $('#reset').on('click', function(){
  489. $('#antesL').val("<?= -1*($fs_tiempoLic['desde_asistencia'] ?? 0) ?>");
  490. $('#despuesL').val("<?= ($fs_tiempoLic['hasta_asistencia'] ?? 1)-1 ?>");
  491. $('#retardoL').val("<?= ($fs_tiempoLic['hasta_retardo'] ?? 0) - ($fs_tiempoLic['hasta_asistencia'] ?? 0) ?>");
  492. $('#antesP').val("<?= -1*($fs_tiempoPos['desde_asistencia'] ?? 0) ?>");
  493. $('#despuesP').val("<?= ($fs_tiempoPos['hasta_asistencia'] ?? 1)-1 ?>");
  494. $('#retardoP').val("<?= ($fs_tiempoPos['hasta_retardo'] ?? 0) - ($fs_tiempoPos['hasta_asistencia'] ?? 0) ?>");
  495. <?php
  496. if(($fs_tiempoLic['hasta_asistencia'] ?? 0) == ($fs_tiempoLic['hasta_retardo'] ?? 0)){ ?>
  497. $('.retardoLic').hide();
  498. $('#retardoL').val("0");
  499. $('#retardoLic').prop("checked", false).change();
  500. <?php }
  501. else{ ?>
  502. $('#retardoLic').prop("checked", true).change();
  503. <?php }
  504. if(($fs_tiempoPos['hasta_asistencia'] ?? 0) == ($fs_tiempoPos['hasta_retardo'] ?? 0)){ ?>
  505. $('.retardoPos').hide();
  506. $('#retardoP').val("0");
  507. $('#retardoPos').prop("checked", false).change();
  508. <?php }
  509. else{ ?>
  510. $('#retardoPos').prop("checked", true).change();
  511. <?php }
  512. ?>
  513. $('#antesL').removeClass("is-invalid");
  514. $('#despuesL').removeClass("is-invalid");
  515. $('#retardoL').removeClass("is-invalid");
  516. $('#antesP').removeClass("is-invalid");
  517. $('#despuesP').removeClass("is-invalid");
  518. $('#retardoP').removeClass("is-invalid");
  519. });
  520. $(".date-picker").datepicker($.datepicker.regional["es"]);
  521. $(".date-picker").datepicker({
  522. dateFormat: "dd/mm/yyyy",
  523. changeMonth: true,
  524. });
  525. $('#submitBtnT').on('click', function(){
  526. //$('#antesL').addClass("is-invalid");
  527. $('#formaModalTiempos').submit();
  528. });
  529. var today = new Date();
  530. function valida_camposT(){
  531. var error=false;
  532. if($('#antesL').val()==""){
  533. $('#antesL').addClass("is-invalid");
  534. error=true;
  535. }
  536. if($('#antesL').val()<0){
  537. $('#antesL').addClass("is-invalid");
  538. error=true;
  539. }
  540. if(isNaN($('#antesL').val())){
  541. $('#antesL').addClass("is-invalid");
  542. error=true;
  543. }
  544. if($('#despuesL').val()==""){
  545. $('#despuesL').addClass("is-invalid");
  546. error=true;
  547. }
  548. if($('#despuesL').val()<0){
  549. $('#despuesL').addClass("is-invalid");
  550. error=true;
  551. }
  552. if(isNaN($('#despuesL').val())){
  553. $('#despuesL').addClass("is-invalid");
  554. error=true;
  555. }
  556. if($('#retardoL').val()==""){
  557. $('#retardoL').addClass("is-invalid");
  558. error=true;
  559. }
  560. if($('#retardoL').val()<0){
  561. $('#retardoL').addClass("is-invalid");
  562. error=true;
  563. }
  564. if(isNaN($('#retardoL').val())){
  565. $('#retardoL').addClass("is-invalid");
  566. error=true;
  567. }
  568. if($('#antesP').val()==""){
  569. $('#antesP').addClass("is-invalid");
  570. error=true;
  571. }
  572. if(isNaN($('#antesP').val())){
  573. $('#antesP').addClass("is-invalid");
  574. error=true;
  575. }
  576. if($('#despuesP').val()==""){
  577. $('#despuesP').addClass("is-invalid");
  578. error=true;
  579. }
  580. if(isNaN($('#despuesP').val())){
  581. $('#despuesP').addClass("is-invalid");
  582. error=true;
  583. }
  584. if($('#retardoP').val()==""){
  585. $('#retardoP').addClass("is-invalid");
  586. error=true;
  587. }
  588. if(isNaN($('#retardoP').val())){
  589. $('#retardoP').addClass("is-invalid");
  590. error=true;
  591. }
  592. if(!error){
  593. $('#formaModalTiempos').prop("action", "./action/action_tiempos_update.php");
  594. }else{
  595. return false;
  596. }
  597. }
  598. function valida_camposP(){
  599. var error=false;
  600. if($("#fecha_inicial").val()==""){
  601. $("#fecha_inicial").addClass("is-invalid");
  602. error=true;
  603. }
  604. if($("#fecha_final").val()==""){
  605. $("#fecha_final").addClass("is-invalid");
  606. error=true;
  607. }
  608. if($("#nombreP").val()==""){
  609. $("#nombreP").addClass("is-invalid");
  610. $("#nombreP-error").html("Campo obligatorio");
  611. error=true;
  612. }
  613. if($("#nombreP").val()[0]==" "){
  614. $("#nombreP").addClass("is-invalid");
  615. $("#nombreP-error").html("No puede haber espacios al inicio");
  616. error=true;
  617. }
  618. if($("#nivelP").val()==""){
  619. error=true;
  620. $("#nivelP").addClass("is-invalid");
  621. }
  622. if(error){
  623. return false;
  624. }else{
  625. var btn = $("#submitBtnP");
  626. if(btn.data("tipo")==2)//update
  627. $("#formaModalP").prop("action", "./action/action_periodos_update.php");
  628. else{//insert
  629. $("#formaModalP").prop("action", "./action/action_periodos_insert.php");
  630. }
  631. }
  632. }
  633. <?php if(!$fs_carreras && !$fs_periodos){ ?>
  634. triggerMessage("No se encontraron carreras ni periodos en esta facultad", "Error");
  635. <?php } else if(!$fs_carreras){?>
  636. triggerMessage("No se encontraron carreras en esta facultad", "Error");
  637. <?php } else if(!$fs_periodos){?>
  638. triggerMessage("No se encontraron periodos en esta facultad", "Error");
  639. <?php }?>
  640. function valida_campos(){
  641. var error=false;
  642. if($("#nombre").val()==""){
  643. $("#nombre").addClass("is-invalid");
  644. $("#nombre-error").html("Campo obligatorio");
  645. error=true;
  646. }
  647. if($("#nombre").val()[0]==" "){
  648. $("#nombre").addClass("is-invalid");
  649. $("#nombre-error").html("No puede haber espacios al inicio");
  650. error=true;
  651. }
  652. if($("#nivel").val()==""){
  653. error=true;
  654. }
  655. if($('#estado_activo').prop('checked') == false && $('#estado_inactivo').prop('checked') == false){
  656. error=true;
  657. }
  658. if(error){
  659. return false;
  660. }else{
  661. var btn = $('#submitBtn');
  662. if(btn.data("tipo")==2)//update
  663. $("#formaModal").prop("action", "./action/action_carreras_update.php");
  664. else//insert
  665. $("#formaModal").prop("action", "./action/action_carreras_insert.php");
  666. }
  667. }
  668. $('#modal_periodo').on('show.bs.modal', function(event){//datos periodo
  669. var button = $(event.relatedTarget);
  670. var tipo = button.data('tipo');
  671. $("#nombreP").removeClass("is-invalid");
  672. if(tipo==1){//crear
  673. $('#modalLabelP').html("Agregar periodo");
  674. $("#submitBtnP").data("tipo", 1);
  675. $("#fecha_inicial").datepicker("setDate", today);
  676. $("#fecha_final").datepicker("setDate", today);
  677. $("#nombreP").val("");
  678. $("#estado_activoP").prop("checked", true);
  679. setDatalist("#nivelP",1);
  680. $("li").removeClass("selected");
  681. var fi = $("#fecha_inicial").datepicker("getDate");
  682. //$("#fecha_final").datepicker("option", "minDate", fi);
  683. }else{//editar
  684. $('#modalLabelP').html("Editar periodo");
  685. $("#submitBtnP").data("tipo", 2);
  686. var id = $(event.relatedTarget).parents("tr").data("id");
  687. var fac = $("#facultadP").val();
  688. $.ajax({
  689. url:"action/action_periodos_select.php",
  690. type:"post",
  691. dataType:"json",
  692. data:{idfacultad: fac, idperiodo: id},
  693. success:function(result){
  694. //console.log(result);
  695. $("#idP").val(result["id"]);
  696. $("#facultadP").val(result["facultad_id"]);
  697. $("#nombreP").val(result["periodo"]);
  698. var date = new Date(result["inicio"])
  699. date.setDate(date.getDate() + 1);
  700. $("#fecha_inicial").datepicker("setDate", date);
  701. date = new Date(result["fin"])
  702. date.setDate(date.getDate() + 1);
  703. $("#fecha_final").datepicker("setDate", date);
  704. //$(".datalist-input").html(result["nivel"]);
  705. setDatalist("#nivelP",result["nivel_id"]);
  706. var fi = $("#fecha_inicial").datepicker("getDate");
  707. //$("#fecha_final").datepicker("option", "minDate", fi);
  708. var ff = $("#fecha_final").datepicker("getDate");
  709. //$("#fecha_inicial").datepicker("option", "maxDate", ff);
  710. if(result['estado']=="Activo"){
  711. $('#estado_activoP').prop('checked', true);
  712. }else{
  713. $('#estado_inactivoP').prop('checked', true);
  714. }
  715. },
  716. error: function(){console.log("Error")}
  717. });
  718. }
  719. })
  720. $('#modal').on('show.bs.modal', function(event){
  721. var button = $(event.relatedTarget);
  722. var tipo = button.data('tipo');
  723. var modal = $(this);
  724. $("#nombre").removeClass("is-invalid");
  725. if(tipo == 1){//crear
  726. $("#submitBtn").data('tipo', 1);
  727. $("#modalLabel").html("Crear Carrera");
  728. $("#nombre").val("");
  729. $('#estado_activo').prop('checked', true);
  730. $('li').removeClass('selected');
  731. $(".datalist-input").html("Mostrar todas");
  732. $("#nivel").val("");
  733. }else{//editar
  734. $("#submitBtn").data('tipo', 2);
  735. $("#modalLabel").html("Editar Carrera");
  736. $("#nombre").val("");
  737. $('#estado_activo').prop('checked', true);
  738. var id = $(event.relatedTarget).parents("tr").data("id");
  739. var fac = $("#facultad").val();
  740. $.ajax({
  741. url:"action/action_carreras_select.php",
  742. type:"post",
  743. dataType:"json",
  744. data:{idfacultad: fac, idcarrera: id},
  745. success:function(result){
  746. //console.log(result);
  747. $("#id").val(result["carrera_id"]);
  748. $("#nombre").val(result["carrera_nombre"])
  749. if(result['carrera_activa']==1){
  750. $('#estado_activo').prop('checked', true);
  751. }else{
  752. $('#estado_inactivo').prop('checked', true);
  753. }
  754. setDatalist("#nivel", result["nivel_id"]);
  755. },
  756. error: function(){console.log("Error")}
  757. });
  758. }
  759. });
  760. $(document).ready(function(){
  761. $('#antesL').val("<?= -1*($fs_tiempoLic['desde_asistencia'] ?? 0) ?>");
  762. $('#despuesL').val("<?= ($fs_tiempoLic['hasta_asistencia'] ?? 1)-1 ?>");
  763. $('#retardoL').val("<?= ($fs_tiempoLic['hasta_retardo'] ?? 1) - ($fs_tiempoLic['hasta_asistencia'] ?? 0) ?>");
  764. $('#antesP').val("<?= -1*($fs_tiempoPos['desde_asistencia'] ?? 0) ?>");
  765. $('#despuesP').val("<?= ($fs_tiempoPos['hasta_asistencia'] ?? 1) -1 ?>");
  766. $('#retardoP').val("<?= ($fs_tiempoPos['hasta_retardo'] ?? 1) - ($fs_tiempoPos['hasta_asistencia'] ?? 0) ?>");
  767. $('#facultadT').val("<?= $_GET['facultad'] ?>");
  768. <?php
  769. if(($fs_tiempoLic['hasta_asistencia'] ?? 0) == ($fs_tiempoLic['hasta_retardo'] ?? 0)){ ?>
  770. $('.retardoLic').hide();
  771. $('#retardoL').val("0");
  772. $('#retardoLic').prop("checked", false).change();
  773. <?php }
  774. else{ ?>
  775. $('#retardoLic').prop("checked", true).change();
  776. <?php }
  777. if(($fs_tiempoPos['hasta_asistencia'] ?? 0) == ($fs_tiempoPos['hasta_retardo'] ?? 0)){ ?>
  778. $('.retardoPos').hide();
  779. $('#retardoP').val("0");
  780. $('#retardoPos').prop("checked", false).change();
  781. <?php }
  782. else{ ?>
  783. $('#retardoPos').prop("checked", true).change();
  784. <?php }
  785. ?>
  786. });
  787. </script>
  788. </body>
  789. </html>