namespace Lc\CaracoleBundle\Container\File; | namespace Lc\CaracoleBundle\Container\File; | ||||
use Lc\CaracoleBundle\Factory\File\DocumentFactory; | use Lc\CaracoleBundle\Factory\File\DocumentFactory; | ||||
use Lc\CaracoleBundle\Generator\DocumentReferenceGenerator; | |||||
use Lc\CaracoleBundle\Repository\File\DocumentRepositoryQuery; | use Lc\CaracoleBundle\Repository\File\DocumentRepositoryQuery; | ||||
use Lc\CaracoleBundle\Repository\File\DocumentStore; | use Lc\CaracoleBundle\Repository\File\DocumentStore; | ||||
protected DocumentFactory $factory; | protected DocumentFactory $factory; | ||||
protected DocumentRepositoryQuery $repositoryQuery; | protected DocumentRepositoryQuery $repositoryQuery; | ||||
protected DocumentStore $store; | protected DocumentStore $store; | ||||
protected DocumentReferenceGenerator $referenceGenerator; | |||||
public function __construct( | public function __construct( | ||||
DocumentFactory $factory, | DocumentFactory $factory, | ||||
DocumentRepositoryQuery $repositoryQuery, | DocumentRepositoryQuery $repositoryQuery, | ||||
DocumentStore $store | |||||
DocumentStore $store, | |||||
DocumentReferenceGenerator $referenceGenerator | |||||
) { | ) { | ||||
$this->factory = $factory; | $this->factory = $factory; | ||||
$this->repositoryQuery = $repositoryQuery; | $this->repositoryQuery = $repositoryQuery; | ||||
$this->store = $store; | $this->store = $store; | ||||
$this->referenceGenerator = $referenceGenerator; | |||||
} | } | ||||
public function getFactory(): DocumentFactory | public function getFactory(): DocumentFactory | ||||
return $this->store; | return $this->store; | ||||
} | } | ||||
public function getReferenceGenerator(): DocumentReferenceGenerator | |||||
{ | |||||
return $this->referenceGenerator; | |||||
} | |||||
} | } |
->andWhere('.buyerAddress = :buyerAddress') | ->andWhere('.buyerAddress = :buyerAddress') | ||||
->setParameter('buyerAddress', $buyerAddress); | ->setParameter('buyerAddress', $buyerAddress); | ||||
} | } | ||||
public function filterByReference(string $reference = null) | |||||
{ | |||||
if(is_null($reference)) { | |||||
return $this->andWhere('.reference IS NULL'); | |||||
} | |||||
else { | |||||
return $this | |||||
->andWhere('.reference LIKE :reference') | |||||
->setParameter('reference', $reference); | |||||
} | |||||
} | |||||
public function filterIsReferenceNotNull() | |||||
{ | |||||
return $this->andWhere('.reference IS NOT NULL'); | |||||
} | |||||
} | } |
use App\Entity\Address\Address; | use App\Entity\Address\Address; | ||||
use Lc\CaracoleBundle\Model\File\DocumentInterface; | use Lc\CaracoleBundle\Model\File\DocumentInterface; | ||||
use Lc\CaracoleBundle\Model\File\DocumentModel; | |||||
use Lc\CaracoleBundle\Repository\MerchantStoreTrait; | use Lc\CaracoleBundle\Repository\MerchantStoreTrait; | ||||
use Lc\CaracoleBundle\Repository\SectionStoreTrait; | use Lc\CaracoleBundle\Repository\SectionStoreTrait; | ||||
use Lc\CaracoleBundle\Repository\AbstractStore; | use Lc\CaracoleBundle\Repository\AbstractStore; | ||||
public function orderByDefault(RepositoryQueryInterface $query): RepositoryQueryInterface | public function orderByDefault(RepositoryQueryInterface $query): RepositoryQueryInterface | ||||
{ | { | ||||
$query->orderBy('id'); | |||||
return $query; | return $query; | ||||
} | } | ||||
return $query; | return $query; | ||||
} | } | ||||
public function getOneByReference(string $reference = null, string $type = null, $query = null) | |||||
{ | |||||
$query = $this->createDefaultQuery($query); | |||||
$query | |||||
->filterByReference($reference) | |||||
->orderBy('createdAt', 'ASC'); | |||||
if(!is_null($type)) { | |||||
$query->filterByType($type); | |||||
} | |||||
return $query->findOne(); | |||||
} | |||||
public function getOneLatestByType(string $documentType, $query = null): DocumentInterface | public function getOneLatestByType(string $documentType, $query = null): DocumentInterface | ||||
{ | { | ||||
$query = $this->createDefaultQuery($query); | $query = $this->createDefaultQuery($query); | ||||
$query | $query | ||||
->filterIsReferenceNotNull() | |||||
->filterByType($documentType) | ->filterByType($documentType) | ||||
->orderBy('createdAt', 'DESC'); | ->orderBy('createdAt', 'DESC'); | ||||