<?phpnamespace App\Documents;use App\Entity\DeliveryMan;use App\Entity\Variables\DelivererDocumentStatus;use App\Repository\DocumentRepository;use Doctrine\ORM\EntityManager;use Symfony\Component\HttpFoundation\Response;class BaseDocument implements DocumentInterface{ protected int $documentId; protected string $control1; protected string $control2; protected string $control3; protected string $validationResult; protected int $documentType; protected ?DeliveryMan $deliveryMan; protected DocumentRepository $documentRepository; protected DocumentChecker $documentChecker; protected EntityManager $entityManager; /** * __construct * * @param EntityManager $entityManager * @param DocumentRepository $documentRepository * @param DocumentChecker $documentChecker * @param DeliveryMan $deliveryMan * @return void */ public function __construct(EntityManager $entityManager, DocumentRepository $documentRepository, DocumentChecker $documentChecker, DeliveryMan $deliveryMan = null) { $this->entityManager = $entityManager; $this->documentRepository = $documentRepository; $this->documentChecker = $documentChecker; $this->deliveryMan = $deliveryMan; } /** * validate * * @return array */ public function validate(): array { return []; } /** * save * * @param DelivererDocumentStatus $delivererDocumentStatus * @return void */ public function save(DelivererDocumentStatus $delivererDocumentStatus): void { $document = $this->documentRepository->find($this->documentId); if (!$document) { throw new \Exception('Document not found', Response::HTTP_NOT_FOUND); } $document->setDocumentStatus($delivererDocumentStatus); $this->entityManager->persist($document); $this->entityManager->flush(); } /** * @return int */ public function getDocumentId(): int { return $this->documentId; } /** * @param mixed $documentId * @return self */ public function setDocumentId(int $documentId): self { $this->documentId = $documentId; return $this; } /** * @return string */ public function getControl1() { return $this->control1; } /** * @param mixed $control1 * @return self */ public function setControl1(string $control1): self { $this->control1 = $control1; return $this; } /** * @return string */ public function getControl2() { return $this->control2; } /** * @param mixed $control2 * @return self */ public function setControl2(string $control2): self { $this->control2 = $control2; return $this; } /** * @return string */ public function getControl3() { return $this->control3; } /** * @param mixed $control3 * @return self */ public function setControl3(string $control3): self { $this->control3 = $control3; return $this; } /** * @return string */ public function getValidationResult() { return $this->validationResult; } /** * @param mixed $validationResult * @return self */ public function setValidationResult(string $validationResult): self { $this->validationResult = $validationResult; return $this; } /** * @return int */ public function getDocumentType() { return $this->documentType; } /** * @param int $documentType * @return self */ public function setDocumentType(int $documentType): self { $this->documentType = $documentType; return $this; } /** * @return ?DeliveryMan */ public function getDeliveryMan() { return $this->deliveryMan; } /** * setDeliveryMan * * @param ?DeliveryMan $deliveryMan * @return self */ public function setDeliveryMan(?DeliveryMan $deliveryMan): self { $this->deliveryMan = $deliveryMan; return $this; } /** * @return DocumentRepository */ public function getDocumentRepository() { return $this->documentRepository; } /** * @param DocumentRepository $documentRepository * @return self */ public function setDocumentRepository(DocumentRepository $documentRepository): self { $this->documentRepository = $documentRepository; return $this; } /** * @return EntityManager */ public function getEntityManager() { return $this->entityManager; } /** * @param EntityManager $entityManager * * @return self */ public function setEntityManager(EntityManager $entityManager): self { $this->entityManager = $entityManager; return $this; }}