Beispiel #1
0
        private async void ComputeTotal()
        {
            double localDuration, nationalDuration;

            if (ParseTextBox(txtLocalDuration, out localDuration) &&
                ParseTextBox(txtNationalDuration, out nationalDuration))
            {
                PhoneConsumption consumption = new PhoneConsumption();

                double localPerc = tbLocalDuration.Value / 100.0;
                double natPerc   = tbNationalDuration.Value / 100.0;

                consumption.SetConsumption("NAH", localDuration * localPerc,
                                           localDuration * (1 - localPerc));
                consumption.SetConsumption("FERN", nationalDuration * natPerc,
                                           nationalDuration * (1 - natPerc));

                string tariffKey = ((Tariff)cmbTariff.SelectedValue).Id;

                txtTotal.Text = (await tariffCalculator.TotalCostsAsync(tariffKey, consumption)).ToString("C2");
            }
            else
            {
                ResetTotal();
            }
        }
        public ActionResult CalculateAsync(TariffCalculatorModel model)
        {
            if (!tariffCalculator.GetAllTariffs().Any(t => t.Id == model.SelectedTariff))
            {
                ModelState.AddModelError(nameof(model.SelectedTariff), "invalid tarif");
            }
            if (ModelState.IsValid)
            {
                var consumption = new PhoneConsumption();

                consumption.SetConsumption(
                    "NAH",
                    model.LocalDuration * model.LocalPeakPercent / 100.0,
                    model.LocalDuration * (100 - model.LocalPeakPercent) / 100.0);

                consumption.SetConsumption(
                    "FERN",
                    model.NationalDuration * model.NationalPeakPercent / 100.0,
                    model.NationalDuration * (100 - model.NationalPeakPercent) / 100.0);


                var totalCost = tariffCalculator.TotalCosts(model.SelectedTariff, consumption);

                return(Json(totalCost.ToString("C2")));
            }

            return(new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest));
        }
        public ActionResult Index(TariffCalculatorModel model)
        {
            if (!tariffCalculator.GetAllTariffs().Any(t => t.Id == model.SelectedTariff))
            {
                ModelState.AddModelError(nameof(model.SelectedTariff), "invalid tarif");
            }
            if (ModelState.IsValid)
            {
                var consumption = new PhoneConsumption();

                consumption.SetConsumption(
                    "NAH",
                    model.LocalDuration * model.LocalPeakPercent / 100.0,
                    model.LocalDuration * (100 - model.LocalPeakPercent) / 100.0);

                consumption.SetConsumption(
                    "FERN",
                    model.NationalDuration * model.NationalPeakPercent / 100.0,
                    model.NationalDuration * (100 - model.NationalPeakPercent) / 100.0);


                model.TotalCost = tariffCalculator.TotalCosts(model.SelectedTariff, consumption);
            }

            model.TariffList = tariffCalculator.GetAllTariffs()
                               .Select(tariff => new SelectListItem()
            {
                Value    = tariff.Id,
                Text     = tariff.Name,
                Selected = false
            });

            return(View(model));
        }
            public double TotalCosts(PhoneConsumption consumption)
            {
                double c = 0;

                foreach (ZoneConsumption zc in consumption.ZoneConsumptions)
                {
                    double peakRate    = rates[zc.ZoneId].PeakRate;
                    double offPeakRate = rates[zc.ZoneId].OffPeakRate;
                    c += zc.PeakDuration * peakRate +
                         zc.OffPeakDuration * offPeakRate;
                }
                return(c);
            }
        public override double TotalCosts(string tariffKey, PhoneConsumption consumption)
        {
            var serice       = new PhoneTariffService.TariffCalcualtorService();
            var wsConsumtion = new PhoneTariffService.PhoneConsumption
            {
                ZoneConsumptions = consumption.ZoneConsumptions.Select(x => new PhoneTariffService.ZoneConsumption
                {
                    OffPeakDuration = x.OffPeakDuration,
                    PeakDuration    = x.PeakDuration,
                    ZoneId          = x.ZoneId
                }).ToArray()
            };

            return(serice.TotalCosts(tariffKey, wsConsumtion));
        }
Beispiel #6
0
        public ActionResult Index(TariffCalculatorModel model)
        {
            PhoneConsumption consumption = new PhoneConsumption();

            consumption.SetConsumption("NAH",
                                       model.LocalDuration * model.LocalPeakPercent / 100.0,
                                       model.LocalDuration * (100 - model.LocalPeakPercent) / 100.0);
            consumption.SetConsumption("FERN",
                                       model.NationalDuration * model.NationalPeakPercent / 100.0,
                                       model.NationalDuration * (100 - model.NationalPeakPercent) / 100.0);

            // Compute the costs for the specified phone profile
            model.TotalCost  = tariffCalculator.TotalCosts(model.SelectedTariff, consumption);
            model.TariffList = tariffCalculator.GetAllTariffs().Select(x =>
                                                                       new SelectListItem
            {
                Text  = x.Name,
                Value = x.Id
            });
            return(View(model));
        }
Beispiel #7
0
        public override double TotalCosts(string tariffKey, PhoneConsumption consumption)
        {
            Tariff tariff = DalFactory.CreateTariffDao(database).FindById(tariffKey);

            if (tariff == null)
            {
                throw new ArgumentException(string.Format("Invalid tariff {0}.", tariffKey));
            }

            double   costs   = tariff.BasicFee;
            IRateDao rateDao = DalFactory.CreateRateDao(database);

            foreach (ZoneConsumption zc in consumption.ZoneConsumptions)
            {
                Rate rate = rateDao.FindById(tariffKey, zc.ZoneId);
                if (rate == null)
                {
                    throw new ArgumentException(string.Format("Invalid zone {0}.", zc.ZoneId));
                }
                costs += zc.PeakDuration * rate.PeakRate + zc.OffPeakDuration * rate.OffPeakRate;
            }

            return(costs);
        }
 public override double TotalCosts(string tariffKey, PhoneConsumption cons)
 {
     return(tariffRates[tariffKey].TotalCosts(cons));
 }
 public double TotalCosts(string tariffKey, PhoneConsumption cons)
 {
     return(tariffList[tariffKey].TotalCosts(cons));
 }
Beispiel #10
0
 public double TotalCosts(string tariffKey, PhoneConsumption consumption)
 {
     return(TariffCalculator.TotalCosts(tariffKey, consumption));
 }
 public Task <double> TotalCostsAsync(string tariffKey, PhoneConsumption consumption)
 {
     return(Task.Run(() => TotalCosts(tariffKey, consumption)));
 }
 public abstract double TotalCosts(string tariffKey, PhoneConsumption consumption);