/**
  * 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')]);
 }
Exemple #2
0
 /**
  * Método que modifica un registro ya existente a partir de los datos del request pasados
  * por post desde el formulario y el id del usuario que modifica su perfil.
  *
  * @param $request
  * @param $id
  * @return bool
  */
 public static function modificar($request, $id)
 {
     //Buscamos y volcamos los datos del usuario logado para modificarlos:
     $usuario = Usuario::find($id);
     //Vamos sobreescribiendo en esta instancia todos los campos con los procedentes
     // del request:
     $usuario->nombre_usuario = $request->nombre_usuario;
     //La password puede modificarse o no. En caso de que el usuario ay tecleado una
     //password nueva, la encriptamos y la guardamos en la instancia, en caso de
     //que el usuario no teclee nada, no se actualiza este campo en el save.
     if (isset($request->password) && $request->password != '') {
         $usuario->password = bcrypt($request->password);
     }
     //Grabamos en la instancia el resto de los datos:
     $usuario->localizacion = $request->localizacion;
     $usuario->latitud = $request->latitud;
     $usuario->longitud = $request->longitud;
     $usuario->email = $request->email;
     $usuario->telefono = $request->telefono;
     $usuario->movil = $request->movil;
     $usuario->whatsapp = $request->whatsapp ? 1 : 0;
     $usuario->geolocalizacion = $request->geolocalizacion ? 1 : 0;
     //Trasladamos el contenido de la instancia usuario a su registro en la base de datos
     //con ayuda del método save() heredado de Model.
     $ok = $usuario->save();
     //En caso de existir productos compartidos previos, comprobamos si se han borrado o no, y
     //los mantenemos, modificamos o borramos, según el valos del campo $producto.
     //La clave a buscar en la tabla, nos hemos encargado de alimentarla desde la vista
     //con el campo $clave
     if (isset($request->productoCompartido)) {
         foreach ($request->productoCompartido as $clave => $producto) {
             if ($producto != 'Producto') {
                 //Si el valor del campo es diferente a Producto, cogemos el índice correspondiente y
                 //modificamos ese mismo registro a lo que haya puesto de nuevo el usuario.
                 Usuario_producto::modificar($usuario->cod_usuario, Usuario_producto::getCodProducto($producto), $clave);
             } else {
                 //Si se ha eliminado el producto compartido de la vista, debe contener 'Producto' en el
                 //valor del campo, con lo que borramos el registro correspondiente a ese id:
                 Usuario_producto::borrarPorId($clave);
             }
         }
     }
     //Los productos nuevos que se quieran compartir, se habrán recibido en el campo producto,
     //en un array con tantas posiciones como artículos nuevos se hayan añadido:
     if (isset($request->producto)) {
         foreach ($request->producto as $producto) {
             //Siguiendo el mismo algoritmo de altas, por cada producto nuevo a compartir, creamos
             //un registro en la tabla Usuario_producto:
             if ($producto != 'Producto' && !Usuario_producto::buscar($usuario->cod_usuario, $producto)) {
                 Usuario_producto::crear($usuario->cod_usuario, $producto);
             }
         }
     }
     //Nota: Podría contemplarse un rollback para el caso de que nos e pudiera completar el
     //grabado de productos, pero al estar el formulario abierto para grabar 1, varios o ningún
     //producto compartido, es comlpicado determinar en qué cirsunscancias sería necesario
     //establecer la necesidad de un rollback.
     return $ok;
     //Devolvemos el resultado de la modificación.
 }
 /**
  * Gestiona la visualización del formulario en caso de que se acceda a él por una llamada get
  * correspondiente al usuario entrando en el perfil por primera vez.
  *
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
  */
 public function edit()
 {
     //Alimentamos la vista de forma básica, con todos los datos que necesitamos para volcar los
     //campos del perfil de usuario.
     return view('profile', ['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()]);
 }
 /**
  * Create a new user instance after a valid registration.
  *
  * @param  array  $data
  * @return Usuario
  */
 protected function create(array $data)
 {
     //Se sobreescribe la creación del registro nuevo con la función
     //existente en el modelo.
     return Usuario::crear($data);
 }