orderBy('name')->get(); return view('admin.employees.index', compact('employees')); } /** * Crear un nuevo empleado */ public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); $user = new User(); $user->name = $request->name; $user->email = $request->email; $user->password = Hash::make($request->password); $user->role = 'employee'; $user->save(); return redirect()->route('admin.employees.index')->with('success', 'Empleado creado correctamente.'); } /** * Eliminar un empleado */ public function destroy(User $user) { // Evitar que se elimine a sí mismo o a otro administrador (seguridad adicional) if ($user->role !== 'employee') { return redirect()->route('admin.employees.index')->with('error', 'Solo se pueden eliminar empleados.'); } if ($user->id === auth()->id()) { return redirect()->route('admin.employees.index')->with('error', 'No puedes eliminar tu propia cuenta.'); } $user->delete(); return redirect()->route('admin.employees.index')->with('success', 'Empleado eliminado correctamente.'); } /** * Actualizar datos de un empleado */ public function update(Request $request, User $user) { if ($user->role !== 'employee') { return redirect()->route('admin.employees.index')->with('error', 'Solo se pueden editar empleados.'); } $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,' . $user->id], 'password' => ['nullable', 'string', 'min:8', 'confirmed'], ]); $user->name = $request->name; $user->email = $request->email; if ($request->filled('password')) { $user->password = Hash::make($request->password); } $user->save(); return redirect()->route('admin.employees.index')->with('success', 'Empleado actualizado correctamente.'); } }