orderBy('sort_order')->orderBy('acronym'); match ($request->input('scope')) { 'record' => $query->forRecord(), 'media' => $query->forMedia(), default => null, }; if ($request->filled('active')) { $query->where('active', $request->boolean('active')); } return $this->collectionResponse($query->get()); } /** * Crea una licenza. */ public function store(StoreLicenseRequest $request): JsonResponse { $license = License::create($request->validated()); return $this->createdResponse($license); } /** * Dettaglio di una licenza. */ public function show(License $license): JsonResponse { return $this->okResponse($license); } /** * Aggiorna una licenza (anche parzialmente, es. solo `active`). */ public function update(UpdateLicenseRequest $request, License $license): JsonResponse { $license->update($request->validated()); return $this->updatedResponse($license); } /** * Elimina una licenza (se non assegnata ad alcun contenuto). */ public function destroy(License $license): JsonResponse { if ($license->isInUse()) { return $this->conflictResponse('Cannot delete: license assigned to at least one record or media file.'); } $license->delete(); return $this->deletedResponse(); } /** * Indica se la licenza è in uso (bloccata per l'eliminazione). */ public function usage(License $license): JsonResponse { return response()->json([ 'in_use' => $license->isInUse(), ]); } }