Ejemplo n.º 1
0
 /**
  * Gestiona la visualización de la vista correspondiente a la petición post
  * tras haber modificado el perfil de usuario.
  *
  * @return $this|\Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
  */
 public function index()
 {
     $ok = null;
     //COMPROBAR SI SE HA SOLICITADO LA BAJA ANTES DE HACER NADA MÁS:
     //==============================================================
     //En caso de que el usuario haya marcado el check de eliminar perfil
     //redirigiremos a la url que gestionará la baja de este usuario.
     if (\Input::has('eliminar')) {
         //Lo primero es destruir el usuario logado.
         $baja = Usuario::destroy(auth()->user()->cod_usuario);
         //Redirigimos el flujo del programa a la url prevista para llevar al usuario
         //directamente a la página de bienvenida, con un pequeño mensaje indicando que su
         //perfil ha sido eliminado, ya que a partir de este instante solo podrá
         //acceder a las url permitidas para invitados:
         $ok = redirect('/baja/' . $baja);
     } else {
         //Volcamos los datos del request en una variable:
         $request = \Request::instance();
         //Validamos el formulario en servidor, con el validador previsto en el modelo:
         $validacion = Usuario::validarModificacion($request);
         if ($validacion->fails()) {
             //Si la validación falla, comunicamos devolveremos la ristra de errores para que la vista los
             //interprete y vizualice en su lugar.
             $ok = redirect()->back()->withInput()->withErrors($validacion->errors());
         } elseif (Usuario::modificar($request, auth()->user()->cod_usuario)) {
             //Se añade el registro de la tabla usuarios, para poder refrescarlo de forma correcta en la vista. Si no lo
             //hacemos así, los campos del perfil de usuarios, no se actualizan en la sesión tras el update en todos los casos, solo
             //si no modificamos los productos ofrecidos. Este bug se ha resuelto completamente con esta técnica, ya que no
             // se recupera ningún dato del usuario de sesión, salvo el código, el esto procede de la base de datos recién
             //actualizada.
             $ok = view('profile', ['exito' => true, 'categoria' => Categoria::all(), 'subcategoria' => Subcategoria::all(), 'producto' => Producto::all(), 'usuario' => Usuario::where('cod_usuario', auth()->user()->cod_usuario)->first(), 'compartido' => Usuario_producto::where('usuario', auth()->user()->cod_usuario)->get()]);
         } else {
             //Si ha habido algún otro error (por ejemplo, de acceso a base de datos), alimentamos la vista de forma
             //que se muestre un mensaje genérico de que la operación no se ha completado de forma exitosa:
             $ok = view('profile', ['exito' => false, 'categoria' => Categoria::all(), 'subcategoria' => Subcategoria::all(), 'producto' => Producto::all(), 'usuario' => Usuario::where('cod_usuario', auth()->user()->cod_usuario)->first(), 'compartido' => Usuario_producto::where('usuario', auth()->user()->cod_usuario)->get()]);
         }
     }
     //Retornamos la variable $ok, que guarda la alimentación para la vista, independientemente del resultado.
     return $ok;
 }
Ejemplo n.º 2
0
 /**
  * Gestiona la baja del registro del id y tabla pasados por parámetro y realimenta
  * la vista con el mensaje de éxito/error correspondiente.
  *
  * @param $tabla
  * @param $id
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function destroy($tabla, $id)
 {
     //Mismo algoritmo que en altas y modificaciones:
     //  - Diferentes cases para cada modelo.
     //  - Guardamos el resultado en un flag
     //  - Retornamos la vista con variables que la realimentan
     //  y le dicen a si mostrar el mensaje de éxito
     //  o un error.
     $borrado = null;
     switch ($tabla) {
         case 'categorias':
             $borrado = Categoria::destroy($id);
             break;
         case 'peticiones':
             $borrado = Peticion::destroy($id);
             break;
         case 'productos':
             $borrado = Producto::destroy($id);
             break;
         case 'subcategorias':
             $borrado = Subcategoria::destroy($id);
             break;
         case 'usuarios':
             $borrado = Usuario::destroy($id);
             break;
         case 'usuarios_productos':
             $borrado = Usuario_producto::destroy($id);
     }
     $resultados = DB::table($tabla)->get();
     $campos = DB::getSchemaBuilder()->getColumnListing($tabla);
     return view('cpanel', ['exito' => $borrado, 'editar' => false, 'nuevo' => false, 'tabla' => $tabla, 'id' => '', 'campos' => $campos, 'resultados' => $resultados, 'tablas' => DB::select('SHOW TABLES'), 'ddbb' => 'Tables_in_' . env('DB_DATABASE')]);
 }