Files
KanbanGit/app/Actions/Projects/BuildProjectBoardSettingsPayload.php

45 lines
1.4 KiB
PHP

<?php
namespace App\Actions\Projects;
use App\Http\Resources\BoardColumnResource;
use App\Http\Resources\ProjectResource;
use App\Http\Resources\TicketStatusResource;
use App\Models\Project;
class BuildProjectBoardSettingsPayload
{
public function __construct(
private readonly ResolveProjectTemplateState $resolveProjectTemplateState,
) {}
/**
* @return array<string, mixed>
*/
public function handle(Project $project, mixed $status = null): array
{
return [
'backlogTicketStatuses' => TicketStatusResource::collection(
$project->ticketStatuses()
->whereNull('board_column_id')
->get(),
)->resolve(),
'boardColumns' => BoardColumnResource::collection(
$project->boardColumns()
->with('ticketStatuses')
->get(),
)->resolve(),
'project' => ProjectResource::make($project)->resolve(),
'status' => $status,
'templateState' => $this->resolveProjectTemplateState->handle($project, [
DuplicateProjectConfiguration::COPY_BOARD_WORKFLOW,
]),
'ticketStatuses' => TicketStatusResource::collection(
$project->ticketStatuses()
->with(['allowedTargetStatuses.boardColumn', 'boardColumn'])
->get(),
)->resolve(),
];
}
}