*/ final readonly class ListCampaignsRequest implements UseCase { public function __construct( private CampaignRequestRepository $repository, ) { } #[\Override] public function execute(BaseInput $input): Output { Assert::isInstanceOf($input, Input::class); $result = $this->repository->findAll( pagination: $input->pagination, sortCriteria: $input->sort, filters: $input->filters ); $items = array_map( static fn (CampaignRequest $campaignRequest): CampaignRequestListItem => new CampaignRequestListItem( brandCode: $campaignRequest->brandCode, name: $campaignRequest->name, applicant: $campaignRequest->applicant, campaignType: $campaignRequest->campaignType, status: $campaignRequest->status ), $result->getItems(), ); return new Output( campaignsRequest: new Paginated( pagination: $result->getPagination(), items: $items, total: $result->getTotal(), ), ); } }