public async Task <ActionResult> Create([Bind(Include = "SavingsId,ActualAmount,SubCategoryId,Date,ForMonth,FinancialYear")] SavingsDetail savingsDetail) { if (ModelState.IsValid) { var isRecurring = db.SubCategories.Where(x => x.SubCategoryId == savingsDetail.SubCategoryId).FirstOrDefault(); if (isRecurring.StartDate != null && isRecurring.EndDate != null) { var yearsDiff = DateTime.Today.Year - isRecurring.StartDate.Value.Year; if (yearsDiff == 0) { savingsDetail.MonthsPassed = DateTime.Today.Month - isRecurring.StartDate.Value.Month; } else { savingsDetail.MonthsPassed = (yearsDiff * 12) + (DateTime.Today.Month - isRecurring.StartDate.Value.Month); } } else if (isRecurring.Frequency == Utility.Enumerations.Frequency.Once) { savingsDetail.MonthsPassed = 1; } savingsDetail.AmountAccumulated = isRecurring.ExpectedAmount * savingsDetail.MonthsPassed; db.SavingsDetails.Add(savingsDetail); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(savingsDetail)); }
public async Task <ActionResult> DeleteConfirmed(int id) { SavingsDetail savingsDetail = await db.SavingsDetails.FindAsync(id); db.SavingsDetails.Remove(savingsDetail); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
// GET: SavingsDetails/Details/5 public async Task <ActionResult> Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SavingsDetail savingsDetail = await db.SavingsDetails.FindAsync(id); if (savingsDetail == null) { return(HttpNotFound()); } return(View(savingsDetail)); }
// GET: SavingsDetails/Edit/5 public async Task <ActionResult> Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } SavingsDetail savingsDetail = await db.SavingsDetails.FindAsync(id); var items = db.SubCategories.Where(x => x.ParentCategoryId == 3).ToList(); if (items != null) { ViewBag.SubCategories = items; } if (savingsDetail == null) { return(HttpNotFound()); } return(View(savingsDetail)); }
public ActionResult Create(MonthlyPlannerViewModel model) { ViewBag.Years = new SelectList(Enumerable.Range(DateTime.Today.Year, 20).Select(x => new SelectListItem() { Text = x.ToString() + "-" + (x + 1).ToString(), Value = x.ToString() + "-" + (x + 1).ToString() }), "Value", "Text"); var plans = db.MonthlyPlans.ToList(); if (plans.Any(x => x.ForMonth == model.ForMonth && x.FinancialYear == model.FinancialYear)) { ViewBag.Message = "Plan for this month already exists."; return(View()); } var items = db.SubCategories.Where(x => x.ParentCategoryId == 1).ToList(); if (items != null) { ViewBag.SubCategories = items; } //generate default Income list var _defaultIncome = db.SubCategories.Where(x => x.ParentCategoryId == 1 && x.IsDefault == true).ToList(); var _incomeList = new List <IncomeDetail>(); foreach (var item in _defaultIncome) { var _addIncome = new IncomeDetail(); _addIncome.SubCategoryId = item.SubCategoryId; _addIncome.ActualAmount = 0; _addIncome.CreditDate = DateTime.Now; _addIncome.FinancialYear = model.FinancialYear; _addIncome.ForMonth = model.ForMonth; _addIncome.SubCategoryName = item.Name; db.IncomeDetails.Add(_addIncome); _incomeList.Add(_addIncome); } model.IncomeDetails = _incomeList; //generate default expenses var _defaultExpenses = db.SubCategories.Where(x => x.ParentCategoryId == 2 && x.IsDefault == true).ToList(); var _expenseList = new List <ExpenseDetail>(); foreach (var item in _defaultExpenses) { var _addExpense = new ExpenseDetail(); _addExpense.SubCategoryId = item.SubCategoryId; _addExpense.ActualAmount = 0; _addExpense.DebitDate = DateTime.Now; _addExpense.FinancialYear = model.FinancialYear; _addExpense.ForMonth = model.ForMonth; _addExpense.SubCategoryName = item.Name; db.ExpenseDetails.Add(_addExpense); _expenseList.Add(_addExpense); } model.ExpenseDetails = _expenseList; //default savings var _defaultSavings = db.SubCategories.Where(x => x.ParentCategoryId == 3 && x.IsDefault == true).ToList(); var _savingsList = new List <SavingsDetail>(); foreach (var item in _defaultSavings) { var _addSavings = new SavingsDetail(); _addSavings.SubCategoryId = item.SubCategoryId; _addSavings.ActualAmount = 0; _addSavings.Date = DateTime.Now; _addSavings.FinancialYear = model.FinancialYear; _addSavings.ForMonth = model.ForMonth; _addSavings.SubCategoryName = item.Name; db.SavingsDetails.Add(_addSavings); _savingsList.Add(_addSavings); } model.SavingsDetails = _savingsList; //default Investment var _defaultInvestments = db.SubCategories.Where(x => x.ParentCategoryId == 4 && x.IsDefault == true).ToList(); var _investList = new List <InvestmentDetail>(); foreach (var item in _defaultInvestments) { var _addInvestments = new InvestmentDetail(); _addInvestments.SubCategoryId = item.SubCategoryId; _addInvestments.ActualAmount = 0; _addInvestments.DebitDate = DateTime.Now; _addInvestments.FinancialYear = model.FinancialYear; _addInvestments.ForMonth = model.ForMonth; _addInvestments.SubCategoryName = item.Name; db.InvestmentDetails.Add(_addInvestments); _investList.Add(_addInvestments); } model.InvestmentDetails = _investList; db.SaveChanges(); var newPlan = new MonthlyPlan(); newPlan.ForMonth = model.ForMonth; newPlan.FinancialYear = model.FinancialYear; newPlan.CreatedOn = DateTime.Now; db.MonthlyPlans.Add(newPlan); db.SaveChanges(); //generate view var categories = db.Categories.Join(db.SubCategories, x => x.CategoryId, y => y.ParentCategoryId, (x, y) => new { x, y }).Select(y => new MonthlyPlannerViewModel { CategoryId = y.y.ParentCategoryId, CategoryName = y.x.CategoryName, SubCategoryId = y.y.SubCategoryId, ExpectedAmount = y.y.ExpectedAmount, SubCategoryName = y.y.Name }).ToList(); var _incomeData = model.IncomeDetails.Join(categories, x => x.SubCategoryId, y => y.SubCategoryId, (x, y) => new { x, y }).Select (y => new MonthlyPlannerViewModel { IncomeId = y.x.IncomeId, CategoryId = y.y.CategoryId, CategoryName = y.y.CategoryName, SubCategoryId = y.y.SubCategoryId, SubCategoryName = y.y.SubCategoryName, ActualAmount = y.x.ActualAmount, CreditDate = y.x.CreditDate, FinancialYear = y.x.FinancialYear, ForMonth = y.x.ForMonth, ExpectedAmount = y.y.ExpectedAmount }).ToList(); var _expenseData = model.ExpenseDetails.Join(categories, x => x.SubCategoryId, y => y.SubCategoryId, (x, y) => new { x, y }).Select (y => new MonthlyPlannerViewModel { ExpenseId = y.x.ExpenseId, CategoryId = y.y.CategoryId, CategoryName = y.y.CategoryName, SubCategoryId = y.y.SubCategoryId, SubCategoryName = y.y.SubCategoryName, ActualAmount = y.x.ActualAmount, DebitDate = y.x.DebitDate, FinancialYear = y.x.FinancialYear, ForMonth = y.x.ForMonth, ExpectedAmount = y.y.ExpectedAmount }).ToList(); var _savingsData = model.SavingsDetails.Join(categories, x => x.SubCategoryId, y => y.SubCategoryId, (x, y) => new { x, y }).Select (y => new MonthlyPlannerViewModel { SavingsId = y.x.SavingsId, CategoryId = y.y.CategoryId, CategoryName = y.y.CategoryName, SubCategoryId = y.y.SubCategoryId, SubCategoryName = y.y.SubCategoryName, ActualAmount = y.x.ActualAmount, DebitDate = y.x.Date, FinancialYear = y.x.FinancialYear, ForMonth = y.x.ForMonth, ExpectedAmount = y.y.ExpectedAmount }).ToList(); var _investmentData = model.InvestmentDetails.Join(categories, x => x.SubCategoryId, y => y.SubCategoryId, (x, y) => new { x, y }).Select (y => new MonthlyPlannerViewModel { InvestmentId = y.x.InvestmentId, CategoryId = y.y.CategoryId, CategoryName = y.y.CategoryName, SubCategoryId = y.y.SubCategoryId, SubCategoryName = y.y.SubCategoryName, ActualAmount = y.x.ActualAmount, DebitDate = y.x.DebitDate, FinancialYear = y.x.FinancialYear, ForMonth = y.x.ForMonth, ExpectedAmount = y.y.ExpectedAmount }).ToList(); model._MonthlyList = _incomeData; model._MonthlyList.AddRange(_expenseData); model._MonthlyList.AddRange(_savingsData); model._MonthlyList.AddRange(_investmentData); return(View("ViewPlanner", model)); }