tieneAcceso() || !$objSesion->puedeEditar()){ $return["error"] = "Error! No tienes permisos para realizar esta acción."; }else if(!isset($_POST["json"])){ $return["error"] = "Error! No se recibió la información del evento."; }else{ $clase = json_decode($_POST["json"], true); $return["error"] = ""; try { $pdo->beginTransaction(); $error = false; //---- Insertar ---------- $sql_per = ':per'; if($clase["periodo"] == 0){ $sql_per = 'NULL'; } //Inserta evento if($clase["todo_dia"]) $stmt = $pdo->prepare('Select * from fi_calendarioevento(:titulo, :fecha, true, :cat, '.$sql_per.', :desc, NULL, NULL, NULL, false)'); else{ $stmt = $pdo->prepare('Select * from fi_calendarioevento(:titulo, :fecha, false, :cat, '.$sql_per.', :desc, :hora_i, :hora_f, NULL, false)'); $stmt->bindParam(":hora_i", $clase["hora_ini"]); $stmt->bindParam(":hora_f", $clase["hora_fin"]); } $stmt->bindParam(":titulo", $clase["titulo"]); $stmt->bindParam(":fecha", $clase["fecha_ini"]); $stmt->bindParam(":cat", $clase["cat"]); $stmt->bindParam(":desc", $clase["desc"]); if($clase["periodo"] != 0){ $stmt->bindParam(":per", $_SESSION["periodo_id"]);} if(!$stmt->execute()){ $t = $stmt->errorInfo(); $return["error"] .= "Ocurrió un error al insertar el evento '".$clase["titulo"]."'".$t[2]; $error = true; } $rs = $stmt->fetch(); $id = intval($rs["fi_calendarioevento"]); $stmt->closeCursor(); unset($rs); if($id == 0){ $error = true; } if(!$error && isset($clase["rrule"]) && is_array($clase["rrule"])){//Revisa reglas $rruleObj = $clase["rrule"]; if($rruleObj["rep"] != 0){ switch($rruleObj["rep"]){ case 1://diario $stmt = $pdo->prepare('Select * from fi_calendarioreglas(:id, 1, NULL, NULL, :fecha_f)'); break; case 2://semanal $stmt = $pdo->prepare('Select * from fi_calendarioreglas(:id, 2, :dias, NULL, :fecha_f)'); $stmt->bindParam(":dias", $rruleObj["dias"]); break; case 3://mensual $stmt = $pdo->prepare('Select * from fi_calendarioreglas(:id, 3, :dias, :semana, :fecha_f)'); $stmt->bindParam(":dias", $rruleObj["dias"]); $stmt->bindParam(":semana", $rruleObj["semana"]); break; } $stmt->bindParam(":id", $id); $stmt->bindParam(":fecha_f", $rruleObj["fecha_fin"]); if(!$stmt->execute()){ $t = $stmt->errorInfo(); $return["error"] .= "Ocurrió un error al insertar las reglas de repetición del evento '".$clase["titulo"]."'".$t[2]; $error = true; } } }//fin reglas //Inserta Perfiles if(!$error && is_array($clase["perfiles"]) ){ foreach($clase["perfiles"] as $perfil){ if(!$error){ $stmt = $pdo->prepare('Select * from fi_calendarioevento_perfil(:id, :perf)'); $stmt->bindParam(":id", $id); $stmt->bindParam(":perf", $perfil); if(!$stmt->execute()){ $t = $stmt->errorInfo(); $return["error"] .= "Ocurrió un error al insertar los perfiles. ".$t[2]; $error = true; } $stmt->closeCursor(); } } }//fin profesores if(!$error){ $pdo->commit(); unset($return["error"]); $return["ok"] = "El evento se guardó correctamente"; $return["id"] = $id; //Inserta Log $log = new LogActividad(); $desc_log = "Inserta en eventos EventoID[".$id."] Titulo[".$clase["titulo"]."] Día[".$clase["fecha_ini"]."] HoraIni[".$clase["hora_ini"]."] HoraFin[".$clase["hora_fin"]."]"; $log->appendLog($_SESSION["usuario_id"], $_SESSION["usuario_nombre"]." ".$_SESSION["usuario_apellidos"], $desc_log); }else $pdo->rollBack(); $stmt = null; // cierra conexion } catch(PDOException $e) { $pdo->rollBack(); $return["error"] = "Ocurrió un error al insertar los datos del evento."; } } $return["json"] = json_encode($return); echo json_encode($return); ?>