ldc-boutique-cnc-sable/app/Traits/Controllers/TogglesModelStar.php
2026-10-27 09:58:12 +01:00

40 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Traits\Controllers;
use App\Interfaces\ModelWithStar;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
/**
* @mixin \Illuminate\Routing\Controller
*/
trait TogglesModelStar
{
/**
* Toggles model star
*/
public function toggleStar(Model & ModelWithStar $model): RedirectResponse
{
$this->authorize('toggleStar', $model);
try {
return DB::transaction(function () use ($model) {
$model->toggleStar();
$model->saveOrFail();
return back()->with('success', trans('crud.messages.has_been_updated', [
'model' => Str::ucfirst(trans_choice('models.classes.' . $model->getTable(), 1)),
]));
});
} catch (\Throwable) {
return back()->with('error', trans('crud.messages.cannot_be_updated', [
'model' => Str::ucfirst(trans_choice('models.classes.' . $model->getTable(), 1)),
]));
}
}
}