/** * Visualiza la página tras la grabación de la petición y vuelca los * mansajes de error en caso de que existan. * * @return \Illuminate\Http\Response */ public function index() { //Variable para retornar los datos resultantes de la gestión del formulario $resultado = null; //Volcamos los datos del formulario en una variable y usamos el validador de la //clase para validar los datos. $request = \Request::instance(); $validacion = Peticion::validar($request); if ($validacion->fails()) { //Comunicación de errores en caso de que no esté correcto el formulario $resultado = redirect()->back()->withInput()->withErrors($validacion->errors()); } elseif ($this->store($request, auth()->user()->cod_usuario)) { //Si la validación es buena, y la grabación se realiza bien, enviamos un correo al //administrador del sitio como aviso de que tiene unapetición nueva. $asunto = 'Nuevo mensaje de usuario Giftfinder'; $mensaje = '<br/>Email usuario: ' . $request->email_respuesta . '<br/>Asunto: ' . $request->asunto . '<br/>Mensaje: ' . $request->mensaje; //Si no indicamos esta cabecera, no inerpretará el código html y no saldrán //los acentos ni las ñ correctamente: $cabecera = 'Content-type: text/html; charset=utf-8'; //En vez de rociodemula@demosdata.com, se podría enviar a un buzón especifico del //sitio, o al correo de todos los administradores de la tabla Usuarios. $correo = mail('*****@*****.**', $asunto, $mensaje, $cabecera); //Devolvemos el resultado de éxito y el resultado del envío de correo a la vista. $resultado = view('contact', ['exito' => true, 'correo' => $correo]); } else { //Si ha fallado la grabación en la tabla Peticiones, preparamos el resultado para //que la vista lance el mensaje de error. $resultado = view('contact', ['exito' => false, 'correo' => false]); } return $resultado; //El resultado se devuelve de igual forma. }
/** * Alimenta la vista tras haber pulsado el botón para grabar un registro ya * existente modificándolo. * * @return $this|\Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function update() { //Recuperamos el contenido del request: $request = \Request::instance(); //Guardamos los datos importantes del request en variables independientes //para que sean más manejables: $id = $request->get('id'); $tabla = $request->get('tabla'); //Inicializamos algunos flag y variables necesarias: $grabado = null; $validacion = null; $ok = null; //Al igual que en altas, según la tabla, cambiará el procedimiento, y nos iremos //a los métodos específicos de cada modelo, algunos, diseñados para esta opción de //panel de administración, ya que es diferente del formulario genérico de usuario: switch ($tabla) { case 'categorias': $validacion = Categoria::validar($request); if (!$validacion->fails()) { $grabado = Categoria::modificar($request, $id); } break; case 'peticiones': $validacion = Peticion::validar($request); if (!$validacion->fails()) { $grabado = Peticion::modificar($request, $id); } break; case 'productos': $validacion = Producto::validar($request); if (!$validacion->fails()) { $grabado = Producto::modificar($request, $id); } break; case 'subcategorias': $validacion = Subcategoria::validar($request); if (!$validacion->fails()) { $grabado = Subcategoria::modificar($request, $id); } break; case 'usuarios': $validacion = Usuario::validarAdmin($request); if (!$validacion->fails()) { $grabado = Usuario::modificarAdmin($request, $id); } break; case 'usuarios_productos': $validacion = Usuario_producto::validar($request); if (!$validacion->fails()) { $grabado = Usuario_producto::modificarAdmin($request, $id); } } //Recargamos los datos para alimentar los combos y cabeceras de la vista: $resultados = DB::table($tabla)->get(); $campos = DB::getSchemaBuilder()->getColumnListing($tabla); if ($grabado) { //Si se ha grabado, devolveremos la vista sin errores: $ok = view('cpanel', ['exito' => true, 'editar' => false, 'nuevo' => false, 'tabla' => $tabla, 'id' => '', 'campos' => $campos, 'resultados' => $resultados, 'tablas' => DB::select('SHOW TABLES'), 'ddbb' => 'Tables_in_' . env('DB_DATABASE')]); } else { if ($validacion->fails()) { //Si ha fallado la validación pasaremos los errores de validación: $ok = redirect()->back()->withInput()->withErrors($validacion->errors()); } else { //La única opción que nos queda es qeu haya pasado la validación pero nos //falle la grabación en base de datos, con lo que preparamos la alimentación //de la vista para un error genérico: $ok = view('cpanel', ['exito' => false, 'editar' => false, 'nuevo' => false, 'tabla' => $tabla, 'id' => '', 'campos' => $campos, 'resultados' => $resultados, 'tablas' => DB::select('SHOW TABLES'), 'ddbb' => 'Tables_in_' . env('DB_DATABASE')]); } } return $ok; }