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 ---------- //Inserta evento if($clase["todo_dia"]) $stmt = $pdo->prepare('Select * from fi_calendarioevento(:titulo, :fecha, true, NULL, :per, :desc, NULL, NULL, NULL, true)'); else{ $stmt = $pdo->prepare('Select * from fi_calendarioevento(:titulo, :fecha, false, NULL, :per, :desc, :hora_i, :hora_f, NULL, true)'); $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(":per", $_SESSION["periodo_id"]); $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(); //Inserta insignia if($clase["tiene_evidencia"]){ $stmt = $pdo->prepare('Select * from fi_insignia(:titulo, :desc, :tipo, :puesto, true, :evidencia, true)'); $stmt->bindParam(":evidencia", $clase["evidencia"]); }else{ $stmt = $pdo->prepare('Select * from fi_insignia(:titulo, :desc, :tipo, :puesto, false, NULL, true)'); } $stmt->bindParam(":titulo", $clase["titulo"]); $stmt->bindParam(":desc", $clase["desc"]); $stmt->bindParam(":tipo", $clase["tipo"]); $stmt->bindParam(":puesto", $clase["puesto"]); if(!$stmt->execute()){ $t = $stmt->errorInfo(); $return["error"] .= "Ocurrió un error al insertar la insignia '".$clase["titulo"]."'".$t[2]; $error = true; } $rs = $stmt->fetch(); $id_insignia = intval($rs["fi_insignia"]); $stmt->closeCursor(); //Inserta insignia General if($clase["tiene_inscripciones"]){ $fecha_ini = fechaGuion($clase["insc_ini"]); $fecha_fin = fechaGuion($clase["insc_fin"])." ".trim($clase["insc_hora_fin"]).":00"; $stmt = $pdo->prepare('Select * from fi_insigniageneral(:insignia, :evento, :fecha_ini, :fecha_fin)'); $stmt->bindParam(":fecha_ini", $fecha_ini); $stmt->bindParam(":fecha_fin", $fecha_fin); }else{ $stmt = $pdo->prepare('Select * from fi_insigniageneral(:insignia, :evento, NULL, NULL)'); } $stmt->bindParam(":insignia", $id_insignia); $stmt->bindParam(":evento", $id); if(!$stmt->execute()){ $t = $stmt->errorInfo(); $return["error"] .= "Ocurrió un error al insertar la insignia general'".$clase["titulo"]."'".$t[2]; $error = true; } $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 $perfiles_arr = array(1,3,4); if(!$error && is_array($perfiles_arr) ){ foreach($perfiles_arr 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 perfiles //Inserta atributos if(!$error && !empty($clase["atributos"]) ){ $stmt = $pdo->prepare('Select * from fi_insignia_atributoegreso(:id, :atr, :nivel)'); $stmt->bindParam(":id", $id_insignia); for($i=0; $i< count($clase["atributos"]) && !$error; $i++){ if( intval($clase["atributos"][$i]["id"]) != 0){ $stmt->bindParam(":atr", $clase["atributos"][$i]["id"]); $stmt->bindParam(":nivel", $clase["atributos"][$i]["nivel"]); if(!$stmt->execute()){ $t = $stmt->errorInfo(); $return["error"] .= "Ocurrió un error al insertar los atributos. ".$t[2]; $error = true; } } } $stmt->closeCursor(); } 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 insignia general EventoID[".$id."] Insignia[".$id_insignia."] 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.". $e->getMessage(); } } $return["json"] = json_encode($return); echo json_encode($return); ?>