---
title: "Rozšírenie — Tickets for Laravel | Roundly"
description: "Každé miesto na výmenu — kontrakty a ich dodané implementácie, životný cyklus, enum priorít, modely, policy a notifikácie — bez forku."
url: https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel/rozsirenie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Tickets for Laravel](https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel.md)

# Rozšírenie

Stavy, priority, pravidlá oprávnení, notifikácie, pravidlá priraďovania a termínov — dokonca aj modely — vymeníte bez forku. Kontrakty viazané cez konfiguráciu sa dajú naviazať aj priamo v kontajneri:

| Kontrakt | Metódy | Predvolené / väzba z |
| --- | --- | --- |
| `TicketState` | `category(): StatusCategory` | `Enums\TicketStatus` |
| `TicketLifecycle` | `automation(Automation $hook): ?string` | `Lifecycle\TicketLifecycle (tickets.lifecycle)` |
| `Priority` | `weight(): int` | `Enums\TicketPriority (tickets.priority.enum)` |
| `Assignee` | `ticketAssigneeName(), ticketNotifiables(): iterable, isEligibleTicketAssignee(Ticket)` | predvolené z Concerns\\IsTicketAssignee |
| `TicketProject` | `ticketReferencePrefix(): string` | váš model projektu |
| `AssignmentStrategy` | `assigneeFor(Ticket): ?Model` | `Assignment\CategoryDefaultStrategy (tickets.assignment.strategy)` |
| `DueDateResolver` | `dueAt(Ticket): ?CarbonImmutable` | `Due\CategoryDueDateResolver (tickets.due.resolver)` |
| `GuestLinkGenerator` | `for(Ticket, Model $recipient): string` | `Guests\SignedRouteLinkGenerator (tickets.guests.link_generator)` |
| `AgentScope` | `allows(Model $agent, Ticket), constrain(Builder, Model $agent)` | `Authorization\UnrestrictedAgentScope (tickets.authorization.agent_scope)` |
| `ConversationLock` | `lock, unlock, isLocked` | `Conversation\CommentsConversationLock` |
| `TicketEvent` | `ticket(): Ticket, actor(): ?Model` | implementuje ho každá udalosť tiketu (pozrite Udalosti) |

Pri založení každý kontrakt vidí uložený tiket: riešiteľ (kontrola vhodnosti cez isEligibleTicketAssignee() → AgentScope::allows(), alebo AssignmentStrategy::assigneeFor()) aj termín (DueDateResolver::dueAt()) sa vyberú hneď po vložení riadku, v tej istej transakcii — s kľúčom, číslom tiketu, poradovým číslom, počiatočným stavom, žiadateľom, projektom, kategóriou (načítanou), prioritou a kanálom, ešte však bez hodnôt vlastných polí, štítkov, sledujúcich, príloh, riešiteľa a termínu. allows(), ktoré sa pýta databázy podľa kľúča, funguje.

## Dodané implementácie

| Trieda | Implementuje | Správanie |
| --- | --- | --- |
| `Assignment\CategoryDefaultStrategy` | `AssignmentStrategy` | default\_assignee kategórie tiketu alebo jej najbližšieho predka, ktorý ho nastavuje. |
| `Due\CategoryDueDateResolver` | `DueDateResolver` | Teraz plus default\_due\_in kategórie tiketu alebo jej najbližšieho predka, ktorý ho nastavuje. |
| `Guests\SignedRouteLinkGenerator` | `GuestLinkGenerator` | Dočasná podpísaná URL routy tickets.guest.show; potrebuje routy pre hostí, inak InvalidTicketsConfigurationException. |
| `Authorization\UnrestrictedAgentScope` | `AgentScope` | Každý agent pracuje na každom tikete. |
| `Conversation\CommentsConversationLock` | `ConversationLock` | Comments::lock() / unlock() na vlákne tiketu, idempotentné oboma smermi (naviazané cez $app->bind(), na nahradenie ho naviažte znova). |
| `Lifecycle\TicketLifecycle` | `TicketLifecycle` | Dodaný životný cyklus (pozrite Stavy a prechody). |
| `Policies\TicketPolicy` | — | Policy API (pozrite Policy a rozsah agentov). |

Tam, kde má podtrieda zmysel, nie sú final (TicketLifecycle, TicketPolicy, triedy notifikácií); inak kontrakt implementujte sami.

## Ďalšie miesta na výmenu

- Životný cyklus — tickets.lifecycle (pozrite Stavy a prechody).
- Škála priorít — tickets.priority.enum (pozrite Kategórie a priority).
- Modely — tickets.models.\* s podtriedami modelov z balíka (pozrite Modely, kľúče a čísla tiketov).
- Policy — tickets.authorization.policy s podtriedou TicketPolicy (pozrite Policy a rozsah agentov).
- Každá notifikácia — tickets.notifications.types.<type> s podtriedou, alebo false na vypnutie (pozrite Notifikácie).
- Akcie — naviažte vlastnú implementáciu v kontajneri; každá cesta cez fasádu si akcie berie z neho.

## Verejné pomocné triedy

| Trieda | Metódy | Použitie |
| --- | --- | --- |
| `Support\TicketModels` | `ticket(), category(), field(), tag(), guest()` | Miesto pre modely — nakonfigurovaná trieda z tickets.models.\*. V kóde, ktorý musí nasledovať výmenu modelu, sa pýtajte cez ňu (TicketModels::ticket()::query()). |
| `Support\Optional` | `new Optional, static given(mixed $value): bool` | Značka nezadanej hodnoty v DTO Update\*Data, aby null mohlo znamenať zrušenie. |
| `Support\TicketsConfig` | `lifecycle(), priorityEnum(), referencePrefix(), channels(), autoCloseAfter(), notificationUrl($reference), routesEnabled(), …` | Prečíta nastavenie tickets.\* presne ako balík — nezmyselná hodnota vyhodí výnimku s názvom kľúča. |
| `Fields\FieldSetResolver` | `forTicket(Ticket), forScope(…), attributeDefinitions(Ticket), knownKeys(Ticket), flush()` | Platná sada polí, zapamätaná pre (projekt, kategória); scoped väzba (na požiadavku / job, bezpečná pre Octane) — získajte ju z kontajnera, nikdy ju nevytvárajte cez new. |
| `Notifications\RecipientResolver` | `created(), assigned(), replied(), noteAdded(), mentioned(), statusChanged(), due(), merged(), replyType(AuthorRole)` | Komu ktorá notifikácia ide, už s kontrolou viditeľnosti, bez duplicít a prefiltrované — použite ho na rozposlanie zmeny tiketu vlastným kanálom. |

Všetko ostatné pod Support\\, Http\\, Listeners\\ a Actions\\Internal\\ je interné.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel.md)
