|
| 1 | +<?php declare(strict_types=1); |
| 2 | + |
| 3 | +namespace App\DataTransferObject\Shadowing; |
| 4 | + |
| 5 | +enum EventType: string |
| 6 | +{ |
| 7 | + case ACCOUNTS = 'accounts'; |
| 8 | + case AWARDS = 'awards'; |
| 9 | + case CLARIFICATIONS = 'clarifications'; |
| 10 | + case CONTESTS = 'contests'; |
| 11 | + case GROUPS = 'groups'; |
| 12 | + case JUDGEMENTS = 'judgements'; |
| 13 | + case JUDGEMENT_TYPES = 'judgement-types'; |
| 14 | + case LANGUAGES = 'languages'; |
| 15 | + case ORGANIZATIONS = 'organizations'; |
| 16 | + case PROBLEMS = 'problems'; |
| 17 | + case RUNS = 'runs'; |
| 18 | + case STATE = 'state'; |
| 19 | + case SUBMISSIONS = 'submissions'; |
| 20 | + case TEAMS = 'teams'; |
| 21 | + case TEAM_MEMBERS = 'team-members'; |
| 22 | + |
| 23 | + public static function fromString(string $value): EventType |
| 24 | + { |
| 25 | + if ($value === 'contest') { |
| 26 | + return EventType::CONTESTS; |
| 27 | + } |
| 28 | + |
| 29 | + return EventType::from($value); |
| 30 | + } |
| 31 | + |
| 32 | + /** |
| 33 | + * @return class-string<EventData> |
| 34 | + */ |
| 35 | + public function getEventClass(): string |
| 36 | + { |
| 37 | + switch ($this) { |
| 38 | + case self::ACCOUNTS: |
| 39 | + return Account::class; |
| 40 | + case self::AWARDS: |
| 41 | + return Award::class; |
| 42 | + case self::CLARIFICATIONS: |
| 43 | + return ClarificationEvent::class; |
| 44 | + case self::CONTESTS: |
| 45 | + return ContestEvent::class; |
| 46 | + case self::GROUPS: |
| 47 | + return GroupEvent::class; |
| 48 | + case self::JUDGEMENTS: |
| 49 | + return JudgementEvent::class; |
| 50 | + case self::JUDGEMENT_TYPES: |
| 51 | + return JudgementTypeEvent::class; |
| 52 | + case self::LANGUAGES: |
| 53 | + return LanguageEvent::class; |
| 54 | + case self::ORGANIZATIONS: |
| 55 | + return OrganizationEvent::class; |
| 56 | + case self::PROBLEMS: |
| 57 | + return ProblemEvent::class; |
| 58 | + case self::RUNS: |
| 59 | + return RunEvent::class; |
| 60 | + case self::STATE: |
| 61 | + return StateEvent::class; |
| 62 | + case self::SUBMISSIONS: |
| 63 | + return SubmissionEvent::class; |
| 64 | + case self::TEAMS: |
| 65 | + return TeamEvent::class; |
| 66 | + case self::TEAM_MEMBERS: |
| 67 | + return TeamMember::class; |
| 68 | + } |
| 69 | + } |
| 70 | +} |
0 commit comments