You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

157 lines
4.7 KiB

<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use App\Exports\UsuariosExport;
use Maatwebsite\Excel\Facades\Excel;
use PDF; // Asegúrate de incluir la clase PDF
class usuariosController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request)
{
$busqueda = $request->busqueda;
if ($busqueda) {
// Busca en la columna 'name' de la tabla 'users'
$usuarios = User::where('name', 'LIKE', "%{$busqueda}%")->where('eliminado', 0)->get();
if ($usuarios->isEmpty()) {
return redirect()->route('usuarios')
->with('error', 'No existe ningún usuario con el nombre "' . $busqueda . '". Por favor, inténtalo de nuevo.');
}
} else {
// Si no hay búsqueda, mostrar todos los usuarios
$usuarios = User::where('eliminado', 0)->get();
}
return view('usuarios', ['usuarios' => $usuarios]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
return view('usuariosCrearEditar'); // Vista para crear usuario
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
// Validación de datos
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'apellido' => 'required|string|max:255',
'puesto' => 'required|string|max:255',
'carrera' => 'required|string|max:255',
'telefono' => 'required|string|max:255',
'password' => 'required|string|min:8|confirmed',
]);
// Crear nuevo usuario
$usuario = new User();
$usuario->name = $request->name;
$usuario->email = $request->email;
$usuario->apellido = $request->apellido;
$usuario->puesto = $request->puesto;
$usuario->carrera = $request->carrera;
$usuario->telefono = $request->telefono;
$usuario->password = bcrypt($request->password);
$usuario->save();
return redirect()->route('usuarios')->with('success', 'Usuario creado exitosamente.');
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
// Implementar si es necesario
}
/**
* Show the form for editing the specified resource.
*/
public function edit($id)
{
$usuario = User::findOrFail($id);
return view('usuariosCrearEditar', compact('usuario')); // Vista para editar usuario
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
{
// Validación de datos
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255',
'apellido' => 'required|string|max:255',
'puesto' => 'required|string|max:255',
'carrera' => 'required|string|max:255',
'telefono' => 'required|string|max:255',
'password' => 'nullable|string|min:8|confirmed',
]);
// Actualizar usuario
$usuario = User::findOrFail($id);
$usuario->name = $request->name;
$usuario->email = $request->email;
$usuario->apellido = $request->apellido;
$usuario->puesto = $request->puesto;
$usuario->carrera = $request->carrera;
$usuario->telefono = $request->telefono;
if ($request->filled('password')) {
$usuario->password = bcrypt($request->password);
}
$usuario->save();
return redirect()->route('usuarios')->with('success', 'Usuario actualizado exitosamente.');
}
/**
* Remove the specified resource from storage.
*/
public function destroy($id)
{
// Buscar el usuario por ID
$usuario = User::findOrFail($id);
// Cambiar el estado de eliminado a 1
$usuario->eliminado = 1; // Asumiendo que 'eliminado' es el campo que indica el estado
$usuario->save(); // Guardar los cambios
// Redirigir a la lista de usuarios con un mensaje de éxito
return redirect()->route('usuarios')->with('success', 'Usuario eliminado exitosamente.');
}
public function exportExcel()
{
return Excel::download(new UsuariosExport, 'usuarios.xlsx');
}
public function exportPDF()
{
$usuarios = User::where('eliminado', 0)->get();
$pdf = PDF::loadView('exports.usuarios-pdf', ['usuarios' => $usuarios]);
return $pdf->download('usuarios.pdf');
}
}