QrCodeState::class, 'metadata' => 'array', 'allocated_at' => 'datetime', 'activated_at' => 'datetime', 'used_at' => 'datetime', 'expires_at' => 'datetime', ]; } public function getRouteKeyName(): string { return 'serial'; } public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logOnly(['status', 'assigned_to_household_id', 'assigned_to_store_id', 'used_at_drop_off_id']) ->logOnlyDirty() ->dontSubmitEmptyLogs() ->useLogName('qr_code'); } public function batch(): BelongsTo { return $this->belongsTo(QrCodeBatch::class, 'batch_id'); } public function household(): BelongsTo { return $this->belongsTo(Household::class, 'assigned_to_household_id'); } public function usedAtDropOff(): BelongsTo { return $this->belongsTo(DropOffPoint::class, 'used_at_drop_off_id'); } public function scannedBy(): BelongsTo { return $this->belongsTo(User::class, 'scanned_by_user_id'); } }