Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
use Pimcore\Bundle\StudioBackendBundle\MappedParameter\CollectionParameters;
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\PageParameter;
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\PageSizeParameter;
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\SortByParameter;
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\SortOrderParameter;
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Parameter\Query\TextFieldParameter;
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Property\GenericCollection;
use Pimcore\Bundle\StudioBackendBundle\OpenApi\Attribute\Response\Content\CollectionJson;
Expand Down Expand Up @@ -72,6 +74,8 @@
description: 'Optional term to filter the saved search configurations by name.',
required: false
)]
#[SortByParameter(enum: ['name', 'modificationDate'])]
#[SortOrderParameter]
#[SuccessResponse(
description: 'saved_search_get_configurations_success_response',
content: new CollectionJson(new GenericCollection(ConfigurationListItem::class))
Expand All @@ -81,11 +85,15 @@
])]
public function getSavedSearchConfigurations(
#[MapQueryParameter] ?string $searchTerm = null,
#[MapQueryParameter] ?string $sortBy = null,

Check notice on line 88 in src/Search/Controller/SavedSearch/ListConfigurationsController.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Controller/SavedSearch/ListConfigurationsController.php#L88

Incorrect spacing between argument "$sortBy" and equals sign; expected 0 but found 1
#[MapQueryParameter] ?string $sortOrder = null,

Check notice on line 89 in src/Search/Controller/SavedSearch/ListConfigurationsController.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Controller/SavedSearch/ListConfigurationsController.php#L89

Incorrect spacing between argument "$sortOrder" and equals sign; expected 0 but found 1
#[MapQueryString] CollectionParameters $parameters = new CollectionParameters(),
): JsonResponse {
$collection = $this->savedSearchConfigurationService->listConfigurations(
$parameters,
$searchTerm
$searchTerm,
$sortBy,
$sortOrder
);

return $this->getPaginatedCollection(
Expand Down
12 changes: 10 additions & 2 deletions src/Search/Repository/SavedSearchConfigurationRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,20 @@
return $configuration;
}

public function getList(?string $searchTerm): array
public function getList(?string $searchTerm, ?string $sortBy = null, ?string $sortOrder = null): array

Check notice on line 45 in src/Search/Repository/SavedSearchConfigurationRepository.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Repository/SavedSearchConfigurationRepository.php#L45

Incorrect spacing between argument "$sortBy" and equals sign; expected 0 but found 1
{
// Whitelist the sortable fields to keep the ORDER BY safe; default to newest first.
$sortField = match ($sortBy) {
'name' => 'c.name',
'modificationDate' => 'c.modificationDate',
default => 'c.modificationDate',
};
$direction = strtoupper((string) $sortOrder) === 'ASC' ? 'ASC' : 'DESC';

$queryBuilder = $this->entityManager->createQueryBuilder()
->select('c')
->from(SavedSearchConfiguration::class, 'c')
->orderBy('c.modificationDate', 'DESC');
->orderBy($sortField, $direction);

$searchTerm = $searchTerm !== null ? trim($searchTerm) : null;
if ($searchTerm !== null && $searchTerm !== '') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
/**
* @return SavedSearchConfiguration[]
*/
public function getList(?string $searchTerm): array;
public function getList(?string $searchTerm, ?string $sortBy = null, ?string $sortOrder = null): array;

Check notice on line 32 in src/Search/Repository/SavedSearchConfigurationRepositoryInterface.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Repository/SavedSearchConfigurationRepositoryInterface.php#L32

Incorrect spacing between argument "$sortBy" and equals sign; expected 0 but found 1

/**
* @return SavedSearchConfiguration[]
Expand Down
11 changes: 8 additions & 3 deletions src/Search/Service/SavedSearchConfigurationService.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,19 @@
) {
}

public function listConfigurations(CollectionParameters $parameters, ?string $searchTerm): Collection
{
public function listConfigurations(
CollectionParameters $parameters,
?string $searchTerm,
?string $sortBy = null,

Check notice on line 59 in src/Search/Service/SavedSearchConfigurationService.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Service/SavedSearchConfigurationService.php#L59

Incorrect spacing between argument "$sortBy" and equals sign; expected 0 but found 1
?string $sortOrder = null,

Check notice on line 60 in src/Search/Service/SavedSearchConfigurationService.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Service/SavedSearchConfigurationService.php#L60

Incorrect spacing between argument "$sortOrder" and equals sign; expected 0 but found 1
): Collection {
$currentUser = $this->securityService->getCurrentUser();
$userId = $currentUser->getId();

// The repository applies the ORDER BY; the share filter below preserves that order.
$accessibleConfigurations = array_values(
array_filter(
$this->repository->getList($searchTerm),
$this->repository->getList($searchTerm, $sortBy, $sortOrder),
fn (SavedSearchConfiguration $configuration): bool => $this->shareService
->isConfigurationSharedWithUser($configuration, $currentUser)
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@
/**
* @return Collection<ConfigurationListItem>
*/
public function listConfigurations(CollectionParameters $parameters, ?string $searchTerm): Collection;
public function listConfigurations(
CollectionParameters $parameters,
?string $searchTerm,
?string $sortBy = null,

Check notice on line 37 in src/Search/Service/SavedSearchConfigurationServiceInterface.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Service/SavedSearchConfigurationServiceInterface.php#L37

Incorrect spacing between argument "$sortBy" and equals sign; expected 0 but found 1
?string $sortOrder = null,

Check notice on line 38 in src/Search/Service/SavedSearchConfigurationServiceInterface.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Service/SavedSearchConfigurationServiceInterface.php#L38

Incorrect spacing between argument "$sortOrder" and equals sign; expected 0 but found 1
): Collection;

Check notice on line 39 in src/Search/Service/SavedSearchConfigurationServiceInterface.php

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

src/Search/Service/SavedSearchConfigurationServiceInterface.php#L39

Expected 2 blank lines after function; 1 found

/**
* @return Collection<ConfigurationListItem>
Expand Down
Loading