'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(); } 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, }; } }