ldc-boutique-cnc/app/Http/Controllers/Bo/TimeslotController.php

57 lines
1.8 KiB
PHP
Raw Normal View History

2022-10-03 17:13:44 +02:00
<?php
namespace App\Http\Controllers\Bo;
use App\Enums\TimeSlot\WeekDay;
2022-10-03 17:13:44 +02:00
use App\Http\Controllers\Controller;
use App\Http\Requests\Bo\Timeslots\UpdateTimeslotRequest;
use App\Models\Shop;
use App\Models\TimeslotSetting;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
class TimeslotController extends Controller
{
/**
* Display timeslot settings form
*
* @param \App\Models\Shop $shop
* @return \Illuminate\Contracts\View\View
*/
public function settings(Shop $shop)
{
2023-02-22 15:00:02 +01:00
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\TimeslotSetting> */
2022-10-03 17:13:44 +02:00
$timeslotSettings = $shop->timeslotSettings;
return view('back::pages.timeslots.settings', [
2022-10-03 17:13:44 +02:00
'timeslotSettings' => $timeslotSettings,
'shopModel' => $shop
]);
}
/**
* save settings
*
* @param \App\Http\Requests\Bo\Timeslots\UpdateTimeslotRequest $request
* @param \App\Models\Shop $shop
* @return \Illuminate\Http\RedirectResponse
*/
public function updateSettings(UpdateTimeslotRequest $request, Shop $shop)
{
return DB::transaction(function () use ($request, $shop) {
$validated = $request->validated()['plages'];
foreach (WeekDay::toArray() as $weekDay) {
$setting = TimeslotSetting::where('day', $weekDay)
->whereHas('shop', function (Builder $q) use ($shop) {
$q->where('id', $shop->id);
})->firstOrFail();
$setting->fill($validated[$weekDay->value]);
$setting->saveOrFail();
}
return redirect()->route('bo.timeslots.settings', $shop)
->with('success', 'Modifications enregistrées !');
});
}
}