protected List <KeyValuePair <string, decimal> > GetDates4RemiteeOverDateRange(DataRequest request) { PreprocessedDataRequest handledRequest = HandleRequest(request); try { var res = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && handledRequest.SelectedRemittee.Equals(r.Element(Config.BeguenstigterField).Value) && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && ConvertStringToDecimal(r.Element(Config.BetragField).Value) <= -handledRequest.ExpencesHighestValue && ConvertStringToDecimal(r.Element(Config.BetragField).Value) >= -handledRequest.ExpencesLowestValue && ( r.Element(Config.BeguenstigterField).Value.Contains(String.IsNullOrEmpty(handledRequest.ToFind) ? r.Element(Config.BeguenstigterField).Value : handledRequest.ToFind) || r.Element(Config.VerwendZweckField).Value.Contains(String.IsNullOrEmpty(handledRequest.ToFind) ? r.Element(Config.VerwendZweckField).Value : handledRequest.ToFind) ) && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) orderby DateTime.Parse(r.Element(Config.WertDatumField).Value) select new KeyValuePair <string, decimal>(r.Element(Config.WertDatumField).Value, (-ConvertStringToDecimal(r.Element(Config.BetragField).Value))); return(res.ToList <KeyValuePair <string, decimal> >()); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetDates4RemiteeOverDateRange**", Config.AppName + ": Unable to get Data", MessageBoxButton.OK, MessageBoxImage.Error); } return(null); }
protected List <KeyValuePair <string, decimal> > GetIncomesOverDatesRange(DataRequest request) { PreprocessedDataRequest handledRequest = HandleRequest(request); try { var res = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && ConvertStringToDecimal(r.Element(Config.BetragField).Value) >= handledRequest.IncomsLowestValue && ConvertStringToDecimal(r.Element(Config.BetragField).Value) <= handledRequest.IncomsHighestValue && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) group r.Element(Config.BetragField).Value by r.Element(Config.WertDatumField).Value into g orderby DateTime.Parse(g.Key) select new KeyValuePair <string, decimal>(g.Key.Substring(5), g.Sum <string>( n => ConvertStringToDecimal(n) // g.TakeWhile<XElement>( //m => ConvertStringToDecimal(m.Value) <= incomsHighestValue && ConvertStringToDecimal(m.Value) >= incomsLowestValue).Sum<XElement>( //n => ConvertStringToDecimal(n.Value) ) ); //chartsModel.IncomesOverDatesRange = res.ToList<KeyValuePair<string, decimal>>(); return(res.ToList <KeyValuePair <string, decimal> >()); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetExpensesOverDateRange**", Config.AppName + ": Unable to get Data", MessageBoxButton.OK, MessageBoxImage.Error); } return(null); }
protected List <KeyValuePair <string, decimal> > GetExpensesAtDate(DataRequest request) { PreprocessedDataRequest handledRequest = HandleRequest(request); try { var res = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) == handledRequest.AtDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && ConvertStringToDecimal(r.Element(Config.BetragField).Value) < 0 && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) group r.Element(Config.BetragField).Value by r.Element(Config.BeguenstigterField).Value into g select new KeyValuePair <string, decimal>(g.Key /*.Substring(5)*/, g.TakeWhile <string>( m => ConvertStringToDecimal(m) <= -handledRequest.ExpencesHighestValue && ConvertStringToDecimal(m) >= -handledRequest.ExpencesLowestValue).Sum <string>( n => - ConvertStringToDecimal(n) ) ); return(res.ToList <KeyValuePair <string, decimal> >()); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetExpensesAtDate**", Config.AppName + ": Unable to get Data.", MessageBoxButton.OK, MessageBoxImage.Error); } return(null); }
protected string GetSummary(DataRequest request) { PreprocessedDataRequest handledRequest = HandleRequest(request); string result = String.Format("Total: {0:d} - {1:d} : ", handledRequest.BeginDate, handledRequest.FinishDate); try { var resIncomes = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && ConvertStringToDecimal(r.Element(Config.BetragField).Value) > 0 && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) group r.Elements(Config.BetragField).Single() by r.Parent.Element(Config.TransactionField).Name.LocalName into g select new KeyValuePair <string, decimal>(g.Key, g.Sum <XElement>( n => ConvertStringToDecimal(n.Value) )); var resExpences = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && ConvertStringToDecimal(r.Element(Config.BetragField).Value) < 0 && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) group r.Elements(Config.BetragField).Single() by r.Parent.Element(Config.TransactionField).Name.LocalName into g select new KeyValuePair <string, decimal>(g.Key, g.Sum <XElement>( n => ConvertStringToDecimal(n.Value) )); var resBalances = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) group r.Elements(Config.BetragField).Single() by r.Parent.Element(Config.TransactionField).Name.LocalName into g select new KeyValuePair <string, decimal>(g.Key, g.Sum <XElement>( n => ConvertStringToDecimal(n.Value) )); result += resIncomes.FirstOrDefault <KeyValuePair <string, decimal> >().Value + " " + resExpences.FirstOrDefault <KeyValuePair <string, decimal> >().Value + " = " + resBalances.FirstOrDefault <KeyValuePair <string, decimal> >().Value; } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetSummary**", Config.AppName + ": Unable to get Data", MessageBoxButton.OK, MessageBoxImage.Error); } return(result); }
protected List <KeyValuePair <string, decimal> > GetExpensesOverRemiteeInDateRange(DataRequest request) { PreprocessedDataRequest handledRequest = HandleRequest(request); try { var res = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && ConvertStringToDecimal(r.Element(Config.BetragField).Value) < 0 //&& ConvertStringToDecimal(r.Element(Config.BetragField).Value) <= -handledRequest.ExpencesHighestValue //&& ConvertStringToDecimal(r.Element(Config.BetragField).Value) >= -handledRequest.ExpencesLowestValue && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) group r.Element(Config.BetragField).Value by r.Element(Config.BeguenstigterField).Value into g orderby g.Key select new KeyValuePair <string, decimal>(g.Key, g.TakeWhile <string> ( m => ConvertStringToDecimal(m) <= -handledRequest.ExpencesHighestValue && ConvertStringToDecimal(m) >= -handledRequest.ExpencesLowestValue ).Sum <string>(n => - ConvertStringToDecimal(n)) ); // select new // { // Betrag = g.Key, // Gr = g.TakeWhile<string> // ( // m => ConvertStringToDecimal(m) <= -handledRequest.ExpencesHighestValue // && ConvertStringToDecimal(m) >= -handledRequest.ExpencesLowestValue // ).Sum<string>(n => -ConvertStringToDecimal(n)), // Values = from p in g select p // }; //List<KeyValuePair<string, decimal>> temp = new List<KeyValuePair<string, decimal>>(); //foreach (var group in res) //{ // //MessageBox.Show(group.Betrag); // temp.Add(new KeyValuePair<string, decimal>(group.Betrag, group.Gr)); // //foreach (string t in group.Values) // // MessageBox.Show(t); //} // return temp; return(res.ToList <KeyValuePair <string, decimal> >( )); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetExpencesOverRemiteeInDateRange**", Config.AppName + ": Unable to get Data", MessageBoxButton.OK, MessageBoxImage.Error); } return(null); }
protected List <KeyValuePair <DateTime, decimal> > GetBalanceOverDateRange(DataRequest request) { List <KeyValuePair <DateTime, decimal> > resultedList = new List <KeyValuePair <DateTime, decimal> >(); PreprocessedDataRequest handledRequest = HandleRequest(request); try { var res = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) && !handledRequest.Buchungstexts.Contains(r.Element(Config.BuchungsTextField).Value) // ?? group r.Element(Config.BetragField).Value by r.Element(Config.WertDatumField).Value into g orderby DateTime.Parse(g.Key) select new KeyValuePair <DateTime, decimal>(DateTime.Parse(g.Key).Date, g.Sum <string>( n => ConvertStringToDecimal(n) ) ); List <KeyValuePair <DateTime, decimal> > inputList = res.ToList <KeyValuePair <DateTime, decimal> >(); IEnumerator <KeyValuePair <DateTime, decimal> > inputEnumerator = inputList.GetEnumerator(); decimal akku = 0m; if (inputEnumerator.MoveNext()) { for (DateTime currDate = handledRequest.BeginDate /*.Date.AddDays(1)*/; !handledRequest.FinishDate.Date.Equals(currDate.Date.AddDays(-1)); currDate = currDate.Date.AddDays(1)) { if (inputEnumerator.Current.Key.Equals(currDate)) { akku += inputEnumerator.Current.Value; resultedList.Add(new KeyValuePair <DateTime, decimal>(inputEnumerator.Current.Key, akku)); inputEnumerator.MoveNext(); } else { resultedList.Add(new KeyValuePair <DateTime, decimal>(currDate, akku)); } } } return(resultedList); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetBalanceOverDateRange**", Config.AppName + ": Unable to get Data.", MessageBoxButton.OK, MessageBoxImage.Error); } return(null); }
private PreprocessedDataRequest HandleRequest(DataRequest request) { PreprocessedDataRequest result = new PreprocessedDataRequest(); List <string> buchungstexts = new List <string>(); List <string> accounts = new List <string>(); Decimal incomsLowestValue = Decimal.Zero; Decimal incomsHighestValue = Decimal.MaxValue; Decimal expLowestValue = Decimal.MaxValue; Decimal expHighestValue = Decimal.Zero; result.AtDate = request.AtDate; result.SelectedRemittee = request.SelectedRemittee; result.BeginDate = request.BeginDate; if (request.EndDate < request.BeginDate) { result.FinishDate = request.BeginDate; } else { result.FinishDate = request.EndDate; } if (request.Filters != null) { if (!decimal.TryParse(request.Filters.ExpenciesLessThan, out expLowestValue)) { expLowestValue = Decimal.MaxValue; } decimal.TryParse(request.Filters.ExpenciesMoreThan, out expHighestValue); if (!decimal.TryParse(request.Filters.IncomesLessThan, out incomsHighestValue)) { incomsHighestValue = Decimal.MaxValue; } decimal.TryParse(request.Filters.IncomesMoreThan, out incomsLowestValue); buchungstexts.AddRange(ConvertObsCollBoolTextCoupleToList(request.Filters.BuchungstextValues)); accounts.AddRange(ConvertObsCollBoolTextCoupleToList(request.Filters.Accounts)); result.ToFind = request.Filters.ToFind; } result.ExpencesLowestValue = expLowestValue; result.ExpencesHighestValue = expHighestValue; result.IncomsLowestValue = incomsLowestValue; result.IncomsHighestValue = incomsHighestValue; result.Buchungstexts = buchungstexts; result.Accounts = accounts; return(result); }
protected ObservableCollection <BoolTextCouple> GetBuchungstextOverDateRange(DataRequest request) { PreprocessedDataRequest handledRequest = HandleRequest(request); if (handledRequest.Buchungstexts.Count > 0) { try { var res = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) group r.Element(Config.WertDatumField).Value by r.Element(Config.BuchungsTextField).Value into g select new BoolTextCouple(!handledRequest.Buchungstexts.Contains(g.Key), g.Key); return(new ObservableCollection <BoolTextCouple>(res)); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetBuchungstextOverDateRange**", Config.AppName + ": Unable to get Data", MessageBoxButton.OK, MessageBoxImage.Error); } } else { try { var res = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) group r.Element(Config.WertDatumField).Value by r.Element(Config.BuchungsTextField).Value into g select new BoolTextCouple(true, g.Key); return(new ObservableCollection <BoolTextCouple>(res)); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetBuchungstextOverDateRange**", Config.AppName + ": Unable to get Data", MessageBoxButton.OK, MessageBoxImage.Error); } } return(null); }
protected List <string> GetTransactionsAccounts(DataRequest request) { PreprocessedDataRequest handledRequest = HandleRequest(request); try { var accs = from r in CsvToXmlSSKA.DataSource.DescendantsAndSelf(Config.TransactionField) where DateTime.Parse(r.Element(Config.WertDatumField).Value) >= handledRequest.BeginDate && DateTime.Parse(r.Element(Config.WertDatumField).Value) <= handledRequest.FinishDate && !handledRequest.Accounts.Contains(r.Attribute(Config.AuftragsKontoField).Value) select r.Attribute(Config.AuftragsKontoField).Value; return(accs.Distinct <string>().ToList <string>()); } catch (Exception e) { MessageBox.Show(e.Message + "**BuisenessLogicSSKA-GetTransactionsAccounts**", Config.AppName + ": Unable to get Accounts", MessageBoxButton.OK, MessageBoxImage.Error); } return(null); }