calendario_insert.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /* AJAX
  3. * Inserta datos del objeto para el calendario
  4. * Recibe:
  5. * json
  6. * Return:
  7. * id insertado o cadena de error
  8. */
  9. require_once("../../include/constantes.php");
  10. require_once("../../include/nocache.php");
  11. require_once("../../include/bd_pdo.php");
  12. require_once("../../include/util.php");
  13. require_once("../../classes/ValidaSesion.php");
  14. require_once("../classes/LogActividad.php");//die on error
  15. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  16. $objSesion = new ValidaSesion($pdo, 57, APSA);
  17. if(!$objSesion->tieneAcceso() || !$objSesion->puedeEditar()){
  18. $return["error"] = "Error! No tienes permisos para realizar esta acción.";
  19. }else if(!isset($_POST["json"])){
  20. $return["error"] = "Error! No se recibió la información del evento.";
  21. }else{
  22. $clase = json_decode($_POST["json"], true);
  23. $return["error"] = "";
  24. try {
  25. $pdo->beginTransaction();
  26. $error = false;
  27. //---- Insertar ----------
  28. $sql_per = ':per';
  29. if($clase["periodo"] == 0){
  30. $sql_per = 'NULL';
  31. }
  32. //Inserta evento
  33. if($clase["todo_dia"])
  34. $stmt = $pdo->prepare('Select * from fi_calendarioevento(:titulo, :fecha, true, :cat, '.$sql_per.', :desc, NULL, NULL, NULL, false)');
  35. else{
  36. $stmt = $pdo->prepare('Select * from fi_calendarioevento(:titulo, :fecha, false, :cat, '.$sql_per.', :desc, :hora_i, :hora_f, NULL, false)');
  37. $stmt->bindParam(":hora_i", $clase["hora_ini"]);
  38. $stmt->bindParam(":hora_f", $clase["hora_fin"]);
  39. }
  40. $stmt->bindParam(":titulo", $clase["titulo"]);
  41. $stmt->bindParam(":fecha", $clase["fecha_ini"]);
  42. $stmt->bindParam(":cat", $clase["cat"]);
  43. $stmt->bindParam(":desc", $clase["desc"]);
  44. if($clase["periodo"] != 0){ $stmt->bindParam(":per", $_SESSION["periodo_id"]);}
  45. if(!$stmt->execute()){
  46. $t = $stmt->errorInfo();
  47. $return["error"] .= "Ocurrió un error al insertar el evento '".$clase["titulo"]."'".$t[2];
  48. $error = true;
  49. }
  50. $rs = $stmt->fetch();
  51. $id = intval($rs["fi_calendarioevento"]);
  52. $stmt->closeCursor();
  53. unset($rs);
  54. if($id == 0){
  55. $error = true;
  56. }
  57. if(!$error && isset($clase["rrule"]) && is_array($clase["rrule"])){//Revisa reglas
  58. $rruleObj = $clase["rrule"];
  59. if($rruleObj["rep"] != 0){
  60. switch($rruleObj["rep"]){
  61. case 1://diario
  62. $stmt = $pdo->prepare('Select * from fi_calendarioreglas(:id, 1, NULL, NULL, :fecha_f)');
  63. break;
  64. case 2://semanal
  65. $stmt = $pdo->prepare('Select * from fi_calendarioreglas(:id, 2, :dias, NULL, :fecha_f)');
  66. $stmt->bindParam(":dias", $rruleObj["dias"]);
  67. break;
  68. case 3://mensual
  69. $stmt = $pdo->prepare('Select * from fi_calendarioreglas(:id, 3, :dias, :semana, :fecha_f)');
  70. $stmt->bindParam(":dias", $rruleObj["dias"]);
  71. $stmt->bindParam(":semana", $rruleObj["semana"]);
  72. break;
  73. }
  74. $stmt->bindParam(":id", $id);
  75. $stmt->bindParam(":fecha_f", $rruleObj["fecha_fin"]);
  76. if(!$stmt->execute()){
  77. $t = $stmt->errorInfo();
  78. $return["error"] .= "Ocurrió un error al insertar las reglas de repetición del evento '".$clase["titulo"]."'".$t[2];
  79. $error = true;
  80. }
  81. }
  82. }//fin reglas
  83. //Inserta Perfiles
  84. if(!$error && is_array($clase["perfiles"]) ){
  85. foreach($clase["perfiles"] as $perfil){
  86. if(!$error){
  87. $stmt = $pdo->prepare('Select * from fi_calendarioevento_perfil(:id, :perf)');
  88. $stmt->bindParam(":id", $id);
  89. $stmt->bindParam(":perf", $perfil);
  90. if(!$stmt->execute()){
  91. $t = $stmt->errorInfo();
  92. $return["error"] .= "Ocurrió un error al insertar los perfiles. ".$t[2];
  93. $error = true;
  94. }
  95. $stmt->closeCursor();
  96. }
  97. }
  98. }//fin profesores
  99. if(!$error){
  100. $pdo->commit();
  101. unset($return["error"]);
  102. $return["ok"] = "El evento se guardó correctamente";
  103. $return["id"] = $id;
  104. //Inserta Log
  105. $log = new LogActividad();
  106. $desc_log = "Inserta en eventos EventoID[".$id."] Titulo[".$clase["titulo"]."] Día[".$clase["fecha_ini"]."] HoraIni[".$clase["hora_ini"]."] HoraFin[".$clase["hora_fin"]."]";
  107. $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log);
  108. }else
  109. $pdo->rollBack();
  110. $stmt = null; // cierra conexion
  111. } catch(PDOException $e) {
  112. $pdo->rollBack();
  113. $return["error"] = "Ocurrió un error al insertar los datos del evento.";
  114. }
  115. }
  116. $return["json"] = json_encode($return);
  117. echo json_encode($return);
  118. ?>