56 lines
1.8 KiB
PHP
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 !');
|
|
});
|
|
}
|
|
}
|