Class DefaultCartApprovalService

java.lang.Object
com.broadleafcommerce.cartoperation.service.approval.DefaultCartApprovalService
All Implemented Interfaces:
CartApprovalService

public class DefaultCartApprovalService extends Object implements CartApprovalService
The default implementation of CartApprovalService.
  • Field Details

  • Constructor Details

    • DefaultCartApprovalService

      public DefaultCartApprovalService(CartApprovalValidationService cartApprovalValidationService, CartProvider cartProvider, com.broadleafcommerce.common.extension.TypeFactory typeFactory, org.springframework.retry.support.RetryTemplate messageRetryTemplate)
  • Method Details

    • retrieveCartsRequiringApproval

      public org.springframework.data.domain.Page<com.broadleafcommerce.cart.client.domain.Cart> retrieveCartsRequiringApproval(@Nullable String requestedAccountId, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customerRef, @NonNull @NonNull cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable pageable, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartApprovalService
      Retrieve a page of Carts that require approval in the current authenticated user's account context and requested account id if applicable.
      Specified by:
      retrieveCartsRequiringApproval in interface CartApprovalService
      Parameters:
      requestedAccountId - optional parameter to retrieve carts from a specific account, if not specified, carts in the current account and its sub-accounts context will be retrieved
      customerRef - the currently authenticated CustomerRef containing user's account details
      filters - exising filters to build on top of
      pageable - the requested page of results
      contextInfo - context information related to multitenancy
      Returns:
      a page of Carts that require approval in the current authenticated user's account context and requested account id if applicable.
    • submitForApproval

      public CartApprovalProcessResponse submitForApproval(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, @NonNull @NonNull CartApprovalProcessRequest cartApprovalProcessRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartApprovalService
      Action performed by an account member to submit for approval of a Cart. Produces a CartActionAudit.
      Specified by:
      submitForApproval in interface CartApprovalService
      Parameters:
      cart - The cart that was submitted for approval
      customer - The customer who submitted the cart for approval
      cartApprovalProcessRequest - the request with which CartApprovalEndpoint is hit
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      a CartApprovalProcessResponse that contains the updated cart, any validation errors encountered, status of the request, and additionalAttributes
    • rejectCart

      public CartApprovalProcessResponse rejectCart(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, @NonNull @NonNull CartApprovalProcessRequest cartApprovalProcessRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: CartApprovalService
      Action performed by an account approver to reject a Cart. Produces a CartActionAudit . Produces a CartRejectionEvent
      Specified by:
      rejectCart in interface CartApprovalService
      Parameters:
      cart - The cart that was rejected
      customer - The customer who rejected the cart
      cartApprovalProcessRequest - the request with which CartApprovalEndpoint is hit
      contextInfo - Context information around sandbox and multitenant state.
      Returns:
      The rejected cart
    • updateCartForSubmitForApproval

      protected com.broadleafcommerce.cart.client.domain.Cart updateCartForSubmitForApproval(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CartApprovalProcessRequest cartApprovalProcessRequest)
      Updates the name and status of Cart to reflect that it has been submitted for approval.
    • buildCartActionAudit

      protected com.broadleafcommerce.cart.client.domain.CartActionAudit buildCartActionAudit(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customer, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.enums.DefaultCartActionTypes actionType, @NonNull @NonNull String oldCartStatus, @NonNull @NonNull CartActionAuditUserType userType, @Nullable String comment, @Nullable Map<String,Object> data)
      Builds a CartActionAudit based on the given fields.
    • buildUpdateCartRequest

      protected UpdateCartRequest buildUpdateCartRequest(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartActionAudit cartActionAudit)
      Builds an UpdateCartRequest based on the given cart and cart action audit.
      Parameters:
      cart - the Cart to update
      cartActionAudit - the original CartActionAudit to create
      Returns:
      an UpdateCartRequest based on the given cart and cart action audit
    • buildCartApprovalProcessResponse

      protected CartApprovalProcessResponse buildCartApprovalProcessResponse(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart)
      Given the cart and CartApprovalValidationException failures, creates and returns a response.
    • updateCartForRejection

      protected com.broadleafcommerce.cart.client.domain.Cart updateCartForRejection(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull CartApprovalProcessRequest cartApprovalProcessRequest)
      Updates the name and status of Cart to reflect that it has been rejected.
    • sendCartRejectionMessage

      @Deprecated(forRemoval=true, since="1.8.3") protected void sendCartRejectionMessage(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @NonNull @NonNull com.broadleafcommerce.cart.client.domain.CartActionAudit audit, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Deprecated, for removal: This API element is subject to removal in a future version.
      This event is now sent from Cart Services in response to the update to the cart's status. There is no need to have an additional HTTP request for this event.
      Sends a CartRejectionEvent to notify the cart owner.
      Throws:
      CartRejectionMessageException - if the message cannot be sent.
    • getCartName

      protected String getCartName(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart)
      Returns a formatted name for a Cart based on available fields.
      Parameters:
      cart - the Cart to use for formatting.
    • getCartName

      protected String getCartName(@NonNull @NonNull com.broadleafcommerce.cart.client.domain.Cart cart, @Nullable String cartStatus)
      Returns a formatted name for a Cart based on available fields.
      Parameters:
      cart - the Cart to use for formatting.
      cartStatus - a nullable cart status to insert into the name if passed.
    • getDateTimeFormatter

      protected DateTimeFormatter getDateTimeFormatter()
      Returns a DateTimeFormatter based on configured cart name date format.
    • getCustomerName

      protected String getCustomerName(@NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customerRef)
      Returns a customer name or username (if name is not available).
    • buildAccountCartFilters

      protected cz.jirutka.rsql.parser.ast.Node buildAccountCartFilters(@Nullable String requestedAccountId, @NonNull @NonNull String status, @NonNull @NonNull com.broadleafcommerce.order.common.domain.CustomerRef customerRef, @NonNull @NonNull cz.jirutka.rsql.parser.ast.Node existingFilters)
      Builds Node filters based on the requested account id, status, and the account details of the currently authenticated CustomerRef used to retrieve carts.

      By default, if the requested account id is present, the filters will look for only requested account's carts, not those of sub-accounts. Otherwise, filters to retrieve sub-account carts will automatically be applied.

      Note that the usage of root account id is to avoid a table scan when querying against cart's account hierarchy.

      Parameters:
      requestedAccountId - optional parameter to build filters to retrieve carts of a specific account
      status - the status to filter by
      customerRef - the currently authenticated CustomerRef containing user's account details
      existingFilters - exising filters to build on top of
      Returns:
      the Node filters based on the requested account id, status, and the account details of the currently authenticated CustomerRef used to retrieve carts
    • buildAccountCartPageable

      protected org.springframework.data.domain.Pageable buildAccountCartPageable(@Nullable org.springframework.data.domain.Pageable pageable)
      Builds a new Pageable with default sort of Cart.getApprovalRequestedDate() applied.
      Parameters:
      pageable - requested Pageable to build on top of
      Returns:
      a new Pageable with default sort of Cart.getApprovalRequestedDate() applied
    • getCartApprovalValidationService

      protected CartApprovalValidationService getCartApprovalValidationService()
    • getCartProvider

      protected CartProvider getCartProvider()
    • getTypeFactory

      protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
    • getMessageRetryTemplate

      protected org.springframework.retry.support.RetryTemplate getMessageRetryTemplate()
    • getProperties

      protected CartOperationServiceProperties getProperties()
    • setProperties

      @Autowired public void setProperties(CartOperationServiceProperties properties)