Každá výnimka pre klientov rozširuje abstraktnú Exceptions\EventsException (RuntimeException). errorCode() je stabilný kód, status() HTTP stav, ktorým odpovie API, a getMessage() je už text bezpečný pre klienta — preložený do aktuálneho jazyka (events::messages, en a sk), nikdy neuvádza triedu, kľúč ani tabuľku. Vo vlastných kontroléroch:
use RoundlyConsulting\Events\Exceptions\EventsException;
try {
$rsvp = Events::for($event)->rsvp($request->user())->by($request->user())->going(tier: $request->input('tier'));
} catch (EventsException $e) {
return response()->json(['message' => $e->getMessage(), 'code' => $e->errorCode()], $e->status());
}| Výnimka | code | HTTP | Kedy sa vyhodí |
|---|---|---|---|
EventNotFoundException | event_not_found | 404 | Neznáme, zmazané alebo (cez API) skryté podujatie; kalendárový súbor pre diváka, ktorý podujatie vidieť nesmie. |
VenueNotFoundException · TierNotFoundException | venue_not_found · tier_not_found | 404 | Typ vstupenky iného podujatia alebo neznámy kľúč či id. |
RsvpNotFoundException | rsvp_not_found | 404 | RSVP iného podujatia; neznáma alebo nahradená referencia platby; check-in účastníka, ktorého riadok už neexistuje. |
InvalidEventException | invalid_event | 422 | Chýbajúci alebo príliš dlhý názov, chybný odkaz na pripojenie, spôsob účasti v rozpore s miestom a odkazom, nový začiatok ohláseného podujatia, zmazanie podujatia, na ktoré ľudia idú, chybné pripomienky, chýbajúci organizátor, obsadený ručný slug, presun skončeného podujatia online, správa pozvánky nad 1000 znakov. |
InvalidEventScheduleException | invalid_schedule | 422 | Chýbajúci začiatok, koniec pred začiatkom, príliš dlhé, dvere mimo 12 hodín pred začiatkom, chybné časové pásmo, dátum a čas či trvanie, čas v medzere pri prechode na letný čas, chybný celodenný rozsah alebo okno RSVP. |
InvalidVenueException | invalid_venue / venue_in_use | 422 | Chýbajúci názov, chybné súradnice, chybný kód krajiny, polomer mimo rozsahu / zmazanie miesta, ktoré používa neskončené podujatie. |
InvalidTierException | invalid_tier / tier_key_taken / tier_in_use | 422 | Chybný názov, kľúč, limity skupiny, obdobie predaja, kapacita, cena či poradie / obsadený kľúč / odstránenie používaného typu. |
InvalidGuestCountException · TierRequiredException | invalid_guest_count · tier_required | 422 | Hostia mimo limitov · going() bez typu vstupenky, keď sa predáva viac typov. |
TierNotOnSaleException · EventFullException · TierSoldOutException | tier_not_on_sale · event_full · tier_sold_out | 409 | Novo zvolený typ mimo predaja · bez miest a bez čakacej listiny. |
RsvpClosedException | rsvp_closed | 409 | RSVP zatvorené alebo ešte neotvorené, podujatie začalo, je zrušené alebo ukončené — a platba od začiatku podujatia (vráťte ju). |
InvitationRequiredException | invitation_required | 403 | Odpoveď na súkromné podujatie bez pozvánky. |
InvalidRsvpTransitionException | invalid_rsvp_transition | 409 | Účastník po check-ine odmieta alebo zmenšuje skupinu pod hostí, ktorí už prešli, platené miesto menené odpoveďou, potvrdenie či uvoľnenie nerezervovaného, check-in RSVP, ktoré nie je going. |
RsvpHoldExpiredException | hold_expired | 409 | Oneskorená platba bez voľných miest. |
InvalidCheckInCodeException · CheckInRefusedException | invalid_code · check_in_refused | 404 · 409 | Pozrite Check-in pri vstupe. |
InvalidInvitationException | invalid_invitation | 404 | Neznámy, chybný, zneplatnený, vypršaný alebo použitý token, alebo odkaz niekoho iného — jednotne. |
EventTrashedException | event_trashed | 409 | Akýkoľvek zápis do zmazaného podujatia. |
UnknownEventTransitionException · EventTransitionDeniedException | unknown_transition · transition_denied | 422 (429) | Sloveso, ktoré životný cyklus neponúka · lifecycle zamietol (denials(), retryAfterSeconds(), previousDenial()). |
InvalidOrganizerException · UnknownMorphAliasException · InvalidEventQueryException | invalid_organizer · unknown_alias · invalid_query | 422 (400) | Organizovanie za niekoho, kto aktéra nepovoľuje · neznámy alias alebo kľúč v API · chybná hodnota filtra v API. |
EventTransitionDeniedException má aj denials() (kódy zamietnutia z lifecycle a k nim no_attendees a rescheduled_through_events), retryAfterSeconds() (0, ak nejde o limit požiadaviek; API pošle Retry-After) a previousDenial(). CheckInRefusedException::reason() je jedna z konštánt WRONG_EVENT, NOT_GOING, EVENT_NOT_ACTIVE a OUTSIDE_WINDOW.
Chyby, ktoré API preberá odinakiaľ
| Zdroj | Odpoveď API |
|---|---|
| AuthorizationException z Laravelu | 403 forbidden |
| SubjectTrashedException z lifecycle | 409 event_trashed |
| TagNotFoundException, TagScopeMismatchException z tags | 422 tag_not_found |
| TagLimitExceededException z tags | 422 tag_limit_exceeded |
| InvalidTagException, TagTypeMismatchException, TagTypeNotAllowedException, UnknownTagTypeException z tags | 422 invalid_tag |
| FileUnacceptableForBucket, DraftMediaNotFound, DraftMediaExpired z media-library | 422 invalid_poster |
| Validácia | 422 validation_failed + errors |
V PHP prejdú bez zmeny.
Chyby konfigurácie
Opraviť ich musí aplikácia: sú v angličtine, uvádzajú kľúč a rozširujú PackageToolkitException z toolkitu. InvalidEventsConfigurationException pokrýva chybné trvanie, časové pásmo, názov tabuľky, čas dňa, šablónu URL či voľbu — outOfRange() pre hodnotu mimo hraníc, tooMany() pre viac ako päť posunov pripomienok a keyTypeMismatch(), keď kľúč modelu nezodpovedá events.key_type, ešte pred akýmkoľvek SQL. InvalidEventLifecycleException pokrýva hodnotu events.lifecycle, ktorá nie je LifecycleDefinition implementujúcou Contracts\EventLifecycle, alebo definíciu, ktorá porušuje kontrakt. Vlastná InvalidConfigurationException z toolkitu pokrýva model, resource, triedu notifikácie či zoznam, ktorý nezodpovedá svojmu kľúču.
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.