Zrušenie a expirácia
Requests::cancel($request); // status = Cancelled
Requests::expire($request); // status = Expiredcancel() vyvolá RequestStatusChanged a RequestCancelled; expire() vyvolá RequestStatusChanged a RequestExpired.
Obe zároveň uzavrú otvorené schvaľovacie kolo žiadosti, takže neskoré rozhodnutie ju už nevyrieši ani nevráti späť: cez Requests vyhodí RequestAlreadyResolved, priamo cez schvaľovací engine ($alice->approve($request)) výnimku enginu ClosedApprovalRequestException. Kolo sa uzavrie ako zrušené alebo expirované a engine to oznámi udalosťou ApprovalRequestResolved. Zrušená žiadosť je konečná; expirovanú možno iba znovu otvoriť.
Termíny
Termín nastavíte pri vytvorení — pre konkrétnu žiadosť cez expiresAt() alebo globálne cez default_ttl. default_ttl je kladné celé číslo v minútach (funguje aj číselný reťazec z env()); nenastavená hodnota (null alebo prázdna) znamená žiadny predvolený termín a čokoľvek iné vyhodí InvalidConfigurationException:
// Per request:
Requests::make()->title('Leave request')->expiresAt(now()->addDays(7))->create();
// Globally — config/requests.php, in minutes (integer):
'default_ttl' => 60 * 24 * 14, // 14 days unless expiresAt() is givenSamotný termín stav nezmení. Kým žiadosť neexpirujete (príkazom requests:expire alebo cez expire()), zostáva po termíne v stave New a isExpired() vráti true:
$request->isExpired(); // true when still New and past expires_atExpirácia z kódu
Requests::expireDue() nechá expirovať všetky otvorené žiadosti po termíne a vráti ich počet:
use RoundlyConsulting\Requests\Facades\Requests;
Requests::expireDue(); // int — how many requests were expired
Requests::expireDue(dryRun: true); // int — how many are due; nothing changes
Requests::expireDue(chunk: 1000); // rows processed per batchExpirácia podľa plánu
Príkaz requests:expire je tenký obal nad Requests::expireDue() (pozri Artisan príkazy). Naplánujte ho:
// routes/console.php
use Illuminate\Support\Facades\Schedule;
Schedule::command('requests:expire')->hourly();Expirujú sa iba otvorené žiadosti (New) po termíne expires_at a spolu s nimi sa uzavrú ich schvaľovacie kolá; schválených a zamietnutých sa príkaz nedotkne. Príkaz zároveň nechá vypršať schvaľovacie rozhodnutia a kolá žiadostí, ktorých vlastný termín uplynul — len pre model žiadosti, takže ostatné schvaľovania vašej aplikácie zostanú na ich vlastnom čistení. Requests::expireDue() expiruje len žiadosti, takže pri volaní z kódu tento obmedzený krok urobte sami:
use RoundlyConsulting\Approvals\Facades\Approvals;
use RoundlyConsulting\Requests\Facades\Requests;
use RoundlyConsulting\Requests\Models\Request;
Requests::expireDue(); // expire past-due requests
Approvals::expire(subjectType: Request::class); // lapse their decisions and rounds — requests onlyPrejavte 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.