users and institutions route, tests fixed

This commit is contained in:
Giuseppe Naponiello
2026-06-23 12:29:02 +02:00
parent fe73662903
commit 032f6a08df
23 changed files with 346 additions and 287 deletions

View File

@@ -47,8 +47,10 @@ class InstitutionCategoryController extends Controller
/**
* Aggiorna una categoria.
*/
public function update(UpdateInstitutionCategoryRequest $request, InstitutionCategory $institutionCategory): JsonResponse
{
public function update(
UpdateInstitutionCategoryRequest $request,
InstitutionCategory $institutionCategory
): JsonResponse {
$institutionCategory->update($request->validated());
return $this->updatedResponse($institutionCategory);

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers;
use App\Http\Traits\ApiResponse;
use App\Models\Lists\UserPosition;
use Illuminate\Http\JsonResponse;
class UserPositionController extends Controller
{
use ApiResponse;
/**
* Elenco delle position.
*/
public function index(): JsonResponse
{
return $this->collectionResponse(UserPosition::all());
}
/**
* Dettaglio di una position.
*/
public function show(UserPosition $userPosition): JsonResponse
{
return $this->okResponse($userPosition);
}
}

View File

@@ -2,8 +2,6 @@
namespace App\Http\Controllers;
use App\Http\Requests\StoreUserRoleRequest;
use App\Http\Requests\UpdateUserRoleRequest;
use App\Http\Traits\ApiResponse;
use App\Models\Lists\UserRole;
use Illuminate\Http\JsonResponse;
@@ -20,16 +18,6 @@ class UserRoleController extends Controller
return $this->collectionResponse(UserRole::all());
}
/**
* Crea un nuovo ruolo.
*/
public function store(StoreUserRoleRequest $request): JsonResponse
{
$role = UserRole::create($request->validated());
return $this->createdResponse($role);
}
/**
* Dettaglio di un ruolo.
*/
@@ -39,40 +27,12 @@ class UserRoleController extends Controller
}
/**
* Aggiorna un ruolo.
*/
public function update(UpdateUserRoleRequest $request, UserRole $userRole): JsonResponse
{
$userRole->update($request->validated());
return $this->updatedResponse($userRole);
}
/**
* Elimina un ruolo (se non di sistema e non in uso).
*/
public function destroy(UserRole $userRole): JsonResponse
{
if ($userRole->isSystemRole()) {
return $this->conflictResponse('Cannot delete a system role.');
}
if ($userRole->isInUse()) {
return $this->conflictResponse('Cannot delete: role assigned to at least one user.');
}
$userRole->delete();
return $this->deletedResponse();
}
/**
* Indica se il ruolo è bloccato per l'eliminazione (di sistema o in uso).
* Numero di utenti con questo ruolo (statistica per Admin).
*/
public function usage(UserRole $userRole): JsonResponse
{
return response()->json([
'in_use' => $userRole->isSystemRole() || $userRole->isInUse(),
'user_count' => $userRole->users()->count(),
]);
}
}

View File

@@ -2,22 +2,22 @@
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
/**
* Filtri di query per l'elenco istituzioni. Autorizzazione demandata ai
* middleware di rotta (tier.app).
*/
class IndexInstitutionRequest extends FormRequest
{
/**
* L'autorizzazione è gestita dal middleware di rotta (tier.app).
*/
public function authorize(): bool
{
return true;
}
/**
* @return array<string, mixed>
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{

View File

@@ -2,22 +2,22 @@
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
/**
* Validazione dei filtri di query per l'elenco utenti (area admin).
* L'autorizzazione è demandata ai middleware di rotta (auth + admin + setup).
*/
class IndexUserRequest extends FormRequest
{
/**
* L'autorizzazione (auth + admin + setup) è gestita dal middleware di rotta.
*/
public function authorize(): bool
{
return true;
}
/**
* @return array<string, mixed>
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{

View File

@@ -1,28 +0,0 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRoleRequest extends FormRequest
{
/**
* L'autorizzazione (solo Admin) è gestita dal middleware di rotta.
*/
public function authorize(): bool
{
return true;
}
/**
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'name' => 'required|string|max:255|unique:user_roles,name',
'description' => 'nullable|string',
];
}
}

View File

@@ -1,36 +0,0 @@
<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class UpdateUserRoleRequest extends FormRequest
{
/**
* L'autorizzazione (solo Admin) è gestita dal middleware di rotta.
*/
public function authorize(): bool
{
return true;
}
/**
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
$id = $this->route('user_role')->id;
return [
'name' => [
'required',
'string',
'max:255',
Rule::unique('user_roles', 'name')->ignore($id),
],
'description' => ['nullable', 'string'],
];
}
}