/// <summary> /// Create the Chargebands and go to CreateChargeband.xaml /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCreateCB_Click(object sender, RoutedEventArgs e) { // Should Default ChargeBands be created? MessageBoxResult result = MessageBox.Show("Should default Charge Bands be created?", "Deafault ChargeBands", MessageBoxButton.YesNoCancel, MessageBoxImage.Question); if (result != MessageBoxResult.Cancel) { ObservableCollection <Config.ChargeBand> cbListe = Config.ChargeBandList.GetChargeBands(countryListe, (result == MessageBoxResult.Yes), (Config.Country)comboCountry.SelectedItem); if (cbListe != null) { CreateCB.CreateChargeband createChargeband = new CreateCB.CreateChargeband(cbListe); this.NavigationService.Navigate(createChargeband); } else { MessageBox.Show("Please insert as first the Prices", "No Prices configured", MessageBoxButton.OK, MessageBoxImage.Exclamation); } } }
private void LoadInf(string path) { try { string[] tariffInfo = new string[4]; ObservableCollection <ChargeBand> cbList = null; FileStream fs = new FileStream(path, FileMode.Open); StreamReader sr = new StreamReader(fs); if (sr.ReadLine() == "[Carrier]") { String line = sr.ReadLine(); // Read the Header while (line != "[CallCategories]") { switch (line.Split('=')[0]) { case "Name": tariffInfo[0] = line.Split('=')[1]; break; case "Ident": tariffInfo[1] = line.Split('=')[1]; break; case "DefaultChargeBand": tariffInfo[2] = line.Split('=')[1]; break; case "MeterRate": tariffInfo[3] = line.Split('=')[1]; break; } line = sr.ReadLine(); } while (line != "[ChargeBands]") { line = sr.ReadLine(); } line = sr.ReadLine(); // Read ChargeBand Name & Description cbList = new ObservableCollection <ChargeBand>(); while (line != "[ChargeRates]") { if (!string.IsNullOrWhiteSpace(line)) { cbList.Add(new ChargeBand { CBShortName = line.Split('=')[0], CCShortName = line.Split('=')[0], CBName = line.Split('=')[1], CCName = line.Split('=')[1], Countrys = new System.Collections.Generic.List <Country>() }); } line = sr.ReadLine(); } line = sr.ReadLine(); // Read ChargeBand Prices while (line != "[DailyRates]") { if (!string.IsNullOrWhiteSpace(line)) { string[] rate = line.Split(','); foreach (ChargeBand cb in cbList) { if (cb.CBShortName == rate[0]) { float callPrice = 0; float minPrice = 0; float minimumPrice = 0; int pricePer = 0; int priceFor = 0; if (float.TryParse(rate[2], out callPrice) && callPrice != 0) { callPrice = callPrice / 100000; } if (float.TryParse(rate[5], out minPrice) && minPrice != 0) { minPrice = minPrice / 100000; } if (float.TryParse(rate[6], out minimumPrice) && minimumPrice != 0) { minimumPrice = minimumPrice / 100000; } if (int.TryParse(rate[3], out pricePer) && pricePer != 0) { pricePer = pricePer / 1000; } if (int.TryParse(rate[4], out priceFor) && priceFor != 0) { priceFor = priceFor / 1000; } cb.PriceCall = callPrice; cb.PriceMin = minPrice; cb.MinimumPrice = minimumPrice; cb.PricePer = pricePer; cb.PriceFor = priceFor; } } } line = sr.ReadLine(); } // Daily Rates überspringen while (line != "[Destinations]") { line = sr.ReadLine(); } line = sr.ReadLine(); // Destinations auslesen bis zum Ende des Files while (!sr.EndOfStream) { if (!string.IsNullOrWhiteSpace(line)) { string[] split = line.Split(','); string chargeID = split[split.Length - 1]; foreach (ChargeBand item in cbList) { if (item.CBShortName == chargeID) { item.Countrys.Add(new Country { Prefix = line.Split('=')[0], Description = line.Split('"')[1] }); } } } line = sr.ReadLine(); } } else { NoTariff(); } sr.Dispose(); fs.Dispose(); if (cbList != null) { CreateCB.CreateChargeband createChargeband = new CreateCB.CreateChargeband(cbList, tariffInfo); this.NavigationService.Navigate(createChargeband); } } catch (Exception e) { MessageBox.Show(e.Message); } }