<?php
namespace App\Listing\Builder\ResultEntry;
use App\Export\Builder\ExportBuilderInterface;
use App\Export\Builder\ExporterInterface;
use App\V4\Exporter\QuoteInvoicesExporter;
use App\V4\Model\Quote\Quote;
use App\V4\Model\Response\Listing\ListingResult;
class ResultEntryForQuoteFormatter implements ResultEntryFormatterInterface
{
/**
* @var ExportBuilderInterface
*/
private $exportBuilder;
public function __construct(ExportBuilderInterface $exportBuilder)
{
$this->exportBuilder = $exportBuilder;
}
/**
* {@inheritdoc}
*/
public function supports($entity): bool
{
return Quote::class === get_class($entity);
}
/**
* {@inheritdoc}
*/
public function build($entity): ListingResult
{
/** @var Quote $entity */
$quoteMetadata = [
'id' => $entity->getId(),
'name' => $entity->getName(),
'prospectId' => $entity->getProspectId(),
'isLate' => $entity->isLate(),
'isWon' => $entity->isWon(),
'isSplit' => $entity->isSplit(),
'splitType' => $entity->getSplitType(),
];
$quoteMetadata[QuoteInvoicesExporter::QUOTE_INVOICES] = $this->exportBuilder
->getExporter($entity, QuoteInvoicesExporter::QUOTE_INVOICES, ExporterInterface::EXPORT_TYPE_LISTING)
->convert($entity, QuoteInvoicesExporter::QUOTE_INVOICES)
;
return (new ListingResult())
->setMetadata($quoteMetadata)
;
}
}