예제 #1
0
        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);
        }
예제 #2
0
 public void SaveBasket(IUserInfo user, IBasket basket)
 {
     _productDataProvider.SaveBasket(user.GetUniqueId <Guid>(), basket);
 }
예제 #3
0
 public ModelCollection <SaleEntity> ListUserSales(IUserInfo user)
 {
     return(_productDataProvider.ListUserSales(user.GetUniqueId <Guid>()));
 }