ldc-boutique-cnc-sable/app/Traits/Controllers/TogglesModelStar.php

36 lines
923 B
PHP

<?php
declare(strict_types=1);
namespace App\Traits\Controllers;
use App\Actions\Common\ToggleModelStar;
use App\Actions\Common\ToggleModelStarInput;
use App\Contracts\ActionExecutor;
use App\Interfaces\ModelWithStar;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Str;
/**
* @mixin \Illuminate\Routing\Controller
*/
trait TogglesModelStar
{
/**
* Toggles model star
*/
public function toggleStar(
Model & ModelWithStar $model,
ToggleModelStar $action,
ActionExecutor $executor
): RedirectResponse {
$this->authorize('toggleStar', $model);
$executor->execute($action, new ToggleModelStarInput($model));
return back()->with('success', trans('crud.messages.has_been_updated', [
'model' => Str::ucfirst(trans_choice('models.classes.' . $model->getTable(), 1)),
]));
}
}