136 lines
3.4 KiB
PHP
136 lines
3.4 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
|
|
class CondominoStabile extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $table = 'condomini_stabile';
|
|
|
|
protected $fillable = [
|
|
'amministratore_id',
|
|
'stabile_id',
|
|
'codice_condomino',
|
|
'cognome',
|
|
'nome',
|
|
'denominazione',
|
|
'codice_fiscale',
|
|
'partita_iva',
|
|
'indirizzo',
|
|
'cap',
|
|
'comune_id',
|
|
'provincia',
|
|
'telefono',
|
|
'cellulare',
|
|
'email',
|
|
'pec',
|
|
'scala',
|
|
'piano',
|
|
'interno',
|
|
'tipo_unita',
|
|
'superficie',
|
|
'millesimi_proprieta',
|
|
'millesimi_riscaldamento',
|
|
'quota_spese_ordinarie',
|
|
'quota_spese_straordinarie',
|
|
'quota_riscaldamento',
|
|
'note',
|
|
'attivo'
|
|
];
|
|
|
|
protected $casts = [
|
|
'superficie' => '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;
|
|
}
|
|
}
|