| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- <?php
 - 
 - namespace App\Enums\Accounting;
 - 
 - use App\Enums\Concerns\ParsesEnum;
 - use Carbon\CarbonImmutable;
 - use Filament\Support\Contracts\HasLabel;
 - use Illuminate\Support\Carbon;
 - 
 - enum DayOfMonth: int implements HasLabel
 - {
 -     use ParsesEnum;
 - 
 -     case First = 1;
 -     case Last = -1;
 -     case Second = 2;
 -     case Third = 3;
 -     case Fourth = 4;
 -     case Fifth = 5;
 -     case Sixth = 6;
 -     case Seventh = 7;
 -     case Eighth = 8;
 -     case Ninth = 9;
 -     case Tenth = 10;
 -     case Eleventh = 11;
 -     case Twelfth = 12;
 -     case Thirteenth = 13;
 -     case Fourteenth = 14;
 -     case Fifteenth = 15;
 -     case Sixteenth = 16;
 -     case Seventeenth = 17;
 -     case Eighteenth = 18;
 -     case Nineteenth = 19;
 -     case Twentieth = 20;
 -     case TwentyFirst = 21;
 -     case TwentySecond = 22;
 -     case TwentyThird = 23;
 -     case TwentyFourth = 24;
 -     case TwentyFifth = 25;
 -     case TwentySixth = 26;
 -     case TwentySeventh = 27;
 -     case TwentyEighth = 28;
 -     case TwentyNinth = 29;
 -     case Thirtieth = 30;
 -     case ThirtyFirst = 31;
 - 
 -     public function getLabel(): ?string
 -     {
 -         return match ($this) {
 -             self::First => 'First',
 -             self::Last => 'Last',
 -             self::Second => '2nd',
 -             self::Third => '3rd',
 -             self::Fourth => '4th',
 -             self::Fifth => '5th',
 -             self::Sixth => '6th',
 -             self::Seventh => '7th',
 -             self::Eighth => '8th',
 -             self::Ninth => '9th',
 -             self::Tenth => '10th',
 -             self::Eleventh => '11th',
 -             self::Twelfth => '12th',
 -             self::Thirteenth => '13th',
 -             self::Fourteenth => '14th',
 -             self::Fifteenth => '15th',
 -             self::Sixteenth => '16th',
 -             self::Seventeenth => '17th',
 -             self::Eighteenth => '18th',
 -             self::Nineteenth => '19th',
 -             self::Twentieth => '20th',
 -             self::TwentyFirst => '21st',
 -             self::TwentySecond => '22nd',
 -             self::TwentyThird => '23rd',
 -             self::TwentyFourth => '24th',
 -             self::TwentyFifth => '25th',
 -             self::TwentySixth => '26th',
 -             self::TwentySeventh => '27th',
 -             self::TwentyEighth => '28th',
 -             self::TwentyNinth => '29th',
 -             self::Thirtieth => '30th',
 -             self::ThirtyFirst => '31st',
 -         };
 -     }
 - 
 -     public function isFirst(): bool
 -     {
 -         return $this === self::First;
 -     }
 - 
 -     public function isLast(): bool
 -     {
 -         return $this === self::Last;
 -     }
 - 
 -     public function resolveDate(Carbon | CarbonImmutable $date): Carbon | CarbonImmutable
 -     {
 -         if ($this->isLast()) {
 -             return $date->endOfMonth();
 -         }
 - 
 -         return $date->day(min($this->value, $date->daysInMonth));
 -     }
 - 
 -     public function mayExceedMonthLength(): bool
 -     {
 -         return $this->value > 28;
 -     }
 - }
 
 
  |