NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Requests for Laravel

Zrušenie a expirácia

Requests::cancel($request);   // status = Cancelled
Requests::expire($request);   // status = Expired

cancel() 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 given

Samotný 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_at

Expirá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 batch

Expirá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 only

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 kryptomien

Odoslaní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.