コード例 #1
0
        /// <summary>
        /// Returns a populated collections object
        /// </summary>
        /// <param name="collectionsId">Id of the collection object</param>
        public Collections(string collectionsId)
        {
            Collections   col     = new Collections();
            List <Budget> budgets = new List <Budget>();

            using (FinPlannerContext _context = new FinPlannerContext())
            {
                col     = _context.Collections.Find(collectionsId);
                budgets = _context.Budget.Where(x => x.CollectionId == collectionsId).ToList();
            }
            if (budgets.Count() == 0)
            {
                Budget budget = new Budget();
                budgets = budget.NewBudget(col);
            }
            BudgetTransaction transaction = new BudgetTransaction();

            foreach (Budget item in budgets)
            {
                item.Collection         = null;
                item.BudgetTransactions = transaction.GetBudgetTransactions(item.BudgetId);
            }
            CollectionsId = collectionsId;
            Name          = col.Name;
            Accounts      = col.Accounts;
            TotalAmount   = col.TotalAmount;
            DurationType  = col.DurationType;
            DateCreated   = col.DateCreated;
            UserCreated   = col.UserCreated;
            Budgets       = budgets;
            ResetDay      = col.ResetDay;
        }
コード例 #2
0
        private Budget getSingle(string collectionsId)
        {
            Collections       collections = new Collections(collectionsId);
            Budget            budget      = collections.Budgets.FirstOrDefault();
            BudgetTransaction budget1     = new BudgetTransaction();

            budget.BudgetTransactions = budget1.GetBudgetTransactions(budget.BudgetId);
            return(budget);
        }
コード例 #3
0
        private Budget FindBudget(string collectionId)
        {
            Collections collection = new Collections(collectionId);
            Budget      budget     = new Budget();
            //Need to construct the date
            bool     check       = false;
            DateTime currentDate = DateTime.Now;

            switch (collection.DurationType)
            {
            case "Day":
                check = true;
                using (FinPlannerContext _context = new FinPlannerContext())
                {
                    budget = _context.Budget.Where(x => x.CollectionId == collectionId).OrderByDescending(x => x.EndDate).FirstOrDefault();
                }
                break;

            case "Week":
                using (FinPlannerContext _context = new FinPlannerContext())
                {
                    budget = _context.Budget.Where(x => x.CollectionId == collectionId && x.StartDate <currentDate && x.EndDate> currentDate).FirstOrDefault();
                }
                break;

            case "Month":
                DateTime resetDate = new DateTime(currentDate.Year, currentDate.Month, collection.ResetDay);
                if (currentDate > resetDate)
                {
                    currentDate = resetDate;
                }
                else
                {
                    currentDate = resetDate.AddMonths(-1);
                }
                using (FinPlannerContext _context = new FinPlannerContext())
                {
                    budget = _context
                             .Budget
                             .Where(x => x.CollectionId == collectionId && x.StartDate == currentDate)
                             .Where(x => x.Simulation == false)
                             .FirstOrDefault();
                }
                break;
            }
            BudgetTransaction budget1 = new BudgetTransaction();

            budget.BudgetTransactions = budget1.GetBudgetTransactions(budget.BudgetId);
            return(budget);
        }
コード例 #4
0
        public void Duplicate(Collections collections)
        {
            Budget                   budget                = GetBudget(collections.CollectionsId);
            BudgetTransaction        budgetTransaction     = new BudgetTransaction();
            List <BudgetTransaction> budgetTransactions    = new List <BudgetTransaction>();
            List <BudgetTransaction> newBudgetTransactions = new List <BudgetTransaction>();

            budgetTransactions = budgetTransaction.GetBudgetTransactions(budget.BudgetId);
            DateTime endDate   = DateTime.MinValue;
            DateTime StartDate = DateTime.Now;

            switch (collections.DurationType)
            {
            case "Day":
                endDate = DateTime.Now.AddDays(1);
                break;

            case "Week":
                int dayofweek  = (int)StartDate.DayOfWeek;
                int difference = Math.Abs(dayofweek - collections.ResetDay);
                StartDate = StartDate.AddDays(-difference);
                endDate   = StartDate.AddDays(7);
                break;

            case "Month":
                int day = StartDate.Day;
                if (day == 0)
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month, 1).AddMonths(1);
                    StartDate = StartDate.AddDays(-1);
                }
                else if (day >= collections.ResetDay)
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month, collections.ResetDay);
                }
                else
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month - 1, collections.ResetDay);
                }
                if (collections.ResetDay == 28)
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month, 1).AddMonths(1);
                    StartDate = StartDate.AddDays(-1);
                }
                endDate = StartDate.AddMonths(1);
                break;
            }
            Budget newBudget = new Budget
            {
                BudgetId     = Guid.NewGuid().ToString(),
                CollectionId = collections.CollectionsId,
                StartDate    = StartDate,
                EndDate      = endDate
            };

            foreach (BudgetTransaction item in budgetTransactions)
            {
                newBudgetTransactions.Add(new BudgetTransaction
                {
                    Amount              = item.Amount,
                    UserId              = item.UserId,
                    BudgetId            = newBudget.BudgetId,
                    BudgetTransactionId = Guid.NewGuid().ToString(),
                    CFClassificationId  = item.CFClassificationId,
                    CFTypeId            = item.CFTypeId,
                    Name  = item.Name,
                    Notes = item.Notes
                });
            }
            using (FinPlannerContext _context = new FinPlannerContext())
            {
                _context.Budget.Add(newBudget);
                _context.BudgetTransactions.AddRange(newBudgetTransactions);
                _context.SaveChanges();
            }
        }
コード例 #5
0
        public bool Create(NewBudgetObj obj)
        {
            string collectionId = obj.CollectionsId;
            //DateTime StartDate = obj.StartDate;
            List <BudgetTransaction> transactions = obj.BudgetTransactions;
            Collections col       = new Collections(collectionId);
            DateTime    EndDate   = new DateTime();
            DateTime    StartDate = DateTime.Now;

            switch (col.DurationType)
            {
            case "Day":
                EndDate = StartDate.AddDays(1);
                break;

            case "Week":
                int dayofweek  = (int)StartDate.DayOfWeek;
                int difference = Math.Abs(dayofweek - col.ResetDay);
                StartDate = StartDate.AddDays(-difference);
                EndDate   = StartDate.AddDays(7);
                break;

            case "Month":
                int day = StartDate.Day;
                if (day == 0)
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month, 1).AddMonths(1);
                    StartDate = StartDate.AddDays(-1);
                }
                else if (day >= col.ResetDay)
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month, col.ResetDay);
                }
                else
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month - 1, col.ResetDay);
                }
                if (col.ResetDay == 28)
                {
                    StartDate = new DateTime(StartDate.Year, StartDate.Month, 1).AddMonths(1);
                    StartDate = StartDate.AddDays(-1);
                }
                EndDate = StartDate.AddMonths(1);
                break;
            }
            if (DateCheck(collectionId, EndDate))
            {
                Budget                   budget = new Budget(collectionId, StartDate, EndDate, false);
                BudgetTransaction        t      = new BudgetTransaction();
                List <BudgetTransaction> list   = t.CreateBudgetTransactions(transactions, budget.BudgetId, budget.CollectionId);
                try
                {
                    using (FinPlannerContext _context = new FinPlannerContext())
                    {
                        _context.Budget.Add(budget);
                        foreach (BudgetTransaction item in list)
                        {
                            _context.BudgetTransactions.Add(item);
                        }
                        _context.SaveChanges();
                    }
                    return(true);
                }
                catch (Exception e)
                {
                    return(false);
                }
            }
            else
            {
                // Now we are simply adding transactions
                using (FinPlannerContext _context = new FinPlannerContext())
                {
                    Budget            budget            = _context.Budget.Where(x => x.CollectionId == collectionId && x.StartDate == StartDate).FirstOrDefault();
                    BudgetTransaction budgetTransaction = new BudgetTransaction();
                    try
                    {
                        List <BudgetTransaction> budgetTransactions = budgetTransaction.GetBudgetTransactions(budget.BudgetId);

                        foreach (BudgetTransaction item in transactions)
                        {
                            //does it exist?
                            bool exists = budgetTransactions
                                          .Where(x => x.BudgetTransactionId == item.BudgetTransactionId)
                                          .Any();
                            //does not exist
                            if (!exists)
                            {
                                _context.BudgetTransactions.Add(new BudgetTransaction(item, budget.BudgetId, budget.CollectionId));
                            }
                            //does exist
                            else
                            {
                                BudgetTransaction newT = _context
                                                         .BudgetTransactions
                                                         .Find(item.BudgetTransactionId);
                                double amount = budgetTransactions
                                                .Where(x => x.BudgetTransactionId == item.BudgetTransactionId)
                                                .Select(x => x.Amount)
                                                .FirstOrDefault();
                                string name = budgetTransactions
                                              .Where(x => x.BudgetTransactionId == item.BudgetTransactionId)
                                              .Select(x => x.Name)
                                              .FirstOrDefault();
                                string typeId = budgetTransactions
                                                .Where(x => x.BudgetTransactionId == item.BudgetTransactionId)
                                                .Select(x => x.CFTypeId)
                                                .FirstOrDefault();
                                //if amount is different
                                if (amount != item.Amount)
                                {
                                    newT.Amount = item.Amount;
                                }
                                //if name is different
                                if (name != item.Name)
                                {
                                    newT.Name = item.Name;
                                }
                                if (typeId != item.CFTypeId)
                                {
                                    newT.CFTypeId = item.CFTypeId;
                                }
                                if (amount != item.Amount || name != item.Name || typeId != item.CFClassificationId)
                                {
                                    _context.Entry(newT).State = EntityState.Modified;
                                }
                            }
                        }
                        //remove deleted items
                        foreach (BudgetTransaction item in budgetTransactions)
                        {
                            //is it in the list
                            bool check = transactions.Where(x => x.BudgetTransactionId == item.BudgetTransactionId).Any();
                            if (!check)
                            {
                                _context.BudgetTransactions.Remove(item);
                            }
                        }
                        _context.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        ExceptionCatcher catcher = new ExceptionCatcher();
                        catcher.Catch(e.Message);
                    }
                }
                return(false);
            }
        }