'array', 'issued_at' => 'datetime', 'called_at' => 'datetime', 'serving_started_at' => 'datetime', 'completed_at' => 'datetime', ]; } protected static function booted(): void { static::creating(function (self $ticket) { $ticket->uuid ??= (string) Str::uuid(); $ticket->qr_token ??= Str::random(32); }); } public function organization(): BelongsTo { return $this->belongsTo(Organization::class, 'organization_id'); } public function branch(): BelongsTo { return $this->belongsTo(Branch::class, 'branch_id'); } public function serviceQueue(): BelongsTo { return $this->belongsTo(ServiceQueue::class, 'service_queue_id'); } public function counter(): BelongsTo { return $this->belongsTo(Counter::class, 'counter_id'); } public function events(): HasMany { return $this->hasMany(TicketEvent::class, 'ticket_id'); } public function transfers(): HasMany { return $this->hasMany(TicketTransfer::class, 'ticket_id')->orderByDesc('transferred_at'); } }