'Браузер', self::CHANNEL_BROWSER => 'Браузер', self::CHANNEL_PUSH => 'Android/iOS', self::CHANNEL_EMAIL => 'Email', ]; public const STATUS_LABELS = [ self::STATUS_SENT => 'Отправлено', self::STATUS_FAILED => 'Ошибка', self::STATUS_SKIPPED => 'Пропущено', self::STATUS_DEAD_LETTER => 'Dead letter', ]; public const DEFAULT_SORT_BY = 'created_at'; public const DEFAULT_ORDER_BY = 'desc'; protected $fillable = [ 'user_notification_id', 'user_id', 'channel', 'status', 'attempt', 'message', 'error', ]; protected function channel(): Attribute { return Attribute::make( get: fn($value) => self::CHANNEL_LABELS[$value] ?? $value, ); } protected function status(): Attribute { return Attribute::make( get: fn($value) => self::STATUS_LABELS[$value] ?? $value, ); } public function user(): BelongsTo { return $this->belongsTo(User::class); } public function userNotification(): BelongsTo { return $this->belongsTo(UserNotification::class); } }