Viacstupňové schvaľovanie
Postupnosť stupňov definujete cez stages(); každý stupeň sa otvorí až po uzavretí predchádzajúceho:
use RoundlyConsulting\Approvals\DataTransferObjects\StageDefinition;
use RoundlyConsulting\Approvals\Enums\ApprovalRule;
$request = Requests::make()
->title('Payout')
->stages([
new StageDefinition([$manager], ApprovalRule::Unanimous, name: 'manager'),
new StageDefinition([$finance], ApprovalRule::Unanimous, name: 'finance'),
new StageDefinition([$director], ApprovalRule::Unanimous, name: 'director'),
])
->create();
$request->currentStage()?->name; // 'manager'Schválenia posúvajú žiadosť cez jednotlivé stupne; do stavu Approved prejde po uzavretí posledného:
Requests::approve($request, $manager);
$request->currentStage()?->name; // 'finance'
Requests::approve($request, $finance);
$request->currentStage()?->name; // 'director'
Requests::approve($request, $director);
$request->fresh()->status; // Status::ApprovedStageDefinition
Každý stupeň má vlastných schvaľovateľov, pravidlo, kvórum a názov:
new StageDefinition(
approvers: [$a, $b, $c], // list<Model>
rule: ApprovalRule::Quorum, // defaults to ApprovalRule::Unanimous
quorum: 2, // ?int — for quorum / weighted stages
name: 'board', // ?string — shown by currentStage()->name
);Zamietnutie v rámci stupňov
Predvolene zamietnutie v ktoromkoľvek stupni zamietne celú žiadosť. Zavolajte rejectOnStageRejection(false), ak chcete zamietnutý stupeň preskočiť a pokračovať:
$request = Requests::make()
->rejectOnStageRejection(false)
->stages([
new StageDefinition([$manager], name: 'manager'),
new StageDefinition([$finance], name: 'finance'),
])
->create();
// The first stage rejects, but the pipeline carries on to the next stage.
Requests::reject($request, $manager, reason: 'Skip me');
$request->fresh()->status; // Status::New
$request->currentStage()?->name; // 'finance'Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.