/// <summary>
        /// Handles navigating to the <see cref="Views.ExpenseEdit"/>
        /// </summary>
        /// <param name="sender">The sender object</param>
        /// <param name="e">Event arguments</param>
        public static void EditButtonClicked(object sender, EventArgs e)
        {
            if (ExpenseEdit == null)
            {
                ExpenseEdit             = new ExpenseEdit();
                ExpenseEdit.FormClosed += ExpenseEditViewOnFormClosed;
            }

            var selectedListItems = ExpenseView.ExpenseListView.SelectedItems;

            if (selectedListItems.Count > 0)
            {
                var selectedItem = selectedListItems[0];
                var expenseId    = Guid.Parse(selectedItem.SubItems[0].Text);
                var expense      = ListAccessHelper.FindExpense(expenseId);

                EditExpense = expense;
            }
            else
            {
                EditExpense = null;
            }

            ExpenseEdit.Show(ExpenseView);
            ExpenseView.Hide();
        }
        /// <summary>
        ///  Handles the save and back button being pressed on the <see cref="Views.ExpenseEdit"/> form
        /// </summary>
        /// <param name="sender">The sender object</param>
        /// <param name="e">Event arguments</param>
        public static void EditSaveAndBack(object sender, EventArgs e)
        {
            var success = SaveEditExpense();

            if (success)
            {
                ExpenseEdit.Owner.Show();
                ExpenseEdit.Close();
            }
        }
示例#3
0
        /// <summary>
        /// Process all Intouch ExpenseEdit CSVs
        /// </summary>
        public static void ProcessExpenseEditData(DirectoryFile directoryFile)
        {
            List <ExpenseEdit> ExpenseEditODS = new List <ExpenseEdit>();
            List <ExpenseEdit> ExpenseEditNew = new List <ExpenseEdit>();
            int newRows = 0;

            try
            {
                logger.Info($"Started processing file [{directoryFile.FileName}]");
                List <string[]>    ExpenseEditFileString = new List <string[]>();
                List <ExpenseEdit> ExpenseEditFile       = new List <ExpenseEdit>();
                FileUtility.CSVStringReader(directoryFile.FileContent, ",", ExpenseEditFileString, 9, true);
                foreach (string[] expenseEditString in ExpenseEditFileString)
                {
                    ExpenseEdit ExpenseEdit = new ExpenseEdit
                    {
                        Date                 = Convert.ToDateTime(expenseEditString[0]),
                        Description          = expenseEditString[1],
                        Detail               = expenseEditString[2],
                        Total                = Convert.ToDecimal(expenseEditString[3]),
                        EffectiveDate        = Convert.ToDateTime(expenseEditString[4]),
                        EffectiveDescription = expenseEditString[5]
                    };
                    ExpenseEditFile.Add(ExpenseEdit);
                }

                using (BusinessAccountingEntities context = new BusinessAccountingEntities())
                {
                    var query = (from row in context.ExpenseEdit
                                 select row).ToList();
                    ExpenseEditODS = query;
                    foreach (ExpenseEdit expenseEdit in ExpenseEditFile)
                    {
                        if (!ExpenseEditODS.Contains(expenseEdit))
                        {
                            ExpenseEditNew.Add(expenseEdit);
                            newRows++;
                        }
                    }
                    foreach (ExpenseEdit expenseEdit in ExpenseEditNew)
                    {
                        context.ExpenseEdit.Add(expenseEdit);
                    }
                    context.SaveChanges();
                    logger.Info($"Added [{newRows.ToString()}] rows to ODS from file [{directoryFile.FileName}]");
                    logger.Info($"Finished processing file [{directoryFile.FileName}]");
                }
            }
            catch (Exception e)
            {
                logger.Error($"Exception while trying to process file [{directoryFile.FileName}]. Exception [{e.ToString()}]");
                throw;
            }
        }
示例#4
0
        public IActionResult Edit(ExpenseEdit expEdit)
        {
            if (ModelState.IsValid)
            {
                expenseRepository.EditExpense(expEdit);
                return(RedirectToAction("Details", new { id = expEdit.TableNumber }));
            }

            ViewBag.Expense = expenseRepository.GetExpenseById(expEdit.ExpenseId);
            return(View(expEdit));
        }
示例#5
0
        public bool UpdateExpense(ExpenseEdit model)
        {
            if (model.EndDate == null)
            {
                model.EndDate = new DateTime(2035, 12, 31);
            }
            if (model.ExpenseFreqType == ExpenseFreqType.Once)
            {
                model.EndDate = model.InitialDueDate;
            }

            var categoryService = CreateCategoryService();

            if (!categoryService.UpdateCategory(model))
            {
                return(false);
            }

            using (var context = new ApplicationDbContext())
            {
                var expenseEntity = context.Expenses.Single(e => e.Id == model.Id && e.UserId == _userId);

                if (expenseEntity.Amount == model.Amount &&
                    expenseEntity.ExpenseFreqType == model.ExpenseFreqType &&
                    expenseEntity.FrequencyFactor == model.FrequencyFactor &&
                    expenseEntity.InitialDueDate == model.InitialDueDate &&
                    expenseEntity.EndDate == model.EndDate)
                {
                    return(true);
                }

                expenseEntity.Amount          = model.Amount;
                expenseEntity.ExpenseFreqType = model.ExpenseFreqType;
                expenseEntity.FrequencyFactor = model.FrequencyFactor;
                expenseEntity.InitialDueDate  = model.InitialDueDate;
                expenseEntity.EndDate         = model.EndDate;

                if (!(context.SaveChanges() == 1))
                {
                    return(false);
                }
            }

            var dueDateService = CreateDueDateService();

            if (!dueDateService.UpdateDueDates(model))
            {
                return(false);
            }

            return(true);
        }
示例#6
0
        public bool UpdateDueDates(ExpenseEdit model)
        {
            if (!DeleteDueDates(model.Id))
            {
                return(false);
            }

            var dueDates = new List <DateTime>();

            if (model.ExpenseFreqType == ExpenseFreqType.ByMonth)
            {
                for (var date = model.InitialDueDate;
                     (DateTime.Compare(date, model.EndDate)) <= 0;
                     date = date.AddMonths(1 * model.FrequencyFactor))
                {
                    dueDates.Add(date);
                }
            }
            else if (model.ExpenseFreqType == ExpenseFreqType.ByWeek)
            {
                for (var date = model.InitialDueDate;
                     (DateTime.Compare(date, model.EndDate)) <= 0;
                     date = date.AddDays(7 * model.FrequencyFactor))
                {
                    dueDates.Add(date);
                }
            }
            else
            {
                dueDates.Add(model.InitialDueDate);
            }

            using (var context = new ApplicationDbContext())
            {
                foreach (var date in dueDates)
                {
                    var dueDateEntity = new DueDate()
                    {
                        ExpenseId = model.Id,
                        MonthId   = (context.Months.Single(m => m.BeginDate.Month == date.Month && m.BeginDate.Year == date.Year && m.UserId == _userId)).Id,
                        Date      = date,
                        Amount    = model.Amount,
                        UserId    = _userId
                    };
                    context.DueDates.Add(dueDateEntity);
                }
                return(context.SaveChanges() == dueDates.Count());
            }
        }
示例#7
0
        public void EditExpense(ExpenseEdit exp)
        {
            Expense expense = GetExpenseById(exp.ExpenseId);
            Expense newExp  = ExpenseMaker.CreateExpense(exp.TableNumber, exp.Name, exp.Amount, exp.MembersInvolved, exp.Comment);

            if (expense != null)
            {
                expense.Name = newExp.Name;
                expense.NumberOfMembersInvolved = newExp.NumberOfMembersInvolved;
                expense.NamesOfMembersInvolved  = newExp.NamesOfMembersInvolved;
                expense.Amount  = newExp.Amount;
                expense.Comment = newExp.Comment;

                appDbContext.SaveChanges();
            }
        }
        public ActionResult EditExpense(int id)
        {
            var service = CreateExpenseService();
            var detail  = service.GetExpenseById(id);
            var model   =
                new ExpenseEdit
            {
                ExpenseId     = detail.ExpenseId,
                ExpenseType   = detail.ExpenseType,
                Description   = detail.Description,
                Budget        = detail.Budget,
                ActualAmount  = detail.ActualAmount,
                PaymentMethod = detail.PaymentMethod
            };

            return(View(model));
        }
示例#9
0
        public bool UpdateCategory(ExpenseEdit model)
        {
            using (var context = new ApplicationDbContext())
            {
                var categoryEntity = context.Categories.Single(c => c.Id == model.Id && c.UserId == _userId);

                if (categoryEntity.Name == model.CategoryName && categoryEntity.Type == model.CategoryType)
                {
                    return(true);
                }

                categoryEntity.Name = model.CategoryName;
                categoryEntity.Type = model.CategoryType;

                return(context.SaveChanges() == 1);
            }
        }
示例#10
0
        // GET: Expense/Edit/{id}
        public ActionResult Edit(int id)
        {
            var service       = CreateExpenseService();
            var expenseDetail = service.GetExpenseById(id);
            var model         = new ExpenseEdit
            {
                Id              = expenseDetail.Id,
                CategoryName    = expenseDetail.CategoryName,
                CategoryType    = expenseDetail.CategoryType,
                Amount          = expenseDetail.Amount,
                ExpenseFreqType = expenseDetail.ExpenseFreqType,
                FrequencyFactor = expenseDetail.FrequencyFactor,
                InitialDueDate  = expenseDetail.InitialDueDate,
                EndDate         = expenseDetail.EndDate
            };

            return(View(model));
        }
示例#11
0
        public bool UpdateExpense(ExpenseEdit model)
        {
            using (var ctx = new ApplicationDbContext())
            {
                var entity =
                    ctx
                    .Expenses
                    .Single(e => e.ExpenseId == model.ExpenseId && e.OwnerId == _userId);

                entity.ExpenseType   = model.ExpenseType;
                entity.Description   = model.Description;
                entity.Budget        = model.Budget;
                entity.ActualAmount  = model.ActualAmount;
                entity.PaymentMethod = model.PaymentMethod;
                entity.EventId       = model.EventId;
                entity.IsPurchased   = model.IsPurchased;

                return(ctx.SaveChanges() == 1);
            }
        }
示例#12
0
        private bool SetCheckmarkState(int expenseId, bool newState)
        {
            var userId  = Guid.Parse(User.Identity.GetUserId());
            var service = new ExpenseService(userId);
            var detail  = service.GetExpenseById(expenseId);

            var updatedExpense =
                new ExpenseEdit
            {
                ExpenseId     = detail.ExpenseId,
                ExpenseType   = detail.ExpenseType,
                Description   = detail.Description,
                Budget        = detail.Budget,
                ActualAmount  = detail.ActualAmount,
                PaymentMethod = detail.PaymentMethod,
                Event         = detail.Event,
                EventId       = detail.EventId,
                IsPurchased   = newState
            };

            return(service.UpdateExpense(updatedExpense));
        }
        public ActionResult EditExpense(int id, ExpenseEdit model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (model.ExpenseId != id)
            {
                ModelState.AddModelError("", "Invalid ID Number");
                return(View(model));
            }

            var service = CreateExpenseService();

            if (service.UpdateExpense(model))
            {
                TempData["SaveResult"] = "Your expense was successfully updated!";
                return(RedirectToAction("Index"));
            }

            ModelState.AddModelError("", "Your expense could not be updated. The event ID you entered may be invalid.");
            return(View(model));
        }
示例#14
0
        public ActionResult Edit(int id, ExpenseEdit model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            if (model.Id != id)
            {
                ModelState.AddModelError("", "Id Mismatch");
                return(View(model));
            }

            var service = CreateExpenseService();

            if (service.UpdateExpense(model))
            {
                TempData["SaveResult"] = "Your expense was updated.";
                return(RedirectToAction("Index"));
            }

            ModelState.AddModelError("", "Your expense could not be updated.");
            return(View(model));
        }
 /// <summary>
 /// Handles the cancel button being pressed on the <see cref="Views.ExpenseEdit"/> form
 /// </summary>
 /// <param name="sender">The sender object</param>
 /// <param name="e">Event arguments</param>
 public static void EditCancelClicked(object sender, EventArgs e)
 {
     ExpenseEdit.Owner.Show();
     ExpenseEdit.Close();
 }