feat: complete administration and reporting
This commit is contained in:
37
app/Http/Controllers/Admin/ReservationPolicyController.php
Normal file
37
app/Http/Controllers/Admin/ReservationPolicyController.php
Normal 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.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user