public int GetStartingTotalCash() { List <TotalCash> totalCashes = new List <TotalCash>(); List <TotalCash> orderedTotalCashes = TotalCashes.OrderBy(t => t.Date).ToList(); for (int i = 0; i < orderedTotalCashes.Count; i++) { if ((orderedTotalCashes[i].Date <= EndDate && orderedTotalCashes[i].Date >= StartDate) || (orderedTotalCashes[i].Date < StartDate && i + 1 == orderedTotalCashes.Count) || (orderedTotalCashes[i].Date < StartDate && i + 1 < orderedTotalCashes.Count && orderedTotalCashes[i + 1].Date > StartDate)) { totalCashes.Add(orderedTotalCashes[i]); } } if (totalCashes.Count == 0) { return(0); } TotalCash firstTotalCash = totalCashes.First(); if (firstTotalCash.Date >= StartDate) { return(firstTotalCash.Amount); } // get transactions until startdate List <Transaction> transactions = AllTransactions.Where(t => t.CreateDate <StartDate && t.CreateDate> firstTotalCash.Date).ToList(); return(firstTotalCash.Amount - transactions.Select(t => t.Amount).Sum()); }
public int GetCurrentTotalCash() { if (TotalCashes.Count == 0) { return(0); } TotalCash lastTotalCash = TotalCashes.Last(); List <Transaction> transactions = AllTransactions.Where(t => t.CreateDate > lastTotalCash.Date).ToList(); return(lastTotalCash.Amount - transactions.Select(t => t.Amount).Sum()); }
public Chart GetBalanceReport() { List <TotalCash> totalCashes = new List <TotalCash>(); List <TotalCash> orderedTotalCashes = TotalCashes.OrderBy(t => t.Date).ToList(); for (int i = 0; i < orderedTotalCashes.Count; i++) { if ((orderedTotalCashes[i].Date <= EndDate && orderedTotalCashes[i].Date >= StartDate) || (orderedTotalCashes[i].Date < StartDate && i + 1 == orderedTotalCashes.Count) || (orderedTotalCashes[i].Date < StartDate && i + 1 < orderedTotalCashes.Count && orderedTotalCashes[i + 1].Date > StartDate)) { totalCashes.Add(orderedTotalCashes[i]); } } if (totalCashes.Count == 0) { return(null); } totalCashes = totalCashes.OrderBy(t => t.Date).ToList(); // TotalCashes //List<DateTime> xValues = totalCashes.Where(t => t.Date <= EndDate && t.Date >= StartDate).Select(t => t.Date).ToList(); List <DateTime> xValues = new List <DateTime>(); List <int> yValues = new List <int>(); //xValues.Insert(0, StartDate); //yValues.Insert(0, GetStartingTotalCash()); for (int i = 0; i < totalCashes.Count; i++) { List <Transaction> innerTransactions = AllTransactions.Where(t => t.CreateDate > totalCashes[i].Date && t.CreateDate <= (i + 1 < totalCashes.Count ? totalCashes[i + 1].Date : EndDate)).ToList(); int total = totalCashes[i].Amount; if (innerTransactions.Count == 0) { xValues.Add(totalCashes[i].Date); yValues.Add(total); } foreach (var trans in innerTransactions.GroupBy(t => t.CreateDate)) { DateTime date = trans.Key; foreach (Transaction tr in trans.ToList()) { total -= tr.Amount; } xValues.Add(date); yValues.Add(total); } } xValues.Add(EndDate); yValues.Add(GetCurrentTotalCash()); //List<int> yValues = totalCashes.Where(t => t.Date <= EndDate && t.Date >= StartDate).Select(t => t.Amount).ToList(); Chart c = new Chart(width: 600, height: 400, theme: ChartTheme.Green); c.AddSeries(chartType: "line", xValue: xValues, yValues: yValues); c.AddTitle("Aktuális pénzmennyiség alakulása"); return(c); }