carreras.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <?php
  2. require_once("../include/constantes.php");
  3. require_once("../include/bd_pdo.php");
  4. require_once("../classes/ValidaSesion.php");
  5. require_once("../classes/MainMenu.php");
  6. $menu = 4;
  7. $submenu = 40;
  8. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  9. $objSesion = new ValidaSesion($pdo, $submenu, APSA);
  10. if(!$objSesion->tieneAcceso()){
  11. $objSesion->terminaSesion();
  12. }
  13. ?>
  14. <!DOCTYPE html>
  15. <html lang="es" prefix="og: http://ogp.me/ns#">
  16. <head>
  17. <title>APSA - Facultad de Ingeniería</title>
  18. <meta charset="utf-8">
  19. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  20. <link rel="icon" type="image/png" href="../img/favicon.png" />
  21. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  22. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  23. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  24. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  25. </head>
  26. <body>
  27. <div>
  28. <?php
  29. //--- Objeto que pinta menu
  30. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, APSA, "Carreras");//usr, menu, pdo, sist
  31. $menuObj->printMenu();
  32. //Obtiene carreras
  33. $stmt = $pdo->prepare('Select * from fs_carrera(NULL, NULL, NULL)');
  34. if(!$stmt->execute()){
  35. $errorDesc = "Ocurrió un error al cargar los datos de las carreras";
  36. }else
  37. $carrera_rs = $stmt->fetchAll();
  38. $stmt->closeCursor();
  39. $stmt = $pdo->prepare('Select * from fs_nivel(NULL)');
  40. if(!$stmt->execute()){
  41. $errorDesc = "Ocurrió un error al cargar los datos de los niveles";
  42. }else
  43. $nivel_rs = $stmt->fetchAll();
  44. $stmt->closeCursor();
  45. $stmt = null;
  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 de la carrera."; break;
  50. case 1: $errorDesc = "Ocurrió un error al insertar los datos de la carrera."; break;
  51. case 2: $errorDesc = "Ocurrió un error al actualizar los datos de la carrera."; 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 = "La carrera se guardó correctamente."; break;
  58. case 1: $successDesc = "La carrera se actualizó correctamente."; break;
  59. }
  60. }
  61. ?>
  62. <main class="container-fluid content marco">
  63. <?php if($objSesion->puedeEditar()){ ?>
  64. <div class="row">
  65. <div class="col-12 text-right">
  66. <button type="button" class="btn btn-outline-secondary" data-toggle="modal" data-target="#modal" data-tipo="1"><?php echo $ICO["mas"];?> Crear carrera</button>
  67. </div>
  68. </div>
  69. <?php }?>
  70. <?php include_once("../include/errorMessage.php"); ?>
  71. <?php
  72. if(isset($carrera_rs) && isset($nivel_rs)){
  73. ?>
  74. <div class="row mt-3">
  75. <div class="col-12 table-responsive">
  76. <table class="table table-sm table-striped table-white">
  77. <thead class="thead-dark">
  78. <tr >
  79. <th>Nivel</th>
  80. <th>Prefijo</th>
  81. <th>Nombre</th>
  82. <?php if($objSesion->puedeEditar()){ ?><th>Acciones</th><?php } ?>
  83. </tr>
  84. </thead>
  85. <tbody>
  86. <?php
  87. foreach($carrera_rs as $carrera){
  88. ?>
  89. <tr data-id="<?php echo $carrera["Carrera_id"]; ?>" id="id<?php echo $carrera["Carrera_id"]; ?>">
  90. <td><?php echo $carrera["Nivel_desc"]; ?></td>
  91. <td class="text-center font-weight-bold"><?php echo $carrera["Carrera_prefijo"]; ?></td>
  92. <td><?php echo $carrera["Carrera_desc"]; ?></td>
  93. <?php if($objSesion->puedeEditar()){ ?>
  94. <td class="icono-acciones text-center">
  95. <a href="#" data-toggle="modal" data-target="#modal" data-tipo="2" title="Editar"><?php echo $ICO["editar"];?></a>
  96. <a href="#" data-toggle="modal" data-target="#modal_confirm" title="Borrar"><?php echo $ICO["borrar2"];?></a>
  97. </td>
  98. <?php } ?>
  99. </tr>
  100. <?php } ?>
  101. </tbody>
  102. </table>
  103. </div>
  104. </div>
  105. <?php } ?>
  106. </main>
  107. <!--- FOOTER--->
  108. <?php require_once("../include/footer.php"); ?>
  109. <?php if($objSesion->puedeEditar()){ ?>
  110. <!-- Modal -->
  111. <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  112. <div class="modal-dialog modal-dialog-centered" role="document">
  113. <div class="modal-content">
  114. <div class="modal-header">
  115. <h4 class="col-12 modal-title text-center"><span id="modalLabel">Crear Carrera</span>
  116. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  117. <span aria-hidden="true">&times;</span>
  118. </button></h4>
  119. </div>
  120. <div class="modal-body">
  121. <form action="./action/carrera_insert.php" method="post" id="formaModal" onsubmit="submitForm()">
  122. <input type="hidden" name="id" id="id">
  123. <div class="form-box">
  124. <div class="form-group row">
  125. <label for="desc" class="col-4 col-form-label">Nombre *</label>
  126. <div class="col-8">
  127. <input id="desc" name="desc" type="text" class="form-control" required="required">
  128. </div>
  129. </div>
  130. <div class="form-group row">
  131. <label for="prefijo" class="col-4 col-form-label">Prefijo *</label>
  132. <div class="col-3">
  133. <input id="prefijo" name="prefijo" type="text" class="form-control" maxlength="5" required="required">
  134. </div>
  135. </div>
  136. <div class="form-group row">
  137. <label for="nivel" class="col-4 col-form-label">Nivel *</label>
  138. <div class="col-8">
  139. <!--<select name="nivel" id="nivel" class="form-control" required="required">
  140. <?php foreach($nivel_rs as $nivel) {?>
  141. <option value="<?php echo $nivel["Nivel_id"];?>"><?php echo $nivel["Nivel_desc"];?></option>
  142. <?php } ?>
  143. </select>-->
  144. <div class="datalist datalist-select mb-1 w-100">
  145. <div class="datalist-input" data-hidden="nivel"><?php echo $nivel_rs[0]["Nivel_desc"];?></div>
  146. <span class="ing-buscar icono"></span>
  147. <ul style="display:none">
  148. <?php foreach($nivel_rs as $nivel) {?>
  149. <li data-id="<?php echo $nivel["Nivel_id"];?>"><?php echo $nivel["Nivel_desc"];?></li>
  150. <?php }?>
  151. </ul>
  152. <input type="hidden" id="nivel" name="nivel" value="<?php echo $nivel_rs[0]["Nivel_id"];?>">
  153. </div>
  154. </div>
  155. </div>
  156. </div>
  157. <div class="form-group row">
  158. <div class="offset-4 col-8">
  159. <button type="submit" class="btn btn-outline-primary" id="submitBtn" data-tipo="1"><?php echo $ICO["aceptar"];?> Guardar</button>
  160. <button type="reset" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"];?> Cancelar</button>
  161. </div>
  162. </div>
  163. </form>
  164. </div>
  165. </div>
  166. </div>
  167. </div>
  168. <div class="modal fade" id="modal_confirm" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  169. <div class="modal-dialog modal-dialog-centered" role="document">
  170. <div class="modal-content">
  171. <div class="modal-body">
  172. <div class="row">
  173. <div class="col">
  174. <p class="font-weight-bold">¿Estás seguro de que quieres borrar la carrera?</p>
  175. <p>Esta acción no se puede deshacer.</p>
  176. </div>
  177. </div>
  178. </div>
  179. <div class="modal-footer">
  180. <input type="hidden" id="id_borrar" value="">
  181. <button type="button" class="btn btn-outline-primary btn-borrar"><?php echo $ICO["aceptar"];?> Borrar</button>
  182. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  183. </div>
  184. </div>
  185. </div>
  186. </div>
  187. <?php } ?>
  188. </div>
  189. <script src="../js/jquery.min.js"></script>
  190. <script src="../js/bootstrap/popper.min.js"></script>
  191. <script src="../js/bootstrap/bootstrap.min.js"></script>
  192. <script src="../js/sidebarmenu.js"></script>
  193. <script src="../js/datalist.js"></script>
  194. <?php if($objSesion->puedeEditar()){ ?>
  195. <script>
  196. function submitForm(){
  197. var myBtn = $('#submitBtn');
  198. if(myBtn.data("tipo") == 2 ) $('#formaModal').prop("action", "./action/carrera_update.php");
  199. else $('#formaModal').prop("action", "./action/carrera_insert.php");
  200. return true;
  201. }
  202. $(document).ready(function(){
  203. $('#modal_confirm').on('show.bs.modal', function (event) {
  204. var button = $(event.relatedTarget); // Button that triggered the modal
  205. var id = button.parents("tr").data("id");
  206. $("#id_borrar").val(id);
  207. });
  208. $(".btn-borrar").click(function(){
  209. var id = $("#id_borrar").val();
  210. //button.readonly = "true";
  211. $.ajax({
  212. url: './action/carrera_delete.php',
  213. type: 'POST',
  214. dataType: 'json',
  215. data: { id: id,},
  216. success: function(result) {
  217. if(result["error"]!= "" && result["error"] !== undefined){
  218. $("#errorBox").collapse('show');
  219. $("#errorBox_text").html(result["error"]);
  220. }else{
  221. $("#successBox").collapse('show');
  222. $("#successBox_text").html(result["ok"]);
  223. $("#id"+id).remove();
  224. }
  225. $('#messageBox')[0].scrollIntoView({ block: "end" });
  226. },
  227. error: function(jqXHR, textStatus, errorThrown ){
  228. $("#errorBox").collapse('show');
  229. $("#errorBox_text").html(errorThrown);
  230. }
  231. });//ajax
  232. $('#modal_confirm').modal("hide");
  233. });
  234. $('#modal').on('shown.bs.modal', function (event) {
  235. var button = $(event.relatedTarget); // Button that triggered the modal
  236. var tipo = button.data('tipo'); // 1 alta, 2 edicion
  237. var modal = $(this);
  238. //$(this).find(".form-control:first-child").focus();
  239. $("#errorBox").collapse('hide');
  240. $("#errorBox_text").html("");
  241. if(tipo == 1){//alta
  242. $("#submitBtn").data('tipo', 1);
  243. $("#modalLabel").html("Crear Carrera");
  244. modal.find("input[type=text]").val("");
  245. //$('#nivel').get(0).selectedIndex = 0;
  246. }else{//editar
  247. $("#submitBtn").data('tipo', 2);
  248. $("#modalLabel").html("Editar Carrera");
  249. //obtiene datos de preg
  250. var cid = $(button).parents("tr").data("id");
  251. $("#id").val(cid);
  252. $.ajax({
  253. url: './action/carrera_select.php',
  254. type: 'POST',
  255. dataType: 'json',
  256. data: { id: cid },
  257. success: function(result) {
  258. if(result["error"]!= "" && result["error"] !== undefined){
  259. modal.modal('hide');
  260. $("#errorBox").collapse('show');
  261. $("#errorBox_text").html(result["error"]);
  262. $('#messageBox')[0].scrollIntoView({ block: "end" });
  263. }else{
  264. $("#desc").val(result["desc"]);
  265. $('#nivel').val(result["nivel"]);
  266. $('#prefijo').val(result["prefijo"]);
  267. }
  268. },
  269. error: function(jqXHR, textStatus, errorThrown ){
  270. modal.modal('hide');
  271. $("#errorBox").collapse('show');
  272. $("#errorBox_text").html(errorThrown);
  273. $('#messageBox')[0].scrollIntoView({ block: "end" });
  274. }
  275. });//ajax
  276. }
  277. });//show
  278. /*$('#modal').on('hide.bs.modal', function (event) {
  279. if(reload_page)
  280. window.location.href = "carreras.php";
  281. });//hide*/
  282. });
  283. </script>
  284. <?php } ?>
  285. </body>
  286. </html>