Exemple #1
0
        }    //TaxOrder

        private static decimal AdjustOrder(AjaxOrder order, BusinessRules rules)
        {
            //this method allows special order pricing to be applied based on order.campaign or Business Rules (no implementation currently).
            decimal adjustment = 0;

            return(adjustment);
        }    //TaxOrder
        public JsonResult Order(AjaxOrder model)
        {
            if (ModelState.IsValid)
            {
                IEnumerable <IOrderable> workplace = null;
                switch (model.Tab)
                {
                case "presentations": workplace = db.Presentations; break;

                case "videos": workplace = db.Videos; break;

                case "documents": workplace = db.Documents; break;

                case "files": workplace = db.Files; break;

                case "tests": workplace = db.Tests; break;
                }
                foreach (var item in model.Order)
                {
                    var orderable = workplace.Where(o => o.Id == item.Id).FirstOrDefault();
                    orderable.Order = item.Order;
                    Debug.WriteLine(item.Id + " => " + item.Order);
                }
                db.SaveChanges();
                return(Json(new AjaxResult()
                {
                    IsOk = true
                }));
            }
            return(Json(new AjaxResult()
            {
                IsOk = false
            }));
        }
Exemple #3
0
        }    //CalculateOrderItem

        private static decimal SubtotalOrder(AjaxOrder order, BusinessRules rules)
        {
            decimal subtotal = 0;

            foreach (AjaxOrderItem item in order.Items)
            {
                subtotal += item.LineTotal;
            }
            return(subtotal);
        }    //SubtotalOrder
Exemple #4
0
 public static AjaxOrder CalculateOrder(AjaxOrder order, BusinessRules busRules, TaxRate[] taxRates)
 {
     for (int j = 0; j < order.Items.Length; j++)
     {
         order.Items[j] = CalculateOrderItem(order.Items[j], order.Campaign, busRules);
     }
     order.Subtotal   = SubtotalOrder(order, busRules);
     order.ShipHand   = ShipHandOrder(order, busRules);
     order.Tax        = TaxOrder(order, busRules, taxRates);
     order.Adjustment = AdjustOrder(order, busRules);
     order.Total      = TotalOrder(order, busRules);
     return(order);
 }    //CalculateOrder
Exemple #5
0
        }    //ShipHandOrder

        private static decimal TaxOrder(AjaxOrder order, BusinessRules rules, TaxRate[] taxRates)
        {
            TaxRate applicableTaxRate = taxRates.SingleOrDefault(x => x.State == order.ShipState);

            if (applicableTaxRate.AppliesToShipHand)
            {
                return((order.Subtotal + order.ShipHand) * applicableTaxRate.Rate);
            }
            else
            {
                return(order.Subtotal * applicableTaxRate.Rate);
            }
        }    //TaxOrder
Exemple #6
0
          //this method is an AJAX target for CalculateOrder
          public async Task<JsonResult> CalculateOrderAsync()
          {
               Stream req = Request.InputStream;
               req.Seek(0, SeekOrigin.Begin);
               string payload = new StreamReader(req).ReadToEnd();
               AjaxOrder requestOrder = JsonConvert.DeserializeObject<AjaxOrder>(payload);

               BusinessRules busRules = await repository.GetBusinessRulesAsync();
               TaxRate[] taxRates = await repository.GetTaxRatesAsync();

               AjaxOrder responseOrder = OrderCalculator.CalculateOrder(requestOrder, busRules, taxRates);

               JsonResult response = Json(responseOrder);
               response.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
               return response;
          }  //CalculateOrderAsync
Exemple #7
0
        }    //SubtotalOrder

        private static decimal ShipHandOrder(AjaxOrder order, BusinessRules rules)
        {
            int totalquantity = 0;

            foreach (AjaxOrderItem item in order.Items)
            {
                totalquantity += item.Quantity;
            }

            if (rules.ShipHandPerItem)
            {
                return(rules.ShipHandAmount * totalquantity);
            }
            else
            {
                return((totalquantity > 0) ? rules.ShipHandAmount : 0);
            }
        }    //ShipHandOrder
Exemple #8
0
        }    //TaxOrder

        private static decimal TotalOrder(AjaxOrder order, BusinessRules rules)
        {
            return(order.Subtotal + order.Tax + order.ShipHand + order.Adjustment);
        }    //TotalOrder