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

Nastavenie modelov

Schvaľovatelia

Každý model, ktorý má schvaľovať žiadosti — typicky váš User — použije trait a rozhranie aktéra zo schvaľovacieho enginu:

use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Approvals\Interfaces\GivesApprovalsInterface;
use RoundlyConsulting\Approvals\Traits\GivesApprovals;

class User extends Model implements GivesApprovalsInterface
{
    use GivesApprovals;
}

Aktér tým získa celé schvaľovacie API:

$alice->approve($request, 'Looks good');     // record an approval with a reason
$alice->reject($request, 'Out of policy');   // record a rejection with a reason
$alice->cancelApproval($request);            // withdraw the decision
$alice->hasApproved($request);               // bool
$alice->hasRejected($request);               // bool
$alice->delegateApprovalsTo($bob);           // see Delegation

Rozhodnutia urobené priamo na aktérovi stále posunú stav žiadosti, keď engine uzavrie jej schvaľovaciu požiadavku. Ak chcete všetky udalosti balíka (ApprovalRecorded, ApprovalRevoked) a pri žiadostiach bez deklarovaných schvaľovateľov, rozhodujte cez fasádu Requests (Rozhodovanie o žiadostiach).

Rozhodnúť môže len deklarovaný schvaľovateľ alebo jeho zástupca, a to aj na aktérovi: $mallory->approve($request) vyhodí výnimku enginu UnauthorizedApprovalException a nič sa nezaznamená.

Autori

Trait a kontrakt HasRequests pridajte každému modelu, ktorý podáva žiadosti. Získa reláciu morphMany a skratky filtrované podľa stavu:

use RoundlyConsulting\Requests\Concerns\HasRequests;
use RoundlyConsulting\Requests\Contracts\HasRequests as HasRequestsContract;

class User extends Model implements HasRequestsContract
{
    use HasRequests;
}

$user->requests;                 // morphMany relation
$user->openRequests()->get();    // status = New
$user->approvedRequests()->get();
$user->rejectedRequests()->get();

Relácie používajú model nakonfigurovaný v requests.model, takže vlastnú podtriedu dostanete aj z $user->requests.

Oboje na jednom modeli

Traity spolu nekolidujú, takže ten istý model môže žiadosti podávať aj schvaľovať:

use Illuminate\Foundation\Auth\User as Authenticatable;
use RoundlyConsulting\Approvals\Interfaces\GivesApprovalsInterface;
use RoundlyConsulting\Approvals\Traits\GivesApprovals;
use RoundlyConsulting\Requests\Concerns\HasRequests;
use RoundlyConsulting\Requests\Contracts\HasRequests as HasRequestsContract;

class User extends Authenticatable implements GivesApprovalsInterface, HasRequestsContract
{
    use GivesApprovals;
    use HasRequests;
}

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.