public Purchase ConvertBasketToSale(HttpContextBase context, IUserInfo user, IBasket basket, decimal taxRate, string saleCodePrefix) { UserStatus status = UserStatus.None; // if we have a user that has not yet been created, create them if (!_securityService.Exists(user.Identity.Name)) { status = _securityService.CreateUser(user); if (status != UserStatus.Success) { throw new SecurityException($"Unable to create user for sale: {_securityService.StatusMessage(status)}"); } } // save it to the datasource so it can be used in the sale SaveBasket(user, basket); // create sale SaleFlags flags = (basket.Delivery.DeliveryType == DeliveryType.Address ? SaleFlags.Delivery : SaleFlags.CollectionOnly) | SaleFlags.Created; SaleEntity sale = _productDataProvider.CreateAndReturnSale(user.GetUniqueId <Guid>(), flags, taxRate, string.Concat(saleCodePrefix, GenerateSaleCode()), null); ClearBasket(context, user, emptyDatasource: false); // clear the basket (leave the basket intact in the datasource - this binds the sale) Purchase purchase = _checkoutProvider.CreateSale(sale); purchase.UserStatus = status; return(purchase); }
public void SaveBasket(IUserInfo user, IBasket basket) { _productDataProvider.SaveBasket(user.GetUniqueId <Guid>(), basket); }
public ModelCollection <SaleEntity> ListUserSales(IUserInfo user) { return(_productDataProvider.ListUserSales(user.GetUniqueId <Guid>())); }