public bool GenererNySimulering(int antalSimuleringsmaaneder, int brugerIndex) { List <Transaktion> transaktioner = new List <Transaktion>(); try { EconomicUdtraek economicUdtraek = HentAbonnementsrelateretData(); List <Abonnement> abonnementer = ForbindData(economicUdtraek); transaktioner = GenererTransaktioner(abonnementer, antalSimuleringsmaaneder, brugerIndex); string tidsstempel = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); MySQL mySql = new MySQL(_economicAftalenummer); mySql.KlargoerTabeller(tidsstempel); mySql.IndsaetTransaktioner(transaktioner); mySql.IndsaetRelationeltData(economicUdtraek); mySql.OpretDatapunktslister(); } catch (Exception e) { Debug.WriteLine("Exception: " + e.Message); return(false); } return(true); }
/// <summary> /// Forbinder dataudtræk fra e-conomic. Returnerer en liste af abonnementer med linkede varelinjer og abonnenter. /// </summary> /// <returns></returns> private List <Abonnement> ForbindData(EconomicUdtraek economicDataudtraek) { // Konverter e-conomic dataobjekter til "egne" dataobjekter. Alt data lægges i opslag og køres kun igennem een gang ved konvertering. Dictionary <int, Abonnement> abonnementopslag = new Dictionary <int, Abonnement>(); Dictionary <int, Abonnent> abonnentopslag = new Dictionary <int, Abonnent>(); Dictionary <int, Afdeling> afdelingsopslag = new Dictionary <int, Afdeling>(); Dictionary <string, Debitor> debitoropslag = new Dictionary <string, Debitor>(); Dictionary <string, Vare> produktopslag = new Dictionary <string, Vare>(); Dictionary <int, Varelinje> varelinjeopslag = new Dictionary <int, Varelinje>(); foreach (var abonnementData in economicDataudtraek.Abonnementer) { abonnementopslag.Add(abonnementData.Id, new Abonnement(abonnementData.Id, abonnementData.Name, abonnementData.Number, abonnementData.CalendarYearBasis, abonnementData.SubscriptionInterval.ToString(), abonnementData.Collection.ToString())); } foreach (var afdelingsData in economicDataudtraek.Afdelinger) { afdelingsopslag.Add(afdelingsData.Number, new Afdeling(afdelingsData.Number, afdelingsData.Name)); } foreach (var debitorData in economicDataudtraek.Debitorer) { if (!debitoropslag.ContainsKey(debitorData.Number)) { debitoropslag.Add(debitorData.Number, new Debitor(debitorData.Address, debitorData.Balance, debitorData.CINumber, debitorData.City, debitorData.Country, debitorData.CreditMaximum, debitorData.Ean, debitorData.Email, debitorData.Name, debitorData.Number, debitorData.PostalCode, debitorData.TelephoneAndFaxNumber)); } } foreach (var abonnentData in economicDataudtraek.Abonnenter) { Abonnent abonnent = new Abonnent(abonnentData.SubscriberId, debitoropslag[abonnentData.DebtorHandle.Number], abonnentData.DiscountAsPercent, abonnentData.DiscountExpiryDate, abonnentData.EndDate, abonnentData.ExpiryDate, abonnentData.QuantityFactor, abonnentData.PriceIndex, abonnentData.RegisteredDate, abonnentData.SpecialPrice, abonnentData.StartDate); abonnentopslag.Add(abonnentData.SubscriberId, abonnent); abonnementopslag[abonnentData.SubscriptionHandle.Id].Abonnenter.Add(abonnent); } foreach (var produktData in economicDataudtraek.Produkter) { // Evt. afdeling Afdeling afdeling = null; if (produktData.DepartmentHandle != null) { afdeling = afdelingsopslag[produktData.DepartmentHandle.Number]; } if (!produktopslag.ContainsKey(produktData.Handle.Number)) { produktopslag.Add(produktData.Handle.Number, new Vare(produktData.CostPrice, produktData.Name, produktData.Number, produktData.SalesPrice, produktData.Volume, afdeling)); } } foreach (var varelinjeData in economicDataudtraek.Varelinjer) { //Evt. afdeling Afdeling afdeling = null; if (varelinjeData.DepartmentHandle != null) { afdeling = afdelingsopslag[varelinjeData.DepartmentHandle.Number]; } if (varelinjeData.ProductHandle != null) { Varelinje varelinje = new Varelinje(varelinjeData.Id, varelinjeData.Number, (decimal)varelinjeData.Quantity, varelinjeData.SpecialPrice, produktopslag[varelinjeData.ProductHandle.Number], afdeling); abonnementopslag[varelinjeData.Id].Varelinjer.Add(varelinje); if (!varelinjeopslag.ContainsKey(varelinjeData.Id)) { varelinjeopslag.Add(varelinjeData.Id, varelinje); } } } return(abonnementopslag.Values.ToList()); }