ldc-boutique-cnc/app/Http/Controllers/Bo/TimeslotController.php
2023-03-09 11:58:40 +01:00

56 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers\Bo;
use App\Enums\TimeSlot\WeekDay;
use App\Http\Controllers\Controller;
use App\Http\Requests\Bo\Timeslots\UpdateTimeslotRequest;
use App\Models\Shop\Shop;
use App\Models\Shop\TimeslotSetting;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
class TimeslotController extends Controller
{
/**
* Display timeslot settings form
*
* @param \App\Models\Shop\Shop $shop
* @return \Illuminate\Contracts\View\View
*/
public function settings(Shop $shop)
{
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Shop\TimeslotSetting> */
$timeslotSettings = $shop->timeslotSettings;
return view('back::pages.timeslots.settings', [
'timeslotSettings' => $timeslotSettings,
'shopModel' => $shop
]);
}
/**
* save settings
*
* @param \App\Http\Requests\Bo\Timeslots\UpdateTimeslotRequest $request
* @param \App\Models\Shop\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 !');
});
}
}