示例#1
0
        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());
        }
示例#2
0
        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());
        }
示例#3
0
        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);
        }