Exemplo n.º 1
0
        public OrderChargeModel Calculate(Order order)
        {
            var orderItems = (from c in _orderItem where c.OrderId == order.OrderId select c).ToList();
            var cookerId = orderItems.First().CookerId;
            var taxPercent = (from c in _cookers where c.CookerId == cookerId select c.TaxPercent).FirstOrDefault() ?? 1;
            var paymentMethodValue = (from c in _fakePaymentMethods where c.PaymentMethodId == order.PaymentMethodId select c.PaymentMethodValue).FirstOrDefault();
            var orderTypeValue = (from c in _fakeOrderTypes where c.OrderTypeId == order.OrderTypeId select c.OrderTypeValue).FirstOrDefault();
            var planTitle = (from c in _fakePlans where c.PlanId == order.PlanId select c.Description).FirstOrDefault();

            #region PickUpOrderCharge

            if (order.OrderTypeId == (int)OrderType.Values.PickUp)
            {
               _orderCharge = PickUpCharge(order, taxPercent);
            }

            #endregion

            #region DeliveryOrderCharge

            var cookerDelieryZonesId = (from c in _cookerDeliveryZones where c.CookerId == cookerId select c.DeliveryId).ToList();

            decimal deliveryFees = 0;
            foreach (var deliveryZoneId in cookerDelieryZonesId)
            {
                //Custom KML Function to see if the item is in the zone
                //Moq for now
                var deliveryzone = _deliveryZones.FirstOrDefault(c => c.DeliveryId == deliveryZoneId);

                //KML integration to see if deliveryaddress is Zone
                if (_deliveryAddress.AddressTypeId == (int) AddressToDeliveryZone.Values.AddressInZone)
                {
                    if (deliveryzone != null)
                    {
                        deliveryFees = deliveryzone.DeliveryFees;
                    }
                }
            }

            _orderCharge = DeliveryCharge(order, deliveryFees, taxPercent);

            #endregion

            _orderCharge.CookerId = cookerId;
            _orderCharge.PaymentMethodValue = paymentMethodValue;
            _orderCharge.OrderTypeValue = orderTypeValue;
            _orderCharge.SalesTaxes = CalculateSalesTax(_orderCharge.TotalCharges, taxPercent);
            _orderCharge.PlanTitle = planTitle;
            return _orderCharge;
        }
        public ActionResult EditOrderCharge(OrderChargeModel model)
        {
            var result = _orderChargeService.UpdateService.UpdateColumn(model);

            return(BoolResult(result));
        }
        public ActionResult AddOrderCharge(OrderChargeModel model)
        {
            var result = _orderChargeService.AddService.AddColumn(model);

            return(BoolResult(result));
        }