. */ declare(strict_types=1); namespace FireflyIII\Exceptions; use FireflyIII\Support\Calendar\Periodicity; /** * Class IntervalException */ final class IntervalException extends \Exception { public array $availableIntervals; public Periodicity $periodicity; /** @var mixed */ protected $message = 'The periodicity %s is unknown. Choose one of available periodicity: %s'; public function __construct(string $message = '', int $code = 0, ?\Throwable $previous = null) { parent::__construct($message, $code, $previous); $this->availableIntervals = []; $this->periodicity = Periodicity::Monthly; } public static function unavailable( Periodicity $periodicity, array $intervals, int $code = 0, ?\Throwable $previous = null ): self { $message = sprintf( 'The periodicity %s is unknown. Choose one of available periodicity: %s', $periodicity->name, implode(', ', $intervals) ); $exception = new self($message, $code, $previous); $exception->periodicity = $periodicity; $exception->availableIntervals = $intervals; return $exception; } }