---
title: "Priradenie a sledujúci — Tickets for Laravel | Roundly"
description: "Jeden riešiteľ na tiket — používateľ alebo tím — s claim(), vhodnosťou a predvolenými riešiteľmi, plus sledujúci, automatické sledovanie a odovzdanie."
url: https://roundly-consulting.com/sk/open-source/navody/tickets-for-laravel/priradenie-a-sledujuci
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)

# Priradenie a sledujúci

Jeden riešiteľ na tiket: polymorfný vzťah na akýkoľvek model, ktorý implementuje Contracts\\Assignee.

```php
Tickets::for($ticket)->by($lead)->assign($agent);    // TicketAssigned
Tickets::for($ticket)->by($agent)->claim();          // the actor takes it
Tickets::for($ticket)->by($lead)->unassign();        // TicketUnassigned
$ticket->assignTo($agent, $lead);                    // model convenience, through the manager
```

- Riešiteľ musí byť vhodný (isEligibleTicketAssignee()), inak InvalidAssigneeException. S Concerns\\IsTicketAssignee je Authenticatable vhodný, keď je agentom pre tento tiket — prejde oprávnením agenta a AgentScope mu povolí na tikete pracovať —, takže nikto nedostane tiket, ktorý by nemohol otvoriť. Akýkoľvek iný model je vhodný vždy.
- Ten istý riešiteľ znova nič nespraví: žiadna aktivita, žiadna udalosť.
- Priradenie tiketu v počiatočnom stave spustí automatizáciu Assigned (new → open) a riešiteľ začne tiket sledovať (tickets.watchers.auto.assignee).
- claim() potrebuje aktéra, ktorý je vhodným riešiteľom. V API vyžaduje priradenie niekomu inému oprávnenie assign; prevziať tiket smie ktorýkoľvek agent; držiteľ sa môže sám odobrať.
- Pri založení bez riešiteľa sa balík opýta Contracts\\AssignmentStrategy::assigneeFor($ticket) — predvolene predvoleného riešiteľa najbližšej kategórie.

## Tím ako riešiteľ

Notifikácie dostanú jeho členovia:

```php
use RoundlyConsulting\Tickets\Concerns\IsTicketAssignee;
use RoundlyConsulting\Tickets\Contracts\Assignee;
use RoundlyConsulting\Tickets\Models\Ticket;

final class Team extends Model implements Assignee
{
    use IsTicketAssignee;

    public function ticketNotifiables(): iterable
    {
        return $this->members()->where('active', true)->get();
    }

    public function isEligibleTicketAssignee(Ticket $ticket): bool
    {
        return true;
    }
}
```

Pre API pridajte triedu do tickets.assignables (\['team' => Team::class\]). Ako model tímu funguje aj teams-for-laravel.

## Vlastné pravidlo priraďovania

Naviažte Contracts\\AssignmentStrategy (assigneeFor(Ticket): ?Model) cez tickets.assignment.strategy alebo kontajner — round-robin, podľa vyťaženia, podľa potrieb vášho helpdesku. Beží na uloženom tikete, ktorý už má projekt, kategóriu, prioritu a kanál.

## Sledujúci

Sledujúci tiketu — používatelia, akýkoľvek model alebo TicketGuest (hosť v kópii):

```php
Tickets::for($ticket)->by($agent)->watchers()->add($colleague)->remove($former);
Tickets::for($ticket)->by($user)->watchers()->watch();      // the actor; ->unwatch()
Tickets::for($ticket)->watchers()->has($colleague);         // bool
Tickets::for($ticket)->watchers()->all();                   // TicketWatcher rows, watcher loaded
```

- Unikátne pre (tiket, sledujúci); opätovné pridanie nič nespraví. watch() bez aktéra vyhodí InvalidWatcherException.
- Automatické sledovanie (tickets.watchers.auto.\*): žiadateľ pri založení, riešiteľ pri priradení, agenti, ktorí píšu, a (predvolene vypnuté) spomenutý čitateľ. Automatické sledovania sú tiché — žiadna aktivita, žiadna udalosť. TicketWatcher::$auto ich odlíši; add() na niekoho, kto už sleduje automaticky, z neho urobí zámerné sledovanie.
- Odovzdanie žiadateľa (changeRequester()) odstráni automatické sledovanie predošlého žiadateľa, takže tiket už nevidí a nedostáva jeho notifikácie; sledovanie, ktoré agent pridal zámerne, zostane. Odkazy predošlého žiadateľa-hosťa sa zneplatnia.
- Sledujúci, ktorý nie je agent, smie vidieť tiket aj jeho verejné vlákno a odpovedať ako účastník (tickets.watchers.can\_view). Zoznamy sledujúcich sú v API len pre agentov.
- TicketWatcherAdded / TicketWatcherRemoved sa spustia pri explicitných zmenách; ich záznamy aktivity sú 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)
