Files
fuel-price/app/Enums/PriceClassification.php
Ovidiu U 5bc6ca720c
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
feat: add price classification enum and reliable sort option
2026-04-06 09:58:45 +01:00

50 lines
1.1 KiB
PHP

<?php
namespace App\Enums;
use Illuminate\Support\Carbon;
enum PriceClassification: string
{
case Current = 'current';
case Recent = 'recent';
case Stale = 'stale';
case Outdated = 'outdated';
public static function fromUpdatedAt(?Carbon $updatedAt): self
{
if ($updatedAt === null) {
return self::Outdated;
}
$hours = $updatedAt->diffInHours(now());
return match (true) {
$hours < 24 => self::Current,
$hours < 48 => self::Recent,
$hours < 120 => self::Stale,
default => self::Outdated,
};
}
public function weight(): int
{
return match ($this) {
self::Current => 0,
self::Recent => 1,
self::Stale => 2,
self::Outdated => 3,
};
}
public function label(): string
{
return match ($this) {
self::Current => 'Current',
self::Recent => 'Recent',
self::Stale => 'Stale',
self::Outdated => 'Outdated',
};
}
}