feat: complete administration and reporting

This commit is contained in:
2026-08-04 17:40:52 +01:00
parent d829f34580
commit 7a4ac48aaf
42 changed files with 2595 additions and 76 deletions

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Domain\Administration\Services\ReservationPolicy;
use App\Http\Controllers\Controller;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Inertia\Response;
class ReservationPolicyController extends Controller
{
public function edit(ReservationPolicy $policy): Response
{
return Inertia::render('admin/reservation-policy', [
'definitions' => $policy->definitions(),
'values' => $policy->values(),
]);
}
public function update(Request $request, ReservationPolicy $policy): RedirectResponse
{
$rules = [];
foreach ($policy->definitions() as $key => $definition) {
$rules[str_replace('.', '\\.', $key)] = ['required', 'integer', 'min:'.$definition['min'], 'max:'.$definition['max']];
}
$request->validate($rules);
/** @var array<string, int> $values */
$values = collect(array_keys($policy->definitions()))
->mapWithKeys(fn (string $key): array => [$key => (int) $request->all()[$key]])
->all();
$policy->update($values, $request->user());
return back()->with('success', 'Regras de reserva atualizadas e aplicadas a novos pedidos.');
}
}