Add ListingDefinition value object and its factory

[MAILPOET-2645]
This commit is contained in:
Jan Jakeš
2020-02-27 14:43:46 +01:00
committed by Jack Kitterhing
parent 521b473755
commit fe16dd3ccc
2 changed files with 97 additions and 0 deletions

View File

@@ -94,6 +94,20 @@ class Handler {
];
}
public function getListingDefinition(array $data): ListingDefinition {
$data = $this->processData($data);
return new ListingDefinition(
$data['group'],
$data['filter'] ?? [],
$data['search'],
$data['params'] ?? [],
$data['sort_by'],
$data['sort_order'],
$data['offset'],
$data['limit']
);
}
private function setSearch(ORMWrapper $model, array $data) {
if (empty($data['search'])) {
return;

View File

@@ -0,0 +1,83 @@
<?php declare(strict_types = 1);
namespace MailPoet\Listing;
class ListingDefinition {
/** @var string|null */
private $group;
/** @var array */
private $filters;
/** @var string|null */
private $search;
/** @var array */
private $parameters;
/** @var string */
private $sortBy;
/** @var string */
private $sortOrder;
/** @var int */
private $offset;
/** @var int */
private $limit;
public function __construct(
string $group = null,
array $filters,
string $search = null,
array $parameters,
string $sortBy,
string $sortOrder,
int $offset,
int $limit
) {
$this->group = $group;
$this->filters = $filters;
$this->search = $search;
$this->parameters = $parameters;
$this->sortBy = $sortBy;
$this->sortOrder = $sortOrder;
$this->offset = $offset;
$this->limit = $limit;
}
/** @return string|null */
public function getGroup() {
return $this->group;
}
public function getFilters(): array {
return $this->filters;
}
/** @return string|null */
public function getSearch() {
return $this->search;
}
public function getParameters(): array {
return $this->parameters;
}
public function getSortBy(): string {
return $this->sortBy;
}
public function getSortOrder(): string {
return $this->sortOrder;
}
public function getOffset(): int {
return $this->offset;
}
public function getLimit(): int {
return $this->limit;
}
}