get(); return response()->json($usuarios); } public function store(Request $request): JsonResponse { $validated = $request->validate([ 'nombre' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8', 'role' => 'required|in:admin,analista,cliente,empleado', 'cliente_id' => 'nullable|exists:clientes,id', ]); $usuario = User::create([ 'nombre' => $validated['nombre'], 'email' => $validated['email'], 'password' => Hash::make($validated['password']), 'role' => $validated['role'], 'cliente_id' => $validated['cliente_id'] ?? null, ]); return response()->json($usuario->load('cliente'), 201); } public function show(User $usuario): JsonResponse { return response()->json($usuario->load('cliente')); } public function update(Request $request, User $usuario): JsonResponse { $validated = $request->validate([ 'nombre' => 'string|max:255', 'email' => 'email|unique:users,email,' . $usuario->id, 'password' => 'nullable|string|min:8', 'role' => 'in:admin,analista,cliente,empleado', 'cliente_id' => 'nullable|exists:clientes,id', ]); if (isset($validated['password'])) { $validated['password'] = Hash::make($validated['password']); } else { unset($validated['password']); } $usuario->update($validated); return response()->json($usuario->load('cliente')); } public function destroy(User $usuario): JsonResponse { $usuario->delete(); return response()->json(['message' => 'Usuario eliminado']); } }