38 lines
1.3 KiB
PHP
38 lines
1.3 KiB
PHP
<?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.');
|
|
}
|
|
}
|