-
Notifications
You must be signed in to change notification settings - Fork 82
[Discounts] Search overview #2773
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
use Ibexa\Contracts\CoreSearch\Values\Query\Criterion\FieldValueCriterion; | ||
use Ibexa\Contracts\Discounts\Value\Query\Criterion; | ||
use Ibexa\Contracts\Discounts\Value\Query\DiscountQuery; | ||
use Ibexa\Contracts\Discounts\Value\Query\SortClause; | ||
|
||
$now = new DateTimeImmutable(); | ||
|
||
$query = new DiscountQuery( | ||
new Criterion\LogicalAnd( | ||
new Criterion\IsEnabledCriterion(), | ||
new Criterion\StartDateCriterion($now, FieldValueCriterion::COMPARISON_LTE), | ||
new Criterion\LogicalOr( | ||
new Criterion\EndDateCriterion($now, FieldValueCriterion::COMPARISON_GTE), | ||
new Criterion\EndDateCriterion(null, FieldValueCriterion::COMPARISON_EQ) | ||
), | ||
), | ||
[ | ||
new SortClause\Type(), | ||
new SortClause\Priority(), | ||
new SortClause\CreatedAt(), | ||
] | ||
); | ||
|
||
/** @var \Ibexa\Contracts\Discounts\DiscountServiceInterface $discountService */ | ||
$results = $discountService->findDiscounts($query); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
--- | ||
Check warning on line 1 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
month_change: false | ||
editions: | ||
- lts-update | ||
- commerce | ||
--- | ||
|
||
# Discounts Search Criterion reference | ||
|
||
Search Criteria are found in the `Ibexa\Contracts\Discounts\Value\Query\Criterion` namespace, implementing the [CriterionInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-CriterionInterface.html) interface: | ||
Check failure on line 10 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
|
||
| Criterion | Description | | ||
|---|---| | ||
| [CreatedAtCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-CreatedAtCriterion.html) | Find discounts with given creation date| | ||
Check failure on line 14 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [CreatorCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-CreatorCriterion.html) | Find discounts created by specific users| | ||
Check failure on line 15 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [EndDateCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-EndDateCriterion.html) | Find discounts by their end date. For permanent discounts, the end date is set to `null` | | ||
Check failure on line 16 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [IdentifierCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IdentifierCriterion.html) | Find discounts by their identifier | | ||
Check failure on line 17 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [IsEnabledCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IsEnabledCriterion.html) | Find discounts by their status| | ||
Check failure on line 18 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [LogicalAnd](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-LogicalAnd.html) | Composite criterion to group multiple criterions using the AND condition | | ||
Check failure on line 19 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [LogicalOr](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-LogicalOr.html) | Composite criterion to group multiple criterions using the OR condition | | ||
Check failure on line 20 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [NameCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-NameCriterion.html) | Find discounts by their name | | ||
Check failure on line 21 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [PriorityCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-PriorityCriterion.html) | Find discounts by their priority | | ||
Check failure on line 22 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [StartDateCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-StartDateCriterion.html) | Find discounts with given start date| | ||
Check failure on line 23 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
| [TypeCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-TypeCriterion.html) | Find cart or catalog discounts by using constants from the [DiscountType](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-DiscountType.html) class| | ||
Check failure on line 24 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
|
||
You can use the [FieldValueCriterion's constants](/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-Criterion-FieldValueCriterion.html#constants) like `FieldValueCriterion::COMPARISON_CONTAINS` or `FieldValueCriterion::COMPARISON_STARTS_WITH` to specify the operator for the condition. | ||
Check failure on line 26 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
|
||
Use the `limit` and `offset` properties of [DiscountQuery](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-DiscountQuery.html#constants) to limit the number of results and implement pagination. | ||
Check failure on line 28 in docs/search/discounts_search_reference/discounts_criteria.md
|
||
|
||
The following example shows how you can use the criteria to find all the currently active discounts: | ||
|
||
```php hl_lines="13-20" | ||
[[= include_file('code_samples/discounts/src/Query/Search.php') =]] | ||
``` | ||
|
||
The criteria limit the result set to discounts matching all of the conditions listed below: | ||
|
||
- discount must be enabled | ||
- discount start date is not after the current date | ||
- discount end date is not before the current date or is not specified |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- | ||
Check warning on line 1 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
month_change: false | ||
editions: | ||
- lts-update | ||
- commerce | ||
--- | ||
|
||
# Discounts Search Sort Clauses reference | ||
|
||
Sort Clauses are found in the [`Ibexa\Contracts\Discounts\Value\Query\SortClause`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-discounts-value-query-sortclause.html) namespace, implementing the [SortClauseInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClauseInterface.html) interface: | ||
Check failure on line 10 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
|
||
| Name | Description | | ||
| --- | --- | | ||
| [CreatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-CreatedAt.html)| Sort by discount's creation date | | ||
Check failure on line 14 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
| [EndDate](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-EndDate.html)| Sort by discount's end date | | ||
Check failure on line 15 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
| [Id](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Id.html)| Sort by discount's database ID | | ||
Check failure on line 16 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
| [Identifier](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Identifier.html)| Sort by discount identifier | | ||
Check failure on line 17 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
| [Priority](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Priority.html)| Sort by discount priority | | ||
Check failure on line 18 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
| [StartDate](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-StartDate.html)| Sort by discount start date | | ||
Check failure on line 19 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
| [Type](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Type.html)| Sort by the place where the discount activates: catalog or cart. Catalog discounts rank higher than cart discounts | | ||
Check failure on line 20 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
| [UpdatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-UpdatedAt.html)| Sort by discount modification date | | ||
Check failure on line 21 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
||
|
||
The following example shows how to use them to sort the searched Discounts: | ||
mnocon marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
||
```php hl_lines="22-24" | ||
[[= include_file('code_samples/discounts/src/Query/Search.php') =]] | ||
``` | ||
|
||
The returned active discounts are sorted by: | ||
|
||
- the place where they activate: catalog or cart, with `catalog` type ranking higher | ||
konradoboza marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
- priority (descending) | ||
- creation date (descending) | ||
|
||
You can change the default sorting order by using the `SORT_ASC` and `SORT_DESC` constants from [`AbstractSortClause`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-AbstractSortClause.html#constants). | ||
Check failure on line 35 in docs/search/discounts_search_reference/discounts_sort_clauses.md
|
Uh oh!
There was an error while loading. Please reload this page.