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:
@@ -106,25 +106,25 @@ final class ExportCreateCommand extends Command
|
||||
$timezone = new \DateTimeZone($timezone);
|
||||
$dateFactory = new DateTimeFactory($timezone);
|
||||
|
||||
$customerIDs = $input->getOption('customer');
|
||||
$customerIDs = $this->optionToIntArray($input, 'customer');
|
||||
$customers = [];
|
||||
if (\count($customerIDs) > 0) {
|
||||
$customers = $this->customerRepository->findByIds($customerIDs);
|
||||
}
|
||||
|
||||
$projectIDs = $input->getOption('project');
|
||||
$projectIDs = $this->optionToIntArray($input, 'project');
|
||||
$projects = [];
|
||||
if (\count($projectIDs) > 0) {
|
||||
$projects = $this->projectRepository->findByIds($projectIDs);
|
||||
}
|
||||
|
||||
$teamIDs = $input->getOption('team');
|
||||
$teamIDs = $this->optionToIntArray($input, 'team');
|
||||
$teams = [];
|
||||
if (\count($teamIDs) > 0) {
|
||||
$teams = $this->teamRepository->findByIds($teamIDs);
|
||||
}
|
||||
|
||||
$userIDs = $input->getOption('user');
|
||||
$userIDs = $this->optionToIntArray($input, 'user');
|
||||
$users = [];
|
||||
if (\count($userIDs) > 0) {
|
||||
$users = $this->userRepository->findByIds($userIDs);
|
||||
@@ -287,6 +287,25 @@ final class ExportCreateCommand extends Command
|
||||
return Command::SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int>
|
||||
*/
|
||||
private function optionToIntArray(InputInterface $input, string $name): array
|
||||
{
|
||||
$results = [];
|
||||
|
||||
$options = $input->getOption($name);
|
||||
if (\is_array($options) && \count($options) > 0) {
|
||||
foreach ($options as $option) {
|
||||
if (is_numeric($option)) {
|
||||
$results[] = (int) $option;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
private function savePreview(Response $response, string $directory): string
|
||||
{
|
||||
$filename = uniqid('invoice_');
|
||||
|
||||
Reference in New Issue
Block a user