Files
BRISTO/app/Models/Contract.php
jeremy bayse 89a369964d Premier commit
2026-02-09 11:27:21 +01:00

61 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Contract extends Model
{
use HasFactory;
protected $fillable = [
'name',
'reference',
'provider',
'status',
'start_date',
'end_date',
'amount',
'currency',
'notes',
'type',
'municipality_id',
];
protected $casts = [
'start_date' => 'date',
'end_date' => 'date',
'amount' => 'decimal:2',
];
public function meta(): HasMany
{
return $this->hasMany(ContractMeta::class);
}
public function documents(): HasMany
{
return $this->hasMany(Document::class);
}
public function municipality(): \Illuminate\Database\Eloquent\Relations\BelongsTo
{
return $this->belongsTo(Municipality::class);
}
// Helpers
public function scopeActive($query)
{
return $query->where('status', 'active');
}
public function scopeExpiringSoon($query, $days = 30)
{
return $query->where('end_date', '<=', now()->addDays($days))
->where('end_date', '>=', now())
->where('status', '!=', 'expired');
}
}