buckets/app/Enums/StreamFrequencyEnum.php

56 lines
1.3 KiB
PHP
Raw Permalink Normal View History

2025-12-31 02:34:30 +01:00
<?php
namespace App\Enums;
enum StreamFrequencyEnum: string
{
case ONCE = 'once';
case DAILY = 'daily';
case WEEKLY = 'weekly';
case BIWEEKLY = 'biweekly';
case MONTHLY = 'monthly';
case QUARTERLY = 'quarterly';
case YEARLY = 'yearly';
public function label(): string
{
return match ($this) {
self::ONCE => 'One-time',
self::DAILY => 'Daily',
self::WEEKLY => 'Weekly',
self::BIWEEKLY => 'Bi-weekly',
self::MONTHLY => 'Monthly',
self::QUARTERLY => 'Quarterly',
self::YEARLY => 'Yearly',
};
}
public static function values(): array
{
return array_column(self::cases(), 'value');
}
public static function labels(): array
{
$labels = [];
foreach (self::cases() as $case) {
$labels[$case->value] = $case->label();
}
2025-12-31 02:34:30 +01:00
return $labels;
}
public function getMonthlyEquivalentMultiplier(): float
{
return match ($this) {
self::DAILY => 30.44, // Average days per month
self::WEEKLY => 4.33, // Average weeks per month
self::BIWEEKLY => 2.17,
self::MONTHLY => 1.0,
self::QUARTERLY => 1.0 / 3.0,
self::YEARLY => 1.0 / 12.0,
self::ONCE => 0.0,
};
}
}