Implement package limit notification system

This commit is contained in:
Codex Agent
2025-11-01 13:19:07 +01:00
parent 81cdee428e
commit 2c14493604
87 changed files with 4557 additions and 290 deletions

View File

@@ -5,7 +5,6 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Carbon\Carbon;
class EventPackage extends Model
{
@@ -27,6 +26,8 @@ class EventPackage extends Model
'purchased_price' => 'decimal:2',
'purchased_at' => 'datetime',
'gallery_expires_at' => 'datetime',
'gallery_warning_sent_at' => 'datetime',
'gallery_expired_notified_at' => 'datetime',
'used_photos' => 'integer',
'used_guests' => 'integer',
];
@@ -48,33 +49,37 @@ class EventPackage extends Model
public function canUploadPhoto(): bool
{
if (!$this->isActive()) {
if (! $this->isActive()) {
return false;
}
$maxPhotos = $this->package->max_photos ?? 0;
return $this->used_photos < $maxPhotos;
}
public function canAddGuest(): bool
{
if (!$this->isActive()) {
if (! $this->isActive()) {
return false;
}
$maxGuests = $this->package->max_guests ?? 0;
return $this->used_guests < $maxGuests;
}
public function getRemainingPhotosAttribute(): int
{
$max = $this->package->max_photos ?? 0;
return max(0, $max - $this->used_photos);
}
public function getRemainingGuestsAttribute(): int
{
$max = $this->package->max_guests ?? 0;
return max(0, $max - $this->used_guests);
}
@@ -83,13 +88,13 @@ class EventPackage extends Model
parent::boot();
static::creating(function ($eventPackage) {
if (!$eventPackage->purchased_at) {
if (! $eventPackage->purchased_at) {
$eventPackage->purchased_at = now();
}
if (!$eventPackage->gallery_expires_at && $eventPackage->package) {
if (! $eventPackage->gallery_expires_at && $eventPackage->package) {
$days = $eventPackage->package->gallery_days ?? 30;
$eventPackage->gallery_expires_at = now()->addDays($days);
}
});
}
}
}