feat(staff): scope scanner management and category assignments by event

This commit is contained in:
2026-09-30 15:31:56 -03:00
parent 655364bfec
commit e64393812c
8 changed files with 59 additions and 25 deletions

View File

@@ -2,9 +2,10 @@
namespace App\Shared\Forms\Controllers\AdminApp;
use App\Domains\Core\Auth\Services\EventScopeService;
use App\Http\Controllers\Controller;
use App\Shared\Forms\Resources\StaffFormResource;
use App\Shared\Forms\Services\StaffFormService;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class StaffFormController extends Controller
@@ -15,7 +16,8 @@ class StaffFormController extends Controller
{
return StaffFormResource::make(
$this->staffFormService->get(
$request->user('sanctum')->tenant()->firstOrFail()
$request->user('sanctum')->tenant()->firstOrFail(),
app(EventScopeService::class)->eventId($request->user())
)
);
}

View File

@@ -10,7 +10,7 @@ use Illuminate\Database\Eloquent\Collection;
class StaffFormService
{
/** @return array{categories: Collection<int, Category>} */
public function get(Tenant $tenant): array
public function get(Tenant $tenant, ?int $eventId = null): array
{
return [
'categories' => Category::query()
@@ -20,6 +20,8 @@ class StaffFormService
->orWhereHas('catalogItems', fn (Builder $items) => $items
->where('tenant_code', $tenant->codigo));
})
->when($eventId !== null, fn (Builder $query) => $query->whereHas(
'catalogItems', fn (Builder $items) => $items->where('tenant_code', $tenant->codigo)->where('event_id', $eventId)))
->orderBy('nombre')
->get(),
];

View File

@@ -21,7 +21,7 @@ Route::prefix('v1/adminapp/forms')
)->middleware('adminapp.tenant')->middleware('tenant.menu:adminapp.desfile.reservas')
->name('adminapp.forms.desfile.entry-reservation');
Route::get('sale', SaleFormController::class);
Route::get('staff', StaffFormController::class)->middleware('adminapp.tenant');
Route::get('staff', StaffFormController::class);
Route::get('tickets-filter', TicketFilterFormController::class)->middleware('adminapp.tenant')
->middleware('tenant.menu:adminapp.tickets')
->name('adminapp.forms.tickets-filter');