106 lines
2.4 KiB
PHP
Executable File
106 lines
2.4 KiB
PHP
Executable File
<?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 StabileGescon extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $table = 'stabili_gescon';
|
|
|
|
protected $fillable = [
|
|
'amministratore_id',
|
|
'anno_gestione_id',
|
|
'codice_stabile',
|
|
'denominazione',
|
|
'indirizzo',
|
|
'cap',
|
|
'comune_id',
|
|
'provincia',
|
|
'codice_fiscale',
|
|
'num_condomini',
|
|
'num_unit_immobiliari',
|
|
'superficie_totale',
|
|
'millesimi_totali',
|
|
'tipo_riscaldamento',
|
|
'ripartizione_spese',
|
|
'amministratore_nome',
|
|
'amministratore_cognome',
|
|
'telefono',
|
|
'email',
|
|
'pec',
|
|
'codice_univoco_sdi',
|
|
'note'
|
|
];
|
|
|
|
protected $casts = [
|
|
'num_condomini' => 'integer',
|
|
'num_unit_immobiliari' => 'integer',
|
|
'superficie_totale' => 'decimal:2',
|
|
'millesimi_totali' => 'decimal:3'
|
|
];
|
|
|
|
public function amministratore(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Administrator::class);
|
|
}
|
|
|
|
public function annoGestione(): BelongsTo
|
|
{
|
|
return $this->belongsTo(AnnoGestione::class);
|
|
}
|
|
|
|
public function comune(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Comune::class);
|
|
}
|
|
|
|
public function condomini(): HasMany
|
|
{
|
|
return $this->hasMany(CondominoStabile::class);
|
|
}
|
|
|
|
public function rateEmesse(): HasMany
|
|
{
|
|
return $this->hasMany(RataEmessa::class);
|
|
}
|
|
|
|
public function incassi(): HasMany
|
|
{
|
|
return $this->hasMany(IncassoPagamento::class);
|
|
}
|
|
|
|
public function fatture(): HasMany
|
|
{
|
|
return $this->hasMany(FatturaFornitore::class);
|
|
}
|
|
|
|
public function assemblee(): HasMany
|
|
{
|
|
return $this->hasMany(AssembleaVerbale::class);
|
|
}
|
|
|
|
public function scopeByComune($query, $comune)
|
|
{
|
|
return $query->whereHas('comune', function ($q) use ($comune) {
|
|
$q->where('comune', 'like', "%{$comune}%");
|
|
});
|
|
}
|
|
|
|
public function scopeByProvincia($query, $provincia)
|
|
{
|
|
return $query->where('provincia', $provincia);
|
|
}
|
|
|
|
public function getTotaleMilesimiAttribute()
|
|
{
|
|
return $this->condomini()->sum('millesimi_proprieta') +
|
|
$this->condomini()->sum('millesimi_riscaldamento');
|
|
}
|
|
}
|