Vyhľadávanie a história aktivít
Obyčajné Eloquent scopes na Ticket. Filtre zoznamu v API sú postavené na nich, takže PHP aj HTTP filtrujú rovnako:
use RoundlyConsulting\Tickets\Enums\StatusCategory;
use RoundlyConsulting\Tickets\Models\Ticket;
Tickets::visibleTo($user)->unresolved()->orderByPriority()->paginate();
Ticket::query()->assignedTo($agent)->withStatusCategory(StatusCategory::Waiting)->get();
Ticket::query()->inCategory($hardware, descendants: true)->overdue()->count();
Ticket::query()->taggedWith('printer', 'vip')->createdFrom(now()->subWeek())->get();
Ticket::query()->search('TCK-42')->first();V kóde, ktorý musí nasledovať výmenu modelu, sa pýtajte cez Support\TicketModels::ticket()::query().
| Scope | Význam |
|---|---|
visibleTo(Model $user) | Tikety, ktoré povoľuje TicketPolicy::view (Tickets::visibleTo()). |
assignedTo(Model ...$assignees) / unassigned() | Polymorfný vzťah na riešiteľa. |
requestedBy(Model $requester) | Polymorfný vzťah na žiadateľa (používateľ alebo TicketGuest). |
inProject(?Model $project) | null = tikety bez projektu. |
inCategory(TicketCategory|int $category, bool $descendants = false) | Aj s podkategóriami (obmedzené categories.max_depth). |
withStatus(BackedEnum|string ...$states) | Presné hodnoty stavov. |
withStatusCategory(StatusCategory ...$categories) | Stavy nakonfigurovaného enumu v týchto kategóriách. |
unresolved() | Open, Active alebo Waiting. |
withPriority(BackedEnum|string ...$priorities) | Ktorákoľvek z priorít. |
taggedWith(string|TicketTag ...$tags) | Ktorýkoľvek zo štítkov, podľa slugu alebo modelu. |
watchedBy(Model $watcher) | Tikety, ktoré model sleduje. |
whereField(string $key, mixed $value) / whereFieldBetween(string $key, mixed $from, mixed $to) | Hodnoty vlastných polí prevedené na typ poľa; hranica rozsahu null je otvorená. Neznámy, šifrovaný alebo multiselect kľúč vyhodí UnknownTicketFieldException; rozsah berie len polia number, decimal, date a datetime. |
dueBefore / dueAfter(CarbonInterface), dueFrom / dueTo, overdue() | Before / after sú exkluzívne, from / to inkluzívne; overdue = po termíne a nevyriešené. |
createdFrom / createdTo(CarbonInterface) | Inkluzívne. |
viaChannel(string ...$channels) | Vstupný kanál. |
search(string $term) | Presne číslo tiketu, alebo LIKE v predmete a popise (zástupné znaky sa berú doslova). |
merged(bool $merged = true) | merged_into_id nastavené / nenastavené. |
orderByPriority(string $direction = 'desc') | Podľa váh enumu; neznáma uložená hodnota sa radí ako 0. |
História aktivít
Každá zmena — stav, priorita, riešiteľ, termín, štítky, polia, zlúčenia, úpravy a mazania správ — sa zapíše do histórie, do ktorej sa len pripisuje, v transakcii každej akcie (zmeny stavu v transakcii prechodu lifecycle):
Tickets::for($ticket)->activity(); // public entries, oldest first — safe for a requester-facing page
Tickets::for($ticket)->activity(internal: true); // every entry, for agents| Typ | Viditeľnosť |
|---|---|
created, status_changed, priority_changed, category_changed, assigned, unassigned, due_changed, attachment_added, attachment_removed, requester_changed, overdue | verejné |
merged, merged_from | verejné, rátajú len zverejnené správy (comments), bez reason — plus interný záznam rovnakého typu so všetkými správami a dôvodom, ak sa líšia |
replied | verejné — interné pre odpoveď, ktorú zadržala moderácia hostiteľa (properties.held: true, plus properties.transition, ak žiadala prechod, ktorý nedostala) |
comment_edited, comment_deleted | viditeľné ako samotná správa: verejné pre zverejnenú verejnú odpoveď, interné pre poznámku či zadržanú odpoveď; properties comment (id) a role — nikdy text |
updated | verejné pre subject / description; zmena meta hostiteľa je samostatný interný záznam |
note_added, fields_changed, tagged, untagged, linked, unlinked, watcher_added, watcher_removed, guest_access_revoked, deleted, restored | interné (len pre agentov) |
Záznamy nesú aktéra, príznak is_system, viditeľnosť a properties — id, kľúče, from/to; nikdy text poznámky ani šifrovanú hodnotu. Úprava či zmazanie vyhodí ActivityIsAppendOnlyException a force delete tiketu sa prenesie kaskádou. Pri vypnutom tickets.activity.enabled sa nezapíše nič a endpoint vráti []. API záznamy filtruje podľa roly.
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.