/// <summary>
        /// Calculate points
        /// </summary>
        /// <param name="basketItem">Basket Item</param>
        /// <returns>Points earned</returns>
        private decimal CalculatePointsEarned(OrderBasketItem basketItem)
        {
            ProductDetails pd = _productDetailsList.Where(d => d.ProductId == basketItem.ProductId).FirstOrDefault();

            if (pd == null)
            {
                throw new CustomExceptions("Invalid Product Id!");
            }
            PointsPromotion pp = _pointsPromotionList.Where(d => d.Category == pd.Category).FirstOrDefault();

            if (pp != null)
            {
                // apply discount
                if (IsTimeInRange(pp.StartDate, pp.EndDate, OrderRequest.TransactionDate))
                {
                    return(basketItem.UnitPrice * basketItem.Quantity * pp.ForEachDollarSpent);
                }
            }
            else
            {
                pp = _pointsPromotionList.Where(d => d.Category == "Any").FirstOrDefault();
                if (IsTimeInRange(pp.StartDate, pp.EndDate, OrderRequest.TransactionDate))
                {
                    return(basketItem.UnitPrice * basketItem.Quantity * pp.ForEachDollarSpent);
                }
            }
            return(0);
        }
 public void DeleteOrderBasketItem(OrderBasketItem basketItem, string retailerDbKey)
 {
     Execute("usp_DelteOrderBasketItem", new
     {
         @OrderBasketId     = basketItem.OrderBasketId,
         @OrderBasketItemId = basketItem.RetailerOrderBasketItemId
     }, retailerDbKey);
 }
 public void UpdateOrderBasketItem(OrderBasketItem basketItem, string retailerDbKey)
 {
     Execute("usp_UpdateOrderItem", new
     {
         @OrderBasketId     = basketItem.OrderBasketId,
         @OrderBasketItemId = basketItem.RetailerOrderBasketItemId,
         @NumberOfUnits     = basketItem.NumberOfUnits,
         @TotalPrice        = basketItem.TotalPrice
     }, retailerDbKey);
 }
示例#4
0
 public bool RemoveFromBasket(int basketId, int productId)
 {
     if (db.OrderBaskets.FirstOrDefault(b => b.Id == basketId) != null && db.Products.FirstOrDefault(p => p.Id == productId) != null)
     {
         OrderBasketItem basketItem = db.OrderBasketItems.FirstOrDefault(bi => bi.OrderBasketId == basketId && bi.ProductId == productId);
         if (basketItem != null)
         {
             db.OrderBasketItems.Remove(basketItem);
             db.SaveChanges();
             return(true);
         }
     }
     return(false);
 }
 public void AddOrderBasketItem(OrderBasketItem basketItem, string retailerDbKey)
 {
     Execute("usp_InsertOrderBasketItem", new
     {
         @OrderBasketId = basketItem.OrderBasketId,
         @ProductId     = basketItem.ProductId,
         @ProductName   = basketItem.ProductName,
         @ProductCode   = basketItem.ProductCode,
         @BarCode       = basketItem.BarCode,
         @UnitOfMeasure = basketItem.UnitOfMeasure,
         @NumberOfUnits = basketItem.NumberOfUnits,
         @PricePerUnit  = basketItem.PricePerUnit,
         @TotalPrice    = basketItem.TotalPrice
     }, retailerDbKey);
 }
        /// <summary>
        /// Calculate discount
        /// </summary>
        /// <param name="basketItem">asket Item</param>
        /// <returns>Total discount applied</returns>
        private decimal CalculateDiscount(OrderBasketItem basketItem)
        {
            DiscountPromotionProducts dpp = _discountPromotionProductsList.Where(d => d.ProductId == basketItem.ProductId).FirstOrDefault();

            if (dpp != null)
            {
                DiscountPromotion dp = _discountPromotionList.Where(d => d.DiscountPromotionId == dpp.DiscountPromotionId).FirstOrDefault();

                if (dp != null)
                {
                    // apply discount
                    if (IsTimeInRange(dp.StartDate, dp.EndDate, OrderRequest.TransactionDate))
                    {
                        return((basketItem.UnitPrice * basketItem.Quantity * dp.DiscountPercent) / 100);
                    }
                }
            }

            return(0);
        }
示例#7
0
 public void DeleteOrderBasketItem(OrderBasketItem basketItem, int retailerId)
 {
     orderBasketRepository.DeleteOrderBasketItem(basketItem,
                                                 databaseConfigAdapter.GetRetailerDatabaseConfigKey(retailerId));
 }
示例#8
0
 public void AddOrderBasketItem(int retailerId, OrderBasketItem basketItem)
 {
     orderBasketRepository.AddOrderBasketItem(basketItem, databaseConfigAdapter.GetRetailerDatabaseConfigKey(retailerId));
 }
 /// <summary>
 /// Calculate total amount before discount
 /// </summary>
 /// <param name="basketItem">Basket Item</param>
 /// <returns>Total amount of cost</returns>
 private decimal CalculateTotalAmount(OrderBasketItem basketItem)
 {
     return(basketItem.UnitPrice * basketItem.Quantity);
 }