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

Expiráciu nastavíte cez expiresIn() (sekundy) alebo expiringAt() (inštancia Carbon) — pri vyžiadaní, schválení aj celej žiadosti:

use RoundlyConsulting\Approvals\Facades\Approvals;

// A pending sign-off that lapses if legal has not decided within 48 hours.
Approvals::for($contract)->as($legal)->expiresIn(172800)->ask();

// An approval valid for a day.
Approvals::for($budget)->as($cfo)->expiresIn(86400)->approve();

// A request that must be decided within a week.
Approvals::request($budget)->from([$cfo, $ceo])->expiresIn(604800)->open();

Čo expirácia spôsobí

Schválenie, vyžiadanie či žiadosť sa prestane počítať v momente, keď jej uplynie platnosť. Čítania ako isApproved(), hasApproved(), approvalCount() aj súčet žiadosti ju ignorujú a žiadosť po termíne už neprijme žiadne rozhodnutie: najbližšie ju vyhodnotí ako expirovanú a odmietne sa výnimkou ClosedApprovalRequestException. Expirované schválenie uvoľní aktérovi cestu schváliť znova.

Nastavte approvals.expiry.default a každé schválenie dostane platnosť, ak si rozhodnutie nenastaví vlastnú. Odpoveď na vyžiadanie nikdy nepreberá jeho termín.

Zápis vypršania

Approvals::expire() zapíše, čo vypršalo: rozhodnutia prejdú do expired (ApprovalExpired a ApprovalStatusChanged), žiadosti sa uzavrú ako expirované (ApprovalRequestResolved a ApprovalStatusChanged) a vráti počet oboch. S parametrom subjectType — triedou modelu alebo jej morph aliasom — nechá vypršať len rozhodnutia o danom type schvaľovaného modelu a žiadosti pre daný typ subjektu, takže balík, ktorý čistí vlastné schvaľovania, zvyšok aplikácie nechá na pokoji:

Approvals::expire();                             // int — decisions and requests lapsed
Approvals::expire(subjectType: Budget::class);   // only those on budgets (class or morph alias)
Approvals::expire(now()->addHour());             // lapse everything due within the next hour

Príkaz approvals:expire

Vypršanie pre celú aplikáciu ako Artisan príkaz — bez argumentov a prepínačov:

php artisan approvals:expire
# Expired 3 approval(s) and request(s).

Naplánujte ho, aby sa zmeškané rozhodnutia a žiadosti označili ako expirované samy:

use Illuminate\Support\Facades\Schedule;

Schedule::command('approvals:expire')->hourly();

Dopyty podľa expirácie

Scope inForce() na modeli Approval ponechá len rozhodnutia, ktorým ešte neuplynula platnosť; expiringBefore() nájde zmeškané:

use RoundlyConsulting\Approvals\Models\Approval;

// Approvals that still count — none past its expiry.
Approval::query()->approved()->inForce()->whereMorphedTo('approvable', $budget)->count();

// Overdue asks and approvals the next sweep will lapse.
Approval::query()->active()->expiringBefore(now())->get();

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.