44 lines
1.9 KiB
PHP
44 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Actions\Projects;
|
|
|
|
use App\Http\Resources\FieldTypeOptionResource;
|
|
use App\Http\Resources\ProjectResource;
|
|
use App\Http\Resources\TicketFieldDefinitionResource;
|
|
use App\Http\Resources\TicketLinkTypeResource;
|
|
use App\Http\Resources\TicketPriorityResource;
|
|
use App\Http\Resources\TicketTypeResource;
|
|
use App\Models\Project;
|
|
use App\Models\TicketFieldDefinition;
|
|
|
|
class BuildProjectTicketMetadataSettingsPayload
|
|
{
|
|
public function __construct(
|
|
private readonly ResolveProjectTemplateState $resolveProjectTemplateState,
|
|
) {}
|
|
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
public function handle(Project $project, mixed $status = null, mixed $error = null): array
|
|
{
|
|
return [
|
|
'fieldTypeOptions' => FieldTypeOptionResource::collection(collect(TicketFieldDefinition::FIELD_TYPES))->resolve(),
|
|
'project' => ProjectResource::make($project)->resolve(),
|
|
'error' => $error,
|
|
'status' => $status,
|
|
'templateState' => $this->resolveProjectTemplateState->handle($project, [
|
|
DuplicateProjectConfiguration::COPY_PROJECT_SETTINGS,
|
|
DuplicateProjectConfiguration::COPY_TICKET_TYPES,
|
|
DuplicateProjectConfiguration::COPY_TICKET_PRIORITIES,
|
|
DuplicateProjectConfiguration::COPY_TICKET_FIELDS,
|
|
DuplicateProjectConfiguration::COPY_TICKET_LINK_TYPES,
|
|
]),
|
|
'ticketFieldDefinitions' => TicketFieldDefinitionResource::collection($project->ticketFieldDefinitions()->get())->resolve(),
|
|
'ticketLinkTypes' => TicketLinkTypeResource::collection($project->ticketLinkTypes()->get())->resolve(),
|
|
'ticketPriorities' => TicketPriorityResource::collection($project->ticketPriorities()->get())->resolve(),
|
|
'ticketTypes' => TicketTypeResource::collection($project->ticketTypes()->withCount('tickets')->get())->resolve(),
|
|
];
|
|
}
|
|
}
|