'decimal:2', 'millesimi_proprieta' => 'decimal:3', 'millesimi_riscaldamento' => 'decimal:3', 'quota_spese_ordinarie' => 'decimal:2', 'quota_spese_straordinarie' => 'decimal:2', 'quota_riscaldamento' => 'decimal:2', 'attivo' => 'boolean' ]; public function amministratore(): BelongsTo { return $this->belongsTo(Administrator::class); } public function stabile(): BelongsTo { return $this->belongsTo(StabileGescon::class); } public function comune(): BelongsTo { return $this->belongsTo(Comune::class); } public function rateEmesse(): HasMany { return $this->hasMany(RataEmessa::class, 'condomino_id'); } public function incassi(): HasMany { return $this->hasMany(IncassoPagamento::class, 'condomino_id'); } public function destinatarioComunicazioni(): HasMany { return $this->hasMany(DestinatarioComunicazione::class, 'condomino_id'); } public function scopeAttivi($query) { return $query->where('attivo', true); } public function scopeByStabile($query, $stabileId) { return $query->where('stabile_id', $stabileId); } public function scopeByScala($query, $scala) { return $query->where('scala', $scala); } public function scopeByPiano($query, $piano) { return $query->where('piano', $piano); } public function scopeSearch($query, $search) { return $query->where(function ($q) use ($search) { $q->where('cognome', 'like', "%{$search}%") ->orWhere('nome', 'like', "%{$search}%") ->orWhere('denominazione', 'like', "%{$search}%") ->orWhere('codice_fiscale', 'like', "%{$search}%") ->orWhere('codice_condomino', 'like', "%{$search}%"); }); } public function getNomeCompletoAttribute() { if ($this->denominazione) { return $this->denominazione; } return trim($this->cognome . ' ' . $this->nome); } public function getIndirizzoCompletoAttribute() { return $this->scala . '/' . $this->piano . '/' . $this->interno; } public function getTotaleMillesimiAttribute() { return $this->millesimi_proprieta + $this->millesimi_riscaldamento; } }