|null $pending_accounts_data */ class BankingConnection extends Model { /** @use HasFactory<\Database\Factories\BankingConnectionFactory> */ use HasFactory, HasUuids, SoftDeletes; protected $fillable = [ 'user_id', 'provider', 'authorization_id', 'session_id', 'aspsp_name', 'aspsp_country', 'aspsp_logo', 'status', 'valid_until', 'last_synced_at', 'error_message', 'pending_accounts_data', 'api_token', 'api_secret', ]; protected $hidden = [ 'api_token', 'api_secret', 'pending_accounts_data', 'authorization_id', 'session_id', ]; protected function casts(): array { return [ 'status' => BankingConnectionStatus::class, 'valid_until' => 'datetime', 'last_synced_at' => 'datetime', 'pending_accounts_data' => 'array', 'api_token' => 'encrypted', 'api_secret' => 'encrypted', ]; } /** @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } /** @return HasMany */ public function accounts(): HasMany { return $this->hasMany(Account::class); } public function isActive(): bool { return $this->status === BankingConnectionStatus::Active; } public function isIndexaCapital(): bool { return $this->provider === 'indexacapital'; } public function isBinance(): bool { return $this->provider === 'binance'; } public function isBitpanda(): bool { return $this->provider === 'bitpanda'; } public function isEnableBanking(): bool { return $this->provider === 'enablebanking'; } public function hasPendingAccounts(): bool { return ! empty($this->pending_accounts_data); } public function isExpired(): bool { return $this->status === BankingConnectionStatus::Expired || ($this->valid_until && $this->valid_until->isPast()); } }