diff --git a/code_samples/discounts/src/Query/Search.php b/code_samples/discounts/src/Query/Search.php new file mode 100644 index 0000000000..9a6af40415 --- /dev/null +++ b/code_samples/discounts/src/Query/Search.php @@ -0,0 +1,29 @@ +findDiscounts($query); diff --git a/composer.json b/composer.json index 23610d8336..eebf291e30 100644 --- a/composer.json +++ b/composer.json @@ -68,7 +68,9 @@ "league/oauth2-google": "^4.0", "ibexa/connector-dam": "~4.6.x-dev", "ibexa/twig-components": "~4.6.x-dev", - "ibexa/tree-builder": "~4.6.x-dev" + "ibexa/tree-builder": "~4.6.x-dev", + "ibexa/discounts": "~4.6.x-dev", + "ibexa/discounts-codes": "~4.6.x-dev" }, "scripts": { "fix-cs": "php-cs-fixer fix --config=.php-cs-fixer.php -v --show-progress=dots", diff --git a/docs/search/discounts_search_reference/discounts_criteria.md b/docs/search/discounts_search_reference/discounts_criteria.md new file mode 100644 index 0000000000..ce296c8818 --- /dev/null +++ b/docs/search/discounts_search_reference/discounts_criteria.md @@ -0,0 +1,40 @@ +--- +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: + +| Criterion | Description | +|---|---| +| [CreatedAtCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-CreatedAtCriterion.html) | Find discounts with given creation date| +| [CreatorCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-CreatorCriterion.html) | Find discounts created by specific users| +| [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` | +| [IdentifierCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IdentifierCriterion.html) | Find discounts by their identifier | +| [IsEnabledCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IsEnabledCriterion.html) | Find discounts by their status| +| [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 | +| [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 | +| [NameCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-NameCriterion.html) | Find discounts by their name | +| [PriorityCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-PriorityCriterion.html) | Find discounts by their priority | +| [StartDateCriterion](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-StartDateCriterion.html) | Find discounts with given start date| +| [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| + +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. + +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. + +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 diff --git a/docs/search/discounts_search_reference/discounts_sort_clauses.md b/docs/search/discounts_search_reference/discounts_sort_clauses.md new file mode 100644 index 0000000000..8195bcd191 --- /dev/null +++ b/docs/search/discounts_search_reference/discounts_sort_clauses.md @@ -0,0 +1,35 @@ +--- +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: + +| Name | Description | +| --- | --- | +| [CreatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-CreatedAt.html)| Sort by discount's creation date | +| [EndDate](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-EndDate.html)| Sort by discount's end date | +| [Id](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Id.html)| Sort by discount's database ID | +| [Identifier](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Identifier.html)| Sort by discount identifier | +| [Priority](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-Priority.html)| Sort by discount priority | +| [StartDate](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-StartDate.html)| Sort by discount start date | +| [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. | +| [UpdatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-SortClause-UpdatedAt.html)| Sort by discount modification date | + +The following example shows how to use them to sort the searched discounts: + +```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 `cart` discounts returned first +- 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). diff --git a/mkdocs.yml b/mkdocs.yml index 26d41e813c..4f120095ad 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -405,7 +405,6 @@ nav: - Discounts: discounts/discounts.md - Discounts guide: discounts/discounts_guide.md - Install Discounts: discounts/install_discounts.md -# - Extend Discounts: discounts/extend_discounts.md - Customer management: - Customer Portal: customer_management/customer_portal.md - Customer Portal guide: customer_management/customer_portal_guide.md @@ -665,6 +664,7 @@ nav: - ObjectNameCriterion: search/activity_log_search_reference/object_name_criterion.md - UserCriterion: search/activity_log_search_reference/user_criterion.md - Action Configuration Search Criteria: search/ai_actions_search_reference/action_configuration_criteria.md + - Discounts Search Criteria: search/discounts_search_reference/discounts_criteria.md - Sort Clause reference: - General Sort Clauses: - General Sort Clause reference: search/sort_clause_reference/sort_clause_reference.md @@ -732,6 +732,7 @@ nav: - Url Sort Clause: search/url_search_reference/url_url_sort_clause.md - Activity Log Sort Clauses: search/activity_log_search_reference/activity_log_sort_clauses.md - Action Configuration Sort Clauses: search/ai_actions_search_reference/action_configuration_sort_clauses.md + - Discounts Sort Clauses: search/discounts_search_reference/discounts_sort_clauses.md - Aggregation reference: # Content aggregations - Aggregation reference: search/aggregation_reference/aggregation_reference.md