Esempio n. 1
0
        public static Summary GetSummary()
        {
            MoneyTrakrEntities db = new MoneyTrakrEntities();
            Summary summary = new Summary();
            summary.CurrentBalance = 0;
            summary.ProjectionMonths = 1;
            summary.Transactions = new List<Transaction>();

            foreach (var transaction in db.Transactions.OrderBy(x => x.StartTransaction).OrderBy(y=>y.CreatedDate))
            {
                summary.CurrentBalance = summary.CurrentBalance + transaction.Amount;
                summary.Transactions.Add(transaction);
            }

            summary.RecurringItems = RecurringItem.GetAllRecurringItems(DateTime.Now.AddDays(1), summary.ProjectionMonths);

            foreach (RecurringItem recurs in summary.RecurringItems)
            {
                summary.ProjectionBalance = summary.ProjectionBalance + recurs.Amount;

            }
            summary.ProjectionBalance = summary.ProjectionBalance + summary.CurrentBalance;

            return summary;
        }
Esempio n. 2
0
        public static List<RecurringItem> GetAllRecurringItems(DateTime StartDate, int futureMonths)
        {
            List<RecurringItem> items = new List<RecurringItem>();
            MoneyTrakrEntities db = new MoneyTrakrEntities();
            foreach (Recurring recur in db.Recurrings.ToList())
            {
                int days = 0;
                int months = 0;
                if (recur.RecurBiWeekly)
                {
                    days = 14;
                }
                else if (recur.RecurWeekly)
                {
                    days = 7;
                }

                int daysTally = 0;

                foreach (DateTime day in EachDay(recur.StartDate, DateTime.Now.AddMonths(futureMonths)))
                {
                    if (day.Date >= StartDate.Date)
                    {
                        if (days != 0)
                        {
                            if (recur.StartDate.AddDays(daysTally).Date == day.Date)
                            {
                                items.Add(new RecurringItem()
                                {
                                    Amount = recur.Amount,
                                    Description = recur.Description,
                                    StartDate = recur.StartDate.AddDays(daysTally)
                                });

                            }
                            daysTally = daysTally + days;
                        }
                        else
                        {
                            if (recur.StartDate.AddMonths(months).Date == day.Date)
                            {

                                    items.Add(new RecurringItem()
                                    {
                                        Amount = recur.Amount,
                                        Description = recur.Description,
                                        StartDate = recur.StartDate.AddMonths(months)
                                    });

                                months++;
                            }
                        }
                    }

                }

            }

            return items;
        }
Esempio n. 3
0
        public static List<TransactionItem> GetAllTransactionsItems()
        {
            MoneyTrakrEntities db = new MoneyTrakrEntities();
            List<TransactionItem> AllLineItems = new List<TransactionItem>();

            DateTime startDate = db.Transactions.OrderBy(x => x.CreatedDate).FirstOrDefault().CreatedDate;

            foreach (Transaction trans in db.Transactions.ToList())
            {
                AllLineItems.Add(new TransactionItem(trans));
            }

            return TransactionItem.CalculateTotals(AllLineItems.Where(y => y.CreatedDate >= startDate).OrderBy(x => x.CreatedDate).ToList());
        }
Esempio n. 4
0
        static void Main(string[] args)
        {
            int sleep = 10000;
            while (true)
            {

                using (MoneyTrakrEntities db = new MoneyTrakrEntities())
                {

                    List<int> ids = (from a in db.Users
                               orderby a.AccountID
                               select a.AccountID).Distinct().ToList();
                    sleep = (10000 / ids.Count());
                    foreach (var accountId in ids)
                    {
                        List<Recurring> allRecurring = db.Recurrings.Where(r => r.AccountID == accountId).ToList();
                        if (allRecurring != null)
                        {
                            int daysbetweenrecuring = 14;

                            foreach (var r in allRecurring)
                            {
                                if (r.RecurWeekly)
                                    daysbetweenrecuring = 7;

                                Transaction startTransaction = db.Transactions.Where(t => t.StartTransaction).FirstOrDefault();

                                DateTime maxDate = DateTime.Now;
                                DateTime now = r.StartDate.Date;
                                while (now <= maxDate)
                                {
                                    if (r.RecurMontly)
                                    {
                                        DateTime recurDate = DateTime.Parse(String.Format("{0}/{1}/{2}", now.Month, r.StartDate.Day, now.Year));
                                        if (now.Date == recurDate)
                                        {
                                            List<Transaction> transactions = db.Transactions.Where(x => x.CreatedDate == now && x.Description == r.Description).ToList();
                                            if (transactions == null || transactions.Count == 0)
                                            {
                                                Transaction tran = new Transaction();
                                                tran.Amount = r.Amount;
                                                tran.CreatedDate = recurDate;
                                                tran.Description = r.Description;
                                                tran.AccountID = accountId;
                                                db.Transactions.Add(tran);

                                                db.SaveChanges();
                                            }
                                        }
                                        now = now.AddMonths(1);
                                    }
                                    else
                                    {

                                            List<Transaction> transactions = db.Transactions.Where(x => x.CreatedDate == now && x.Description == r.Description).ToList();
                                            if (transactions == null || transactions.Count == 0)
                                            {
                                                Transaction tran = new Transaction();
                                                tran.Amount = r.Amount;
                                                tran.CreatedDate = now.Date;
                                                tran.Description = r.Description;
                                                tran.AccountID = accountId;
                                                db.Transactions.Add(tran);

                                                db.SaveChanges();
                                            }

                                        now = now.AddDays(daysbetweenrecuring);
                                    }

                                }

                            }
                        }
                    }

                    System.Threading.Thread.Sleep(sleep);

                }

            }
        }
Esempio n. 5
0
        public static List<DailySummary> GetDailySummary(int daysInFuture)
        {
            MoneyTrakrEntities db = new MoneyTrakrEntities();

            DateTime startDate = db.Transactions.Where(t => t.StartTransaction).FirstOrDefault().CreatedDate.Date;
            var recurrenceDates = new Dictionary<DateTime,List<TransactionItem>>();
            DateTime today = DateTime.Now.Date;

            DateTime maxDate = DateTime.Now.AddDays(daysInFuture);
            foreach (var recur in db.Recurrings)
            {
                DateTime now = today;
                int daysBetweenPayment = 0;

                if (recur.RecurBiWeekly)
                {
                    daysBetweenPayment = 14;
                }
                else if (recur.RecurWeekly)
                {
                    daysBetweenPayment = 7;
                }

                if (recur.RecurMontly)
                {

                    while (now <= maxDate)
                    {
                        DateTime recurringDate = DateTime.Parse(String.Format("{0}/{1}/{2}", now.Month, recur.StartDate.Day, now.Year));
                        if (recurringDate.Date > DateTime.Now.Date){
                            if (!recurrenceDates.ContainsKey(recurringDate))
                            {
                                recurrenceDates.Add(recurringDate, new List<TransactionItem>());
                            }

                        recurrenceDates[recurringDate].Add(new TransactionItem(recur) { CreatedDate = recurringDate });
                        }
                       // recurringDate = recurringDate.AddMonths(1);
                        now = now.AddMonths(1);
                    }
                }
                else
                {
                    while (now <= maxDate)
                    {

                        if (now.Date > DateTime.Now.Date)
                        {
                            if (!recurrenceDates.ContainsKey(now))
                            {
                                recurrenceDates.Add(now, new List<TransactionItem>());
                            }

                            recurrenceDates[now].Add(new TransactionItem(recur) { CreatedDate = now });
                        }

                        now = now.AddDays(daysBetweenPayment);
                    }
                }
            }

            foreach(var t in db.Transactions){

                if(!recurrenceDates.ContainsKey(t.CreatedDate.Date)){
                    recurrenceDates.Add(t.CreatedDate.Date,new List<TransactionItem>());
                }

                recurrenceDates[t.CreatedDate.Date].Add(new TransactionItem(t));
            }

            List<DailySummary> dailySummaries = new List<DailySummary>();
            for (int i = 0; i < daysInFuture; i++)
            {
                DailySummary ds = new DailySummary();
                var currentDay = startDate.AddDays(i);
                ds.Date = currentDay;
                if (recurrenceDates.ContainsKey(currentDay))
                {
                    ds.TransactionItems.AddRange(recurrenceDates[currentDay].OrderByDescending(x => x.IsStartAmount));
                }
                decimal todaysMoney = ds.TransactionItems.Sum(t=>t.Amount);
                if(i>0){
                    ds.EndingDayBalance = todaysMoney + dailySummaries[i-1].EndingDayBalance;
                }else{
                    ds.EndingDayBalance = todaysMoney;
                }
                dailySummaries.Add(ds);
            }

            return dailySummaries.OrderBy(x => x.Date).ToList();
        }
Esempio n. 6
0
        public static List<ProjectionData> GetGroupedProjectionData(int futureMonths)
        {
            MoneyTrakrEntities db = new MoneyTrakrEntities();
            List<TransactionItem> AllLineItems = new List<TransactionItem>();

            DateTime startDate = db.Transactions.OrderBy(x => x.CreatedDate).FirstOrDefault().CreatedDate;

            foreach (Transaction trans in db.Transactions.ToList())
            {
                AllLineItems.Add(new TransactionItem(trans));
            }
            foreach (RecurringItem recurs in RecurringItem.GetAllRecurringItems(DateTime.Now.AddDays(1).Date, futureMonths))
            {
               AllLineItems.Add(new TransactionItem(recurs));
            }
            List<TransactionItem> sortedItems = TransactionItem.CalculateTotals(AllLineItems.Where(y => y.CreatedDate >= startDate).OrderBy(x => x.CreatedDate).ToList());
            decimal cumulativeBalance = 0;
            List<DailySummary> summaries = new List<DailySummary>();
            for (int i = 0; i < sortedItems.Count; i++)
            {
                DailySummary ds = new DailySummary();
                ds.Date = sortedItems[i].CreatedDate;
                cumulativeBalance = cumulativeBalance + sortedItems[i].Amount;
                if (i >0)
                    ds.EndingDayBalance = sortedItems[i].Amount;
                else
                    ds.EndingDayBalance = sortedItems[i].Amount + cumulativeBalance;

            }

            List<ProjectionData> grouped = (from p in sortedItems
                          group p by new { month = p.CreatedDate.Month, year = p.CreatedDate.Year } into d
                          select new ProjectionData { Month = string.Format("{0}/{1}", d.Key.month, d.Key.year), Amount = d.Sum(s => s.RunningTotal) }).ToList();

            return grouped;
        }
Esempio n. 7
0
        public static List<TransactionItem> GetProjectionData(int futureDays)
        {
            MoneyTrakrEntities db = new MoneyTrakrEntities();
            List<TransactionItem> AllLineItems = new List<TransactionItem>();

            DateTime startDate = db.Transactions.OrderBy(x => x.CreatedDate).FirstOrDefault().CreatedDate;

            foreach (Transaction trans in db.Transactions.ToList())
            {
                AllLineItems.Add(new TransactionItem(trans));
            }
            foreach (RecurringItem recurs in RecurringItem.GetAllRecurringItems(startDate, futureDays))
            {
               // AllLineItems.Add(new TransactionItem(recurs));
            }
            List<TransactionItem> sortedItems = TransactionItem.CalculateTotals(AllLineItems.Where(y => y.CreatedDate >= startDate).OrderBy(x => x.CreatedDate).ToList());

            return sortedItems;
        }