コード例 #1
0
        //TODO: Remove the InventoryLocationProvider and pass the FulfillmentLocationId by parameter
        public virtual async Task <ProcessedCart> SetFulfillmentLocationIfRequired(FixCartParam param)
        {
            var cart = param.Cart;

            if (!HasValidFulfillmentLocation(cart))
            {
                var fulfillmentLocation =
                    await InventoryLocationProvider.GetFulfillmentLocationAsync(new GetFulfillmentLocationParam
                {
                    Scope = cart.ScopeId
                }).ConfigureAwait(false);

                var shipment = cart.Shipments.FirstOrDefault() ?? new Shipment();

                cart = await CartRepository.UpdateShipmentAsync(new UpdateShipmentParam
                {
                    CartName                          = cart.Name,
                    CultureInfo                       = new CultureInfo(cart.CultureName),
                    FulfillmentLocationId             = fulfillmentLocation.Id,
                    CustomerId                        = cart.CustomerId,
                    FulfillmentMethodName             = shipment.FulfillmentMethod?.Name,
                    FulfillmentScheduleMode           = shipment.FulfillmentScheduleMode,
                    FulfillmentScheduledTimeBeginDate = shipment.FulfillmentScheduledTimeBeginDate,
                    FulfillmentScheduledTimeEndDate   = shipment.FulfillmentScheduledTimeEndDate,
                    PropertyBag                       = shipment.PropertyBag,
                    Id                 = shipment.Id,
                    ScopeId            = cart.ScopeId,
                    ShippingAddress    = shipment.Address,
                    ShippingProviderId = shipment.FulfillmentMethod == null ? Guid.Empty : shipment.FulfillmentMethod.ShippingProviderId
                }).ConfigureAwait(false);
            }

            return(cart);
        }
コード例 #2
0
        /// <summary>
        /// Fix cart missing informations like empty payments or fulfillment location.
        /// This method will be useless when overture will always return a valid cart.
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public virtual async Task <ProcessedCart> FixCartAsync(FixCartParam param)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }
            if (param.Cart == null)
            {
                throw new ArgumentException(GetMessageOfNull(nameof(param.Cart)), nameof(param));
            }

            param.Cart = await AddPaymentIfRequired(param).ConfigureAwait(false);

            param.Cart = await SetFulfillmentLocationIfRequired(param);

            return(param.Cart);
        }
コード例 #3
0
        public virtual Task <ProcessedCart> AddPaymentIfRequired(FixCartParam param)
        {
            var cart = param.Cart;

            if (!HasAnyValidPayment(cart))
            {
                var task = CartRepository.AddPaymentAsync(new AddPaymentParam
                {
                    CartName    = cart.Name,
                    CultureInfo = new CultureInfo(cart.CultureName),
                    CustomerId  = cart.CustomerId,
                    Scope       = cart.ScopeId
                });

                return(task);
            }

            return(Task.FromResult(cart));
        }
コード例 #4
0
 public Task <ProcessedCart> AddPaymentIfRequired(FixCartParam param)
 {
     return(Task.FromResult(param.Cart));
 }
コード例 #5
0
 public Task <ProcessedCart> SetFulfillmentLocationIfRequired(FixCartParam param)
 {
     return(Task.FromResult(param.Cart));
 }
コード例 #6
0
 public Task <ProcessedCart> FixCartAsync(FixCartParam param)
 {
     return(Task.FromResult(param.Cart));
 }