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

36 lines
943 B
PHP

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