/** * Método que valida los datos a insertar en la base de datos * @param Array $array Datos a validar * @return Boolean True = si los datos son validos, False = sino lo son */ public static function validar($array) { // Si exite el campo lo validamos // Validación del nombre if (isset($array['nombre'])) { if (($erro = Validaciones::validarNombre($array["nombre"], 50)) !== true) { Session::addArray('feedback_negative', $erro); } else { if (isset($array['id'])) { // cuando estamos editando $nombres = OfertaModel::getNombreNoRepetido($array['id']); if (!OfertaModel::compararNombre($nombres, $array['nombre'])) { Session::add('feedback_negative', 'La oferta ya exite'); } } else { // cuando estamos insertando if (OfertaModel::getNombre($array['nombre'])) { Session::add('feedback_negative', 'El nombre ya existe'); } } } } else { Session::add('feedback_negative', 'El nombre no ha sido recicibido'); } // fin de las validaciones del nombre // Validación del descripcion if (isset($array['descripcion'])) { $array['descripcion'] = Validaciones::limpiarTextarea($array['descripcion']); if (($erro = Validaciones::validarDescripcion($array["descripcion"], 1000)) !== true) { Session::addArray('feedback_negative', $erro); } } else { Session::add('feedback_negative', 'La descripcion no ha sido recicibida'); } // Fin de la validación del descripcion // Validación de los requisitos if (isset($array['requisitos'])) { $array['requisitos'] = Validaciones::limpiarTextarea($array['requisitos']); if (($erro = Validaciones::validarRequisitos($array["requisitos"], 1000)) !== true) { Session::addArray('feedback_negative', $erro); } } else { Session::add('feedback_negative', 'Los requisitos no han sido recicibidos'); } // Fin de la validación de los requisitos // Validación de la url if (isset($array['url'])) { if (($erro = Validaciones::validarUrl($array["url"])) !== true) { Session::addArray('feedback_negative', $erro); } } else { Session::add('feedback_negative', 'La url no ha sido recicibida'); } // fin de las validaciones de la url // validamos el salario if (isset($array['salario'])) { if (($erro = Validaciones::validarSalario($array["salario"])) !== true) { Session::addArray('feedback_negative', $erro); } } else { Session::add('feedback_negative', 'El salario no ha sido recibido'); } // validamos la empresa if (isset($array['empresa']) || !empty($array['empresa'])) { $array['empresa'] = Validaciones::saneamiento($array['empresa']); if (!OfertaModel::getIdEmpresaByNombre($array['empresa'])) { Session::add('feedback_negative', 'La empresa no existe'); } else { $empresa = OfertaModel::getIdEmpresaByNombre($array['empresa']); Session::set('empresa', $empresa); Session::set('selected', $array['empresa']); } } else { Session::add('feedback_negative', 'La empresa no ha sido seleccionada, o quizás no tenga ninguna'); } // Comprobación de de que no haya habido errores return Session::comprobarErrores(); }
/** * Método del controlador el cual se encarga de la edición de las ofertas * @param integer $id ID de la oferta a editar */ public function editar($id = 0) { // validamos y saneamos aqui porque vamos a utilizarlo en caso // de que no haya $_POST $id = (int) $id; $id = Validaciones::saneamiento($id); // Bloque try catch para preveer posibles excepciones try { if (!$_POST) { // comprobamos si la oferta que se intenta editar es del usuario // que realiza la petición if (!OfertaModel::comprobarPropiedadOferta($id)) { Session::add('feedback_negative', 'No puedes editar una oferta que no es tuya'); header('Location: /Oferta'); exit; } // mostrar el formulario para poder editar // para ello deberemos recuperar los BD $info = OfertaModel::getId($id); $empresa = OfertaModel::getNombreEmpresa(); $datos = ['titulo' => 'Edición de oferta', 'empresas' => $empresa, 'datos' => $info]; echo $this->view->render("ofertas/formularioOferta", $datos); } else { // tratamos los datos en el modelo if (OfertaModel::editar($id, $_POST)) { Session::add('feedback_positive', 'La oferta ha sido editada'); header('Location: /Oferta'); exit; } else { // existen errores, llamamos a la vista para mostrar los errores // Saneamos $_POST Session::add('feedback_negative', 'La oferta no se ha podido modificar o no se ha modificado nada'); $empresa = OfertaModel::getNombreEmpresa(); $array = Validaciones::sanearEntrada($_POST); $datos = ['datos' => $array, 'empresas' => $empresa]; // mostramos la vista con los datos saneados, // para evitar la inyeción de código echo $this->view->render('ofertas/formularioOferta', $datos); } } } catch (PDOException $e) { // llamamos a la vista de error 500 $array = ['msg' => 'Error del servidor, disculpe las molestias.']; echo $this->view->render('error/error500', $array); // modo debbug ON /*echo '<pre>'; echo $e->getMessage();*/ } }
public static function update($id) { // Primero tenemos que preparar un bloque try catch $errores = []; if ($_POST) { // Validamos todas las variables de $_POST $_POST = Validaciones::sanearEntrada($_POST); // empezamos la transacción $conn = Database::getInstance()->getDatabase(); $conn->beginTransaction(); if (is_array($ErrorOId = PersonaModel::update())) { $errores[] = $ErrorOId; $conn->rollback(); return Validaciones::resultado($errores); } elseif ($ErrorOId === false) { $conn->rollback(); return $errores['generic'][] = "El cliente no se ha insertado correctamente"; } else { // Comprobaos los campos requeridos en la tabla if (isset($_POST["nombreCorp"])) { $_POST["nombreCorp"] = Validaciones::saneamiento($_POST["nombreCorp"]); if (($err = Validaciones::validarNombreCorporativo($_POST["nombreCorp"])) === true) { try { $conn = Database::getInstance()->getDatabase(); $ssql = "UPDATE cliente set nombre_corporativo = :nombreCorp WHERE id=:id"; $prepare = $conn->prepare($ssql); $prepare->bindParam(":nombreCorp", $_POST["nombreCorp"], PDO::PARAM_STR); $prepare->execute(); if ($prepare->rowCount() === 1) { return $errores["nombreCorp"][] = "El nombre corporativo ya existe"; } } catch (PDOException $e) { return $errores['generic'][] = "Error en la base de datos"; } try { $conn = Database::getInstance()->getDatabase(); $ssql = "insert into cliente (id, nombre_corporativo) values (:id, :nombreCorp)"; $prepare = $conn->prepare($ssql); $prepare->bindParam(":id", $ErrorOId, PDO::PARAM_INT); $prepare->bindParam(":nombreCorp", $_POST["nombreCorp"], PDO::PARAM_STR); $prepare->execute(); if ($prepare->rowCount() === 1) { $conn->commit(); return true; } return false; } catch (PDOException $e) { return $errores['generic'][] = "Error en la base de datos"; } } else { $conn->rollback(); return $err; } } else { $conn->rollback(); return $errores["nombreCorp"][] = "El nombre corporativo no se ha recibido"; } } } else { $errores['generic'][] = "No se han recivido datos"; return Validaciones::resultado($errores); } }