//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); }
/// <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); }
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)); }
public Task <ProcessedCart> AddPaymentIfRequired(FixCartParam param) { return(Task.FromResult(param.Cart)); }
public Task <ProcessedCart> SetFulfillmentLocationIfRequired(FixCartParam param) { return(Task.FromResult(param.Cart)); }
public Task <ProcessedCart> FixCartAsync(FixCartParam param) { return(Task.FromResult(param.Cart)); }