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)); }
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)); }
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)); }
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);