Exemplo n.º 1
0
 public bool Edit(NewBudgetObj obj)
 {
     using (FinPlannerContext _context = new FinPlannerContext())
     {
         Budget budget = _context.Budget.Find(obj.BudgetId);
         List <BudgetTransaction> transactions = _context.BudgetTransactions.Where(x => x.BudgetId == obj.BudgetId).ToList();
         //split the transactions into two lists Present/Updated and New
         List <BudgetTransaction> newList = new List <BudgetTransaction>();
         BudgetTransaction        b       = new BudgetTransaction();
         bool check = false;
         foreach (BudgetTransaction item in obj.BudgetTransactions)
         {
             check = false;
             foreach (BudgetTransaction ex in transactions)
             {
                 if (item.CFClassificationId == ex.CFClassificationId && item.CFTypeId == ex.CFTypeId)
                 {
                     check     = true;
                     ex.Amount = item.Amount;
                     _context.Entry(ex).State = EntityState.Modified;
                     break;
                 }
             }
             if (!check)
             {
                 newList.Add(item);
             }
         }
         newList = b.CreateBudgetTransactions(newList, obj.BudgetId, budget.CollectionId);
         _context.AddRange(newList);
         try
         {
             _context.SaveChanges();
             return(true);
         }
         catch (Exception e)
         {
             return(false);
         }
     }
 }
Exemplo n.º 2
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);
            }
        }