Skip to content

Commit 36a061d

Browse files
[Discounts] Search overview (#2773)
* [Discounts] Search overview * Fixes before review * Reworded Type sort clause * Update docs/search/discounts_search_reference/discounts_sort_clauses.md Co-authored-by: julitafalcondusza <[email protected]> --------- Co-authored-by: julitafalcondusza <[email protected]>
1 parent 2194538 commit 36a061d

File tree

5 files changed

+109
-2
lines changed

5 files changed

+109
-2
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Ibexa\Contracts\CoreSearch\Values\Query\Criterion\FieldValueCriterion;
6+
use Ibexa\Contracts\Discounts\Value\Query\Criterion;
7+
use Ibexa\Contracts\Discounts\Value\Query\DiscountQuery;
8+
use Ibexa\Contracts\Discounts\Value\Query\SortClause;
9+
10+
$now = new DateTimeImmutable();
11+
12+
$query = new DiscountQuery(
13+
new Criterion\LogicalAnd(
14+
new Criterion\IsEnabledCriterion(),
15+
new Criterion\StartDateCriterion($now, FieldValueCriterion::COMPARISON_LTE),
16+
new Criterion\LogicalOr(
17+
new Criterion\EndDateCriterion($now, FieldValueCriterion::COMPARISON_GTE),
18+
new Criterion\EndDateCriterion(null, FieldValueCriterion::COMPARISON_EQ)
19+
),
20+
),
21+
[
22+
new SortClause\Type(),
23+
new SortClause\Priority(),
24+
new SortClause\CreatedAt(),
25+
]
26+
);
27+
28+
/** @var \Ibexa\Contracts\Discounts\DiscountServiceInterface $discountService */
29+
$results = $discountService->findDiscounts($query);

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@
6868
"league/oauth2-google": "^4.0",
6969
"ibexa/connector-dam": "~4.6.x-dev",
7070
"ibexa/twig-components": "~4.6.x-dev",
71-
"ibexa/tree-builder": "~4.6.x-dev"
71+
"ibexa/tree-builder": "~4.6.x-dev",
72+
"ibexa/discounts": "~4.6.x-dev",
73+
"ibexa/discounts-codes": "~4.6.x-dev"
7274
},
7375
"scripts": {
7476
"fix-cs": "php-cs-fixer fix --config=.php-cs-fixer.php -v --show-progress=dots",
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
month_change: false
3+
editions:
4+
- lts-update
5+
- commerce
6+
---
7+
8+
# Discounts Search Criterion reference
9+
10+
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:
11+
12+
| Criterion | Description |
13+
|---|---|
14+
| [CreatedAtCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-CreatedAtCriterion.html) | Find discounts with given creation date|
15+
| [CreatorCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-CreatorCriterion.html) | Find discounts created by specific users|
16+
| [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` |
17+
| [IdentifierCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IdentifierCriterion.html) | Find discounts by their identifier |
18+
| [IsEnabledCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IsEnabledCriterion.html) | Find discounts by their status|
19+
| [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 |
20+
| [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 |
21+
| [NameCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-NameCriterion.html) | Find discounts by their name |
22+
| [PriorityCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-PriorityCriterion.html) | Find discounts by their priority |
23+
| [StartDateCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-StartDateCriterion.html) | Find discounts with given start date|
24+
| [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|
25+
26+
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.
27+
28+
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.
29+
30+
The following example shows how you can use the criteria to find all the currently active discounts:
31+
32+
```php hl_lines="13-20"
33+
[[= include_file('code_samples/discounts/src/Query/Search.php') =]]
34+
```
35+
36+
The criteria limit the result set to discounts matching all of the conditions listed below:
37+
38+
- discount must be enabled
39+
- discount start date is not after the current date
40+
- discount end date is not before the current date or is not specified
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
month_change: false
3+
editions:
4+
- lts-update
5+
- commerce
6+
---
7+
8+
# Discounts Search Sort Clauses reference
9+
10+
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:
11+
12+
| Name | Description |
13+
| --- | --- |
14+
| [CreatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-CreatedAt.html)| Sort by discount's creation date |
15+
| [EndDate](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-EndDate.html)| Sort by discount's end date |
16+
| [Id](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Id.html)| Sort by discount's database ID |
17+
| [Identifier](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Identifier.html)| Sort by discount identifier |
18+
| [Priority](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Priority.html)| Sort by discount priority |
19+
| [StartDate](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-StartDate.html)| Sort by discount start date |
20+
| [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. When sorting with ascending order, cart discounts are returned first. |
21+
| [UpdatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-UpdatedAt.html)| Sort by discount modification date |
22+
23+
The following example shows how to use them to sort the searched discounts:
24+
25+
```php hl_lines="22-24"
26+
[[= include_file('code_samples/discounts/src/Query/Search.php') =]]
27+
```
28+
29+
The returned active discounts are sorted by:
30+
31+
- the place where they activate: catalog or cart, with `cart` discounts returned first
32+
- priority (descending)
33+
- creation date (descending)
34+
35+
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).

mkdocs.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,6 @@ nav:
405405
- Discounts: discounts/discounts.md
406406
- Discounts guide: discounts/discounts_guide.md
407407
- Install Discounts: discounts/install_discounts.md
408-
# - Extend Discounts: discounts/extend_discounts.md
409408
- Customer management:
410409
- Customer Portal: customer_management/customer_portal.md
411410
- Customer Portal guide: customer_management/customer_portal_guide.md
@@ -665,6 +664,7 @@ nav:
665664
- ObjectNameCriterion: search/activity_log_search_reference/object_name_criterion.md
666665
- UserCriterion: search/activity_log_search_reference/user_criterion.md
667666
- Action Configuration Search Criteria: search/ai_actions_search_reference/action_configuration_criteria.md
667+
- Discounts Search Criteria: search/discounts_search_reference/discounts_criteria.md
668668
- Sort Clause reference:
669669
- General Sort Clauses:
670670
- General Sort Clause reference: search/sort_clause_reference/sort_clause_reference.md
@@ -732,6 +732,7 @@ nav:
732732
- Url Sort Clause: search/url_search_reference/url_url_sort_clause.md
733733
- Activity Log Sort Clauses: search/activity_log_search_reference/activity_log_sort_clauses.md
734734
- Action Configuration Sort Clauses: search/ai_actions_search_reference/action_configuration_sort_clauses.md
735+
- Discounts Sort Clauses: search/discounts_search_reference/discounts_sort_clauses.md
735736
- Aggregation reference:
736737
# Content aggregations
737738
- Aggregation reference: search/aggregation_reference/aggregation_reference.md

0 commit comments

Comments
 (0)