Interface CartService<P extends com.broadleafcommerce.cart.client.domain.Cart>
- All Superinterfaces:
com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>
- All Known Implementing Classes:
DefaultCartService
Carts
. Supported by CartRepository
.- Author:
- Chad Harchar (charchar)
-
Method Summary
Modifier and TypeMethodDescriptionint
purgeAbandonedAnonymousCarts
(Duration abandonedCartTimeout, Collection<String> statuses, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Delete anonymous carts that have not been updated for the specified amount of time.org.springframework.data.domain.Page<P>
readAll
(cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable pageable, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Read a page of narrowedCarts
based on the givenfilters
.org.springframework.data.domain.Page<P>
readAllByStatusesAndCustomerIdAndAccountId
(Set<String> statuses, String customerId, String accountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given customer id, account id, and statuses.readAllMatchingTenantByIds
(List<String> ids, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Finds a list of the carts with the givenids
and matching the tenant from the givenContextInfo
.readAnonymousCustomerHistoricalOrder
(String emailAddress, String orderNumber, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Reads an anonymous or not authenticated customer's historical cart using theorderNumber
andemailAddress
.readAnonymousCustomerOrder
(String cartId, String emailAddress, Set<String> allowedStatuses, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Reads a cart bycartId
andemailAddress
excluding the customer owned carts.org.springframework.data.domain.Page<P>
readByAccountHierarchyContaining
(String accountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts where the account hierarchy contains the given account id.org.springframework.data.domain.Page<P>
readByAccountHierarchyContainingAndStatusIn
(String accountId, Iterable<String> statuses, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts where the account hierarchy contains the given account id and has the matching status.org.springframework.data.domain.Page<P>
readByCustomerId
(String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, org.springframework.data.domain.Pageable page) Find all carts for the given customer id.org.springframework.data.domain.Page<P>
readByCustomerIdAndAccountId
(String customerId, String accountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given customer id and account id.org.springframework.data.domain.Page<P>
readByCustomerIdAndAccountId
(String customerId, String accountId, org.springframework.data.domain.Pageable page, cz.jirutka.rsql.parser.ast.Node filters, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given customer id and account id.readByCustomerIdAndOrderNumber
(String customerId, String orderNumber, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Find the cart (if it exists) for the provided customer id and order number.readByNameAndCustomerId
(String cartName, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find the cart for the given name and customer id.readByNameAndCustomerRefCustomerId
(String cartName, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.org.springframework.data.domain.Page<P>
readByRootAccountId
(String rootAccountId, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given root account id.org.springframework.data.domain.Page<P>
readByRootAccountIdAndStatusIn
(String rootAccountId, Iterable<String> statuses, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given root account id and statuses.readByStatus
(String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads all of the carts with the given status.readByStatusAndCustomerId
(String status, String customerId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find a cart with the given status (if it exists) for the provided customer id.readByStatusAndCustomerIdAndAccountId
(String status, String customerId, String accountId, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find a cart with the given status (if it exists) for the provided customer id and account id.readByStatusAndCustomerIdAndAccountIdAndName
(String status, String customerId, String accountId, String name, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find a cart with the given status (if it exists) for the provided customer id and account id.readCustomerOrder
(String cartId, String customerId, Set<String> allowedStatuses, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Reads a cart bycartId
,customerId
, &allowedStatuses
.org.springframework.data.domain.Page<P>
readExpiredQuotesByStatusNotIn
(Collection<String> statusesToExclude, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Finds a list of expired carts of typeDefaultCartTypes.QUOTE
, and a status not in the provided 'statuses' collection.org.springframework.data.domain.Page<P>
readHistoricalCartsByCustomer
(String customerId, Date startDate, Date endDate, com.broadleafcommerce.data.tracking.core.context.ContextInfo context, org.springframework.data.domain.Pageable page) Find all carts that areDefaultCartStatuses.SUBMITTED
orDefaultCartStatuses.CANCELLED
for the provided customer and dates.org.springframework.data.domain.Page<P>
readPageMatchingTenantByStatus
(String status, org.springframework.data.domain.Pageable pageable, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Finds a page of the carts with the givenstatus
and matching the tenant from the givenContextInfo
.replaceCartItem
(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Replaces the cart item in the cart and saves.replaceWithCartAudit
(String id, UpdateCartRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Replaces the cart state and its relatedCartActionAudit
.updateCartItem
(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Patches (updates only present fields) of the cart item in the cart and saves.updateCartsMatchingTenantStatus
(List<String> cartIds, String status, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates theCart.getStatus()
for the given cart ids and status and matching the tenant from the givenContextInfo
.updateWithCartAudit
(String id, @NonNull UpdateCartRequest request, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the cart state and its relatedCartActionAudit
.Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService
create, createAll, createAllAllowingPartialSuccess, delete, readAll, readAll, readAll, readAllByContextId, readByContextId, replace, replaceAll, replaceAllAllowingPartialSuccess, update, updateAll, updateAllAllowingPartialSuccess, updateSort
-
Method Details
-
readAll
org.springframework.data.domain.Page<P> readAll(cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable pageable, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Read a page of narrowedCarts
based on the givenfilters
.- Parameters:
filters
- the RSQLNode
used to restrict result, must not benull
pageable
- the current pagecontextInfo
- Request context information around sandbox and multitenant state- Returns:
- a page of narrowed
Carts
based on the givenfilters
-
readByCustomerId
org.springframework.data.domain.Page<P> readByCustomerId(String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo, @Nullable org.springframework.data.domain.Pageable page) Find all carts for the given customer id.- Parameters:
customerId
- the id of the customer who owns the cartcontextInfo
- Context information used to discriminate the carts by applicationIdpage
- the requested page of results from the database- Returns:
- all carts for the given customer id
-
readByCustomerIdAndAccountId
org.springframework.data.domain.Page<P> readByCustomerIdAndAccountId(String customerId, @Nullable String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given customer id and account id. Account id can be null to find customer's personal non-account carts.- Parameters:
customerId
- the id of the customer who owns the cartaccountId
- the id of the account that the cart belongs to,page
- the requested page of results from the databasecontextInfo
- context information related to multitenancy- Returns:
- all carts for the given customer id and account id
-
readByCustomerIdAndAccountId
org.springframework.data.domain.Page<P> readByCustomerIdAndAccountId(String customerId, @Nullable String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given customer id and account id. Account id can be null to find customer's personal non-account carts.- Parameters:
customerId
- the id of the customer who owns the cartaccountId
- the id of the account that the cart belongs to,page
- the requested page of results from the databasefilters
- RSQL filterscontextInfo
- context information related to multitenancy- Returns:
- all carts for the given customer id and account id
-
readAllByStatusesAndCustomerIdAndAccountId
org.springframework.data.domain.Page<P> readAllByStatusesAndCustomerIdAndAccountId(Set<String> statuses, String customerId, @Nullable String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given customer id, account id, and statuses. Account id can be null to find customer's personal non-account carts.- Parameters:
statuses
- thestatuses
to matchcustomerId
- the id of the customer who owns the cartaccountId
- the id of the account that the cart belongs topage
- the requested page of results from the databasecontextInfo
- context information related to multitenancy- Returns:
- all carts for the given customer id and account id and statuses
-
readByRootAccountId
org.springframework.data.domain.Page<P> readByRootAccountId(String rootAccountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given root account id.This is useful to query all the carts that belongs to the same root account.
For example, if we have this account setup, rootAcct -> subAcct (child of rootAcct) -> subSubAcct (child of subAcct), this query is useful to query all the carts that belong to the root account and its sub-accounts.
- Parameters:
rootAccountId
- the root account id of the cartpage
- the requested page of results from the databasecontextInfo
- context information related to multitenancy- Returns:
- all carts for the given root account id
-
readByRootAccountIdAndStatusIn
org.springframework.data.domain.Page<P> readByRootAccountIdAndStatusIn(String rootAccountId, Iterable<String> statuses, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts for the given root account id and statuses.- Parameters:
rootAccountId
- the root account id of the cartstatuses
- thestatuses
to matchpage
- the requested page of results from the databasecontextInfo
- context information related to multitenancy- Returns:
- all carts for the given root account id
-
readByAccountHierarchyContaining
org.springframework.data.domain.Page<P> readByAccountHierarchyContaining(String accountId, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts where the account hierarchy contains the given account id.This is useful to query all the carts that belongs to the same non-root account and its sub-accounts.
For example, if we have this account setup, rootAcct -> subAcct (child of rootAcct) -> subSubAcct (child of subAcct), this query is useful to query all the carts that belong to the subAcct and its sub-accounts (subSubAcct in this case).
- Parameters:
accountId
- the account id to filter the account hierarchy bypage
- the requested page of results from the databasecontextInfo
- context information related to multitenancy- Returns:
- all carts where the account hierarchy contains the given account id
-
readByAccountHierarchyContainingAndStatusIn
org.springframework.data.domain.Page<P> readByAccountHierarchyContainingAndStatusIn(String accountId, Iterable<String> statuses, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find all carts where the account hierarchy contains the given account id and has the matching status.This is useful to query all the carts that belongs to the same non-root account and its sub-accounts based on the status
For example, if we have this account setup, rootAcct -> subAcct (child of rootAcct) -> subSubAcct (child of subAcct), this query is useful to query all the carts that belong to the subAcct and its sub-accounts (subSubAcct in this case) and has the
DefaultCartStatuses.REQUIRES_APPROVAL
.- Parameters:
accountId
- the account id to filter the account hierarchy bystatuses
- thestatuses
to matchpage
- the requested page of results from the databasecontextInfo
- context information related to multitenancy- Returns:
- all carts where the account hierarchy contains the given account id
-
readByNameAndCustomerId
Optional<P> readByNameAndCustomerId(String cartName, String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find the cart for the given name and customer id. There should only be one result, as cart names are unique per customer.- Parameters:
cartName
- the name of the cart to retrievecustomerId
- the id of the customer who owns the cartcontextInfo
- Context information used to discriminate the carts by applicationId- Returns:
- an optional cart with the name and customer provided
-
readByNameAndCustomerRefCustomerId
@Deprecated Optional<P> readByNameAndCustomerRefCustomerId(String cartName, String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Deprecated.Find the cart for the given name and customer id. There should only be one result, as cart names are unique per customer.- Parameters:
cartName
- the name of the cart to retrievecustomerId
- the id of the customer who owns the cartcontextInfo
- Context information used to discriminate the carts by applicationId- Returns:
- an optional cart with the name and customer provided
-
readByStatusAndCustomerId
Optional<P> readByStatusAndCustomerId(String status, String customerId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find a cart with the given status (if it exists) for the provided customer id.- Parameters:
status
- the status of carts to considercustomerId
- the id of the customer who owns the cartcontextInfo
- Context information used to discriminate the carts by applicationId- Returns:
- a cart with the given status (if it exists) for the provided customer id.
-
readByStatusAndCustomerIdAndAccountId
Optional<P> readByStatusAndCustomerIdAndAccountId(String status, String customerId, @Nullable String accountId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find a cart with the given status (if it exists) for the provided customer id and account id. Account id can be null to find customer's personal non-account carts.- Parameters:
status
- the status of carts to considercustomerId
- the id of the customer who owns the cartaccountId
- the id of the account that the cart belongs tocontextInfo
- Context information used to discriminate the carts by applicationId- Returns:
- a cart with the given status (if it exists) for the provided customer id and account id.
-
readByStatusAndCustomerIdAndAccountIdAndName
Optional<P> readByStatusAndCustomerIdAndAccountIdAndName(String status, String customerId, @Nullable String accountId, @Nullable String name, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Find a cart with the given status (if it exists) for the provided customer id and account id. Account id can be null to find customer's personal non-account carts.- Parameters:
status
- the status of carts to considercustomerId
- the id of the customer who owns the cartaccountId
- the id of the account that the cart belongs tocontextInfo
- Context information used to discriminate the carts by applicationId- Returns:
- a cart with the given status (if it exists) for the provided customer id and account id.
-
readHistoricalCartsByCustomer
org.springframework.data.domain.Page<P> readHistoricalCartsByCustomer(String customerId, @Nullable Date startDate, @Nullable Date endDate, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context, @Nullable org.springframework.data.domain.Pageable page) Find all carts that areDefaultCartStatuses.SUBMITTED
orDefaultCartStatuses.CANCELLED
for the provided customer and dates.- Parameters:
customerId
- the id of the customer who owns the cartsstartDate
- the starting date to filter carts byendDate
- the ending date to filter carts bycontext
- Context information used to discriminate the carts by applicationIdpage
- the requested page of results from the database- Returns:
- all carts that are
DefaultCartStatuses.SUBMITTED
orDefaultCartStatuses.CANCELLED
for the provided customer and dates.
-
readByCustomerIdAndOrderNumber
Optional<P> readByCustomerIdAndOrderNumber(String customerId, String orderNumber, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Find the cart (if it exists) for the provided customer id and order number.- Parameters:
customerId
- the id of the customer who owns the cartorderNumber
- the order number for the cartcontext
- Context information used to discriminate the carts by applicationId- Returns:
- a cart (if it exists) with the given order number that belongs to the provided customer.
-
updateCartsMatchingTenantStatus
List<P> updateCartsMatchingTenantStatus(List<String> cartIds, String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates theCart.getStatus()
for the given cart ids and status and matching the tenant from the givenContextInfo
.- Parameters:
cartIds
- the ids of the carts to update the status forstatus
- the status to update the carts tocontextInfo
- Context information used to discriminate the carts by applicationId- Returns:
- the updated carts
-
readExpiredQuotesByStatusNotIn
org.springframework.data.domain.Page<P> readExpiredQuotesByStatusNotIn(Collection<String> statusesToExclude, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Finds a list of expired carts of typeDefaultCartTypes.QUOTE
, and a status not in the provided 'statuses' collection.- Parameters:
statusesToExclude
- a collection of statuses that are not returned.page
- the requested page of results from the database.contextInfo
- context information related to multitenancy.- Returns:
- a page of expired carts of type
DefaultCartTypes.QUOTE
with a status not in the provided collection.
-
updateWithCartAudit
P updateWithCartAudit(String id, @NonNull @NonNull UpdateCartRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Updates the cart state and its relatedCartActionAudit
. Will also send relevant notifications based on changes to the cart's status.- Parameters:
id
- Id of the cart to updaterequest
- The request with the new cart state and auditcontextInfo
- Additional sandbox and multitenant info- Returns:
- The updated cart state.
-
replaceWithCartAudit
P replaceWithCartAudit(String id, UpdateCartRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Replaces the cart state and its relatedCartActionAudit
. Will also send relevant notifications based on changes to the cart's status.- Parameters:
id
- Id of the cart to replacerequest
- The request with the new cart state and auditcontextInfo
- Additional sandbox and multitenant info- Returns:
- The updated cart state.
-
replaceCartItem
P replaceCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Replaces the cart item in the cart and saves.- Parameters:
cart
- the cart to replace an item ofcartItemId
- the ID of the cart item to replacecartItem
- the cart item to replace with (ID will be overwritten withcartItemId
)context
- Context information used to discriminate the carts by applicationId- Returns:
- the updated cart
-
updateCartItem
P updateCartItem(P cart, String cartItemId, com.broadleafcommerce.cart.client.domain.CartItem cartItem, com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Patches (updates only present fields) of the cart item in the cart and saves.- Parameters:
cart
- the cart to replace an item ofcartItemId
- the ID of the cart item to replacecartItem
- the cart item to replace with (ID will be overwritten withcartItemId
)context
- Context information used to discriminate the carts by applicationId- Returns:
- the updated cart
-
readAnonymousCustomerHistoricalOrder
Optional<P> readAnonymousCustomerHistoricalOrder(String emailAddress, String orderNumber, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Reads an anonymous or not authenticated customer's historical cart using theorderNumber
andemailAddress
.- Parameters:
emailAddress
- Theemail address associated with the cart
orderNumber
- Thehistorical cart's order number
context
- Context information around sandbox and multitenant state.- Returns:
- The historical cart for an anonymous customer
-
readAnonymousCustomerOrder
Optional<P> readAnonymousCustomerOrder(String cartId, String emailAddress, Set<String> allowedStatuses, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Reads a cart bycartId
andemailAddress
excluding the customer owned carts. This is usually used to find carts for an anonymous customer.- Parameters:
cartId
- The cart idemailAddress
- Theemail address associated with the cart
allowedStatuses
- the set of allowed statusescontext
- Context information around sandbox and multitenant state.- Returns:
- A cart matching
cartId
andemailAddress
-
readCustomerOrder
Optional<P> readCustomerOrder(String cartId, String customerId, Set<String> allowedStatuses, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context) Reads a cart bycartId
,customerId
, &allowedStatuses
.- Parameters:
cartId
- The cart idcustomerId
- The customer id associated with the cartallowedStatuses
- the set of allowed statusescontext
- Context information around sandbox and multitenant state.- Returns:
- A cart (if it exists) matching
cartId
andcustomerId
-
purgeAbandonedAnonymousCarts
int purgeAbandonedAnonymousCarts(Duration abandonedCartTimeout, Collection<String> statuses, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Delete anonymous carts that have not been updated for the specified amount of time.- Parameters:
abandonedCartTimeout
- The length of time a cart can be inactive before being purged.statuses
- The statuses to consider for purging.contextInfo
- context information related to multitenancy- Returns:
- The number of carts purged.
-
readByStatus
List<P> readByStatus(String status, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Reads all of the carts with the given status.- Parameters:
status
- TheCartStatus
to filter bycontextInfo
- Context information around sandbox and multitenant state.- Returns:
- All of the carts with the given status.
-
readPageMatchingTenantByStatus
org.springframework.data.domain.Page<P> readPageMatchingTenantByStatus(String status, @Nullable org.springframework.data.domain.Pageable pageable, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Finds a page of the carts with the givenstatus
and matching the tenant from the givenContextInfo
.- Parameters:
status
- the status of the cartpageable
- the requested page of results from the databasecontextInfo
- context information related to multitenancy- Returns:
- A page of the carts with the given
status
and matching the tenant from the givenContextInfo
.
-
readAllMatchingTenantByIds
List<P> readAllMatchingTenantByIds(List<String> ids, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo) Finds a list of the carts with the givenids
and matching the tenant from the givenContextInfo
.- Parameters:
ids
- the ids of the cartcontextInfo
- context information related to multitenancy- Returns:
- Finds a list of the carts with the given
ids
and matching the tenant from the givenContextInfo
.
-
readByNameAndCustomerId(String, String, ContextInfo)