refactored repositories and DB queries (#5026)
* removed unused teams from export order * added new paginator for query instead of querybuilder * added field hydrate enums * hide PARTIAL deprecation * never log deprecations in production * replaced InvoiceLoader with native Doctrine feature * prevent excessive permission queries * support loading customers of team * improved findByIds * internalized API * fix null string deprecations
This commit is contained in:
@@ -14,11 +14,33 @@ class CustomerQuery extends BaseQuery implements VisibilityInterface
|
||||
use VisibilityTrait;
|
||||
|
||||
public const CUSTOMER_ORDER_ALLOWED = [
|
||||
'name', 'description' => 'comment', 'country', 'number', 'homepage', 'email', 'mobile', 'fax',
|
||||
'phone', 'currency', 'address', 'contact', 'company', 'vat_id', 'budget', 'timeBudget', 'visible'
|
||||
'name',
|
||||
'description' => 'comment',
|
||||
'country', 'number',
|
||||
'homepage',
|
||||
'email',
|
||||
'mobile',
|
||||
'fax',
|
||||
'phone',
|
||||
'currency',
|
||||
'address',
|
||||
'contact',
|
||||
'company',
|
||||
'vat_id',
|
||||
'budget',
|
||||
'timeBudget',
|
||||
'visible'
|
||||
];
|
||||
|
||||
private ?string $country = null;
|
||||
/**
|
||||
* @var array<int>
|
||||
*/
|
||||
private array $customerIds = [];
|
||||
/**
|
||||
* @var array<CustomerQueryHydrate>
|
||||
*/
|
||||
private array $hydrate = [];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -26,9 +48,23 @@ class CustomerQuery extends BaseQuery implements VisibilityInterface
|
||||
'orderBy' => 'name',
|
||||
'visibility' => VisibilityInterface::SHOW_VISIBLE,
|
||||
'country' => null,
|
||||
'customerIds' => [],
|
||||
]);
|
||||
}
|
||||
|
||||
protected function copyFrom(BaseQuery $query): void
|
||||
{
|
||||
parent::copyFrom($query);
|
||||
|
||||
if ($query instanceof CustomerQuery) {
|
||||
$this->setCustomerIds($query->getCustomerIds());
|
||||
$this->setCountry($query->getCountry());
|
||||
foreach ($query->getHydrate() as $hydrate) {
|
||||
$this->addHydrate($hydrate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getCountry(): ?string
|
||||
{
|
||||
return $this->country;
|
||||
@@ -38,4 +74,40 @@ class CustomerQuery extends BaseQuery implements VisibilityInterface
|
||||
{
|
||||
$this->country = $country;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<int> $ids
|
||||
*/
|
||||
public function setCustomerIds(array $ids): void
|
||||
{
|
||||
$this->customerIds = $ids;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int[]
|
||||
*/
|
||||
public function getCustomerIds(): array
|
||||
{
|
||||
return $this->customerIds;
|
||||
}
|
||||
|
||||
private function addHydrate(CustomerQueryHydrate $hydrate): void
|
||||
{
|
||||
if (!\in_array($hydrate, $this->hydrate, true)) {
|
||||
$this->hydrate[] = $hydrate;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return CustomerQueryHydrate[]
|
||||
*/
|
||||
public function getHydrate(): array
|
||||
{
|
||||
return $this->hydrate;
|
||||
}
|
||||
|
||||
public function loadTeams(): void
|
||||
{
|
||||
$this->addHydrate(CustomerQueryHydrate::TEAMS);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user