Use dedicated assignee notification payload
linter / quality (pull_request) Successful in 1m26s
tests / ci (8.4) (pull_request) Successful in 1m32s

This commit is contained in:
2026-05-20 14:12:09 +00:00
parent 9a93828f7d
commit eb58853ee0
7 changed files with 147 additions and 53 deletions
@@ -17,16 +17,11 @@ final readonly class TicketStatusChangedPayload implements NotificationEventPayl
public string $ticketUrl,
public ?int $actorId,
public ?string $actorName,
public ?int $fromStatusId,
public ?string $fromStatusLabel,
public int $fromStatusId,
public string $fromStatusLabel,
public int $toStatusId,
public string $toStatusLabel,
public CarbonImmutable $occurredAt,
public ?int $fromAssigneeId = null,
public ?string $fromAssigneeName = null,
public ?int $toAssigneeId = null,
public ?string $toAssigneeName = null,
public NotificationEventType $eventType = NotificationEventType::TicketStatusChanged,
) {}
public function projectId(): int
@@ -55,11 +50,9 @@ final readonly class TicketStatusChangedPayload implements NotificationEventPayl
'$ticket_key' => $this->ticketKey,
'$ticket_title' => $this->ticketTitle,
'$project_name' => $this->projectName,
'$status_from' => $this->fromStatusLabel ?? '',
'$status_from' => $this->fromStatusLabel,
'$status_to' => $this->toStatusLabel,
'$actor_name' => $this->actorName ?? '',
'$assignee_from' => $this->fromAssigneeName ?? '',
'$assignee_to' => $this->toAssigneeName ?? '',
];
}
@@ -69,11 +62,7 @@ final readonly class TicketStatusChangedPayload implements NotificationEventPayl
* project: array{id: int, key: string, name: string},
* ticket: array{id: int, key: string, title: string},
* actor: array{id: int, name: string}|null,
* assignee: array{
* from: array{id: int, name: string}|null,
* to: array{id: int, name: string}|null
* },
* from: array{id: int, label: string}|null,
* from: array{id: int, label: string},
* to: array{id: int, label: string},
* ticket_url: string,
* occurred_at: string
@@ -82,7 +71,7 @@ final readonly class TicketStatusChangedPayload implements NotificationEventPayl
public function toArray(): array
{
return [
'event_type' => $this->eventType->value,
'event_type' => NotificationEventType::TicketStatusChanged->value,
'project' => [
'id' => $this->projectId,
'key' => $this->projectKey,
@@ -99,26 +88,10 @@ final readonly class TicketStatusChangedPayload implements NotificationEventPayl
'id' => $this->actorId,
'name' => $this->actorName,
],
'assignee' => [
'from' => $this->fromAssigneeId === null || $this->fromAssigneeName === null
? null
: [
'id' => $this->fromAssigneeId,
'name' => $this->fromAssigneeName,
],
'to' => $this->toAssigneeId === null || $this->toAssigneeName === null
? null
: [
'id' => $this->toAssigneeId,
'name' => $this->toAssigneeName,
],
'from' => [
'id' => $this->fromStatusId,
'label' => $this->fromStatusLabel,
],
'from' => $this->fromStatusId === null || $this->fromStatusLabel === null
? null
: [
'id' => $this->fromStatusId,
'label' => $this->fromStatusLabel,
],
'to' => [
'id' => $this->toStatusId,
'label' => $this->toStatusLabel,