public bool UpdatePaymentMade(PaymentMadeEdit model)
        {
            using (var context = new ApplicationDbContext())
            {
                var paymentMadeEntity = context.PaymentsMade.Single(e => e.Id == model.Id && e.UserId == _userId);

                paymentMadeEntity.Id         = model.Id;
                paymentMadeEntity.CategoryId = context.Categories.SingleOrDefault(c => c.Name == model.CategoryName && c.UserId == _userId).Id;
                paymentMadeEntity.MonthId    = context.Months.SingleOrDefault(m =>
                                                                              m.BeginDate.Month == model.PaymentDate.Month &&
                                                                              m.BeginDate.Year == model.PaymentDate.Year &&
                                                                              m.UserId == _userId)
                                               .Id;
                paymentMadeEntity.Amount      = model.Amount;
                paymentMadeEntity.PaymentDate = model.PaymentDate;

                return(context.SaveChanges() == 1);
            }
        }
        // GET: PaymentMade/Edit/{id}
        public ActionResult Edit(int id)
        {
            var service           = CreatePaymentMadeService();
            var paymentMadeDetail = service.GetPaymentMadeById(id);
            var categoryService   = CreateCategoryService();
            var categoryNames     = categoryService.GetCategoryNames();
            var monthService      = CreateMonthService();
            var monthId           = monthService.GetMonthId(paymentMadeDetail.PaymentDate);
            var model             = new PaymentMadeEdit
            {
                Id                  = paymentMadeDetail.Id,
                MonthId             = monthId,
                CategoryName        = paymentMadeDetail.CategoryName,
                Amount              = paymentMadeDetail.Amount,
                PaymentDate         = paymentMadeDetail.PaymentDate,
                CategoryEntityNames = categoryNames
            };

            return(View(model));
        }
        public ActionResult Edit(int id, PaymentMadeEdit model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

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

            var service = CreatePaymentMadeService();

            if (service.UpdatePaymentMade(model))
            {
                TempData["SaveResult"] = "Your payment was updated.";
                return(RedirectToAction("Transactions", "Month", new { id = model.MonthId }));
            }

            ModelState.AddModelError("", "Your payment could not be updated.");
            return(View(model));
        }