Expirácia
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 hourPrí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 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.