src/Invoice/Form/Dto/Factory/InvoiceDraftEmailDraftCreateFormDtoFactory.php line 49
<?phpdeclare(strict_types=1);/*** Copyright (c) 2020 TECLA Consulting Group oü.* All rights reserved.** This unpublished material is proprietary to TECLA Consulting Group oü.* All rights reserved. The methods and* techniques described herein are considered trade secrets* and/or confidential. Reproduction or distribution, in whole* or in part, is forbidden except by express written permission* of TECLA Consulting Group oü.** @author Matúš Sýkorjak <matus@tecla.no>* @copyright 2020 TECLA Consulting Group oü*/namespace App\Invoice\Form\Dto\Factory;use App\Contact\Security\ContactContextInterface;use App\Invoice\Form\Dto\InvoiceDraftEmailDraftCreateFormDto;use App\Invoice\Model\InvoiceDraftInterface;use App\Invoice\Query\InvoiceDraftEmail\FindLatestByDraftQueryInterface;use App\Invoice\Util\DefaultInvoiceDraftEmailMessageGeneratorInterface;final class InvoiceDraftEmailDraftCreateFormDtoFactory implements InvoiceDraftEmailDraftCreateFormDtoFactoryInterface{private ContactContextInterface $contactContext;private DefaultInvoiceDraftEmailMessageGeneratorInterface $defaultMessageGenerator;private EmailRecipientFormDtoFactoryInterface $recipientDtoFactory;private FindLatestByDraftQueryInterface $latestByDraftQuery;public function __construct(ContactContextInterface $contactContext,DefaultInvoiceDraftEmailMessageGeneratorInterface $defaultMessageGenerator,EmailRecipientFormDtoFactoryInterface $recipientDtoFactory,FindLatestByDraftQueryInterface $latestByDraftQuery) {$this->contactContext = $contactContext;$this->defaultMessageGenerator = $defaultMessageGenerator;$this->recipientDtoFactory = $recipientDtoFactory;$this->latestByDraftQuery = $latestByDraftQuery;}public function create(array $recipients = [], array $recipientsCc = [], array $recipientsBcc = [], string $message = null): InvoiceDraftEmailDraftCreateFormDto{return new InvoiceDraftEmailDraftCreateFormDto($recipients,$recipientsCc,$recipientsBcc,$message);}public function createDefault(InvoiceDraftInterface $invoiceDraft): InvoiceDraftEmailDraftCreateFormDto{if (null !== ($latestSent = $this->latestByDraftQuery->execute($invoiceDraft))) {$recipients = $this->recipientDtoFactory->createFromCollection($latestSent->getRecipients());$recipientsCc = $this->recipientDtoFactory->createFromCollection($latestSent->getRecipientsCc());} elseif (false === empty($invoiceDraft->getRecipients())) {$recipients = $this->recipientDtoFactory->createFromCollection($invoiceDraft->getRecipients());$recipientsCc = $this->recipientDtoFactory->createFromCollection($invoiceDraft->getRecipientsCc());} else {$recipients = [$this->recipientDtoFactory->create($invoiceDraft->getCustomer()?->getContactEmail()?->getEmail())];$recipientsCc = [$this->recipientDtoFactory->create($this->contactContext->getBase()?->getContactEmail()?->getEmail() ??$invoiceDraft->getSupplier()->getContactEmail()?->getEmail())];}return $this->create($recipients,$recipientsCc,[],$this->defaultMessageGenerator->generate($invoiceDraft));}}