1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- namespace App\Models\Enums;
- use App\Models\Container;
- use App\Models\Project;
- use App\Models\Requirement;
- use App\Models\Task;
- enum ApprovalObjectType: string
- {
- case PROJECT = "project";
- case REQUIREMENT = "requirement";
- case TASK = "task";
- case CONTAINER = "container";
- public function modelBuilder(): \Illuminate\Database\Eloquent\Builder
- {
- return match ($this) {
- self::PROJECT => Project::query(),
- self::TASK => Task::query(),
- self::REQUIREMENT => Requirement::query(),
- self::CONTAINER => Container::query(),
- };
- }
- public function flowType(): ApprovalFlowType
- {
- return match ($this) {
- self::PROJECT => ApprovalFlowType::PROJECT,
- self::TASK => ApprovalFlowType::TASK,
- self::REQUIREMENT => ApprovalFlowType::REQUIREMENT,
- self::CONTAINER => ApprovalFlowType::CONTAINER,
- };
- }
- public function actionObjectType(): ActionObjectType
- {
- return match ($this) {
- self::PROJECT => ActionObjectType::PROJECT,
- self::TASK => ActionObjectType::TASK,
- self::REQUIREMENT => ActionObjectType::REQUIREMENT,
- self::CONTAINER => ActionObjectType::CONTAINER,
- };
- }
- public function modelBuilderAllowed(string $id = null): \Illuminate\Database\Eloquent\Builder
- {
- return match ($this) {
- self::PROJECT => Project::query()->allowed($id),
- self::TASK => Task::query()->allowed($id),
- self::REQUIREMENT => Requirement::query(),
- self::CONTAINER => Container::query()->allowed($id),
- };
- }
- public function nameField(): string
- {
- return match ($this) {
- self::REQUIREMENT => "title",
- default => "name",
- };
- }
- }
|