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

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().

ScopeVý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
TypViditeľnosť
created, status_changed, priority_changed, category_changed, assigned, unassigned, due_changed, attachment_added, attachment_removed, requester_changed, overdueverejné
merged, merged_fromverejné, 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
repliedverejné — interné pre odpoveď, ktorú zadržala moderácia hostiteľa (properties.held: true, plus properties.transition, ak žiadala prechod, ktorý nedostala)
comment_edited, comment_deletedviditeľ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
updatedverejné 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, restoredinterné (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 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.