//TODO: Add functionality to handle the eSTATEMENT public void PayExpense(Account srcAccount, StudentExpense studentExpense, Student stud, bool bIsLate) { if (srcAccount.AccountTotal >= studentExpense.CurrentAmountOwed && (studentExpense.CurrentAmountOwed > 0)) { if (bIsLate == true) { srcAccount.AccountTotal -= studentExpense.CurrentAmountOwed; srcAccount.AccountTotal -= studentExpense.Expense.LateFee; studentExpense.CurrentAmountOwed = 0; stud.bBillsPaid = true; } else { srcAccount.AccountTotal -= studentExpense.CurrentAmountOwed; studentExpense.CurrentAmountOwed = 0; stud.bBillsPaid = true; } } }
public ActionResult Create(Student model) { var userProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name) ?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name); Account CheckingsAccount = new Account { AccountName = "Checkings", AccountTotal = 100, StudentID = userProfile.UserId }; Account SavingsAccount = new Account { AccountName = "Savings", AccountTotal = 100, StudentID = userProfile.UserId }; //Additional Expenses will be included after purchase of things such as a house or other items. StudentExpense PhoneBill = new StudentExpense { ExpenseAccountNumber = "123456789", Name = "Phone Payment", Company = "Telecom Co.", bMissedPayment = false, CurrentAmountOwed = 0, StudentID = userProfile.UserId, bIsRecurring = false, ExpenseID = 1 }; Classroom classroom = db.Classrooms.Find(model.ClassroomID); Student student = new Student { UserId = userProfile.UserId, FirstName = model.FirstName, LastName = model.LastName, EmailAddress = model.EmailAddress, ClassroomID = model.ClassroomID, bBillsPaid = true, bAlertSetup = false, AccountThreshold = 0, AlertAccountID = null, Happiness = 50, Health = 70, Hunger = 60, Social = 50, Energy = 80, Points = 0, CreditScore = 0 }; if (ModelState.IsValid && (classroom != null)) { try { if (userProfile != null) { db.Students.Add(student); db.SaveChanges(); db.Entry(student).State = EntityState.Modified; db.SaveChanges(); db.Accounts.Add(CheckingsAccount); db.SaveChanges(); db.Accounts.Add(SavingsAccount); db.SaveChanges(); db.StudentExpenses.Add(PhoneBill); db.SaveChanges(); return RedirectToAction("Index", "Student"); } } catch (DataException) { ModelState.AddModelError("","Something went wrong, try again."); } } return RedirectToAction("Create"); }
public ActionResult CreateExpense(AddExpenseViewModel viewModel) { var studentProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name) ?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name); Expense expense = db.Expenses.SingleOrDefault(e => e.ExpenseAccountNumber == viewModel.ExpenseAccountNumber); if (expense != null && ModelState.IsValid) { if (expense.bIsActive == true) { StudentExpense studentExpense = new StudentExpense { bIsRecurring = false, //Currently false by default, student user must set up recurring payment on different page. bMissedPayment = false, CurrentAmountOwed = 0, ExpenseAccountNumber = viewModel.ExpenseAccountNumber, Name = viewModel.Name, ExpenseID = expense.ExpenseID, Company = expense.Company, StudentID = studentProfile.UserId }; db.StudentExpenses.Add(studentExpense); db.SaveChanges(); return RedirectToAction("ViewExpenses"); } } return View(); //TODO: Add redirect or error message for if there is an error or if account number does not exist. }