public void Complete() { if (!(_state == LoanState.OVERDUE || _state == LoanState.CURRENT)) throw new ApplicationException( $"Error : Cant transition from state: {_state} ==> {LoanState.COMPLETE}"); _state = LoanState.COMPLETE; }
public async Task <ActionResult> DeleteConfirmed(int id) { LoanState loanState = await db.LoanStates.FindAsync(id); db.LoanStates.Remove(loanState); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
public void Test_State(double principalBalance, LoanState state) { var loan = new Loan() { PrincipalBalance = (decimal)principalBalance }; Assert.AreEqual(state, loan.State); }
public bool CheckOverDue(DateTime currentDate) { if(this.State != LoanState.CURRENT && this.State != LoanState.OVERDUE) throw new InvalidOperationException("Cannot check Over Due if Loan is not Current or Overdue"); if (this.DueDate >= currentDate) return false; this.State = LoanState.OVERDUE; return true; }
public bool CheckOverDue(DateTime currentDate) { if (!(_state == LoanState.CURRENT || _state == LoanState.OVERDUE)) throw new ApplicationException($"Error : cant transition from state:{_state} ==> { LoanState.OVERDUE}"); if (DateTime.Compare(currentDate, _dueDate) > 0) _state = LoanState.OVERDUE; return IsOverDue; }
public decimal Rollover() { if (LoanState != LoanState.Paid) { return(0); } LoanState = LoanState.Archived; return(DefaultMonthlyPayment); }
public async Task <ActionResult> Edit([Bind(Include = "LoanStateId,Description")] LoanState loanState) { if (ModelState.IsValid) { db.Entry(loanState).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(loanState)); }
public void Test_PaidLoans(LoanState loanState, int expectedLoanCount) { var loan = new Mock <ILoan>(); loan.Setup(l => l.State).Returns(loanState); var salary = new Salary(); var model = new Person(new ILoan[] { loan.Object }, 0, salary); Assert.AreEqual(expectedLoanCount, model.PaidLoans.Count); }
public async Task <ActionResult> Create([Bind(Include = "LoanStateId,Description")] LoanState loanState) { if (ModelState.IsValid) { db.LoanStates.Add(loanState); await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(loanState)); }
public void CheckOverDueThrowsExceptionIfNotCurrentOrOverdue(LoanState state) { var book = Substitute.For <IBook>(); var borrower = Substitute.For <IMember>(); var loan = new Loan(book, borrower, DateTime.Today, DateTime.Today.AddDays(1)); loan.State = state; var ex = Assert.Throws <InvalidOperationException>(() => loan.CheckOverDue(DateTime.Today)); Assert.Equal("Cannot check Over Due if Loan is not Current or Overdue", ex.Message); }
public Loan(IBook book, IMember borrower, DateTime borrowDate, DateTime dueDate, int id) { if (!sane(book, borrower, borrowDate, dueDate, id)) { throw new ArgumentException("Loan: constructor : bad parameters"); } this.book = book; this.borrower = borrower; this.borrowDate = borrowDate; this.dueDate = dueDate; this.id = id; this.state = LoanState.PENDING; }
public void CommitLoanThrowsRuntimeException(LoanState state) { var book = Substitute.For <IBook>(); var borrower = Substitute.For <IMember>(); var loan = new Loan(book, borrower, DateTime.Today, DateTime.Today.AddDays(1)); // Set the state to one passed in loan.State = state; var ex = Assert.Throws <InvalidOperationException>(() => loan.Complete()); Assert.Equal("Cannot complete a loan if it's not Current or Overdue", ex.Message); }
// GET: LoanStates/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } LoanState loanState = await db.LoanStates.FindAsync(id); if (loanState == null) { return(HttpNotFound()); } return(View(loanState)); }
public Loan(IBook book, IMember borrower, DateTime borrowDate, DateTime dueDate) { if (book == null || borrower == null || DateTime.Compare(borrowDate, dueDate) >= 0) throw new ArgumentException("Error: in constructor parameter list."); _id = 0; _state = LoanState.PENDING; _book = book; _borrower = borrower; _borrowDate = borrowDate; _dueDate = dueDate; }
public static int GetLoanState(string description, LocalDataContext db) { var loanState = db.LoanStates.Where(s => s.Description == description).FirstOrDefault(); if (loanState == null) { loanState = new LoanState { Description = description, }; db.LoanStates.Add(loanState); db.SaveChanges(); } return(loanState.LoanStateId); }
public void CheckOverDueThrowsExceptionIfNotCurrentOrOverdue(LoanState state) { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); DateTime borrowDate = DateTime.Today; DateTime dueDate = DateTime.Today.AddDays(7); var loan = new Loan(book, member, borrowDate, dueDate); loan.State = state; var ex = Assert.Throws <InvalidOperationException>(() => loan.CheckOverDue(DateTime.Today)); Assert.Equal("Cannot check Over Due if Loan is not Current or Overdue", ex.Message); }
public void Commit(int id) { if (id < 0) throw new ArgumentException("Error: Loan ID must be positive integer"); if (_state != LoanState.PENDING) throw new ApplicationException($"Error can't move from state : {_state} ==> {LoanState.CURRENT}"); _state = LoanState.CURRENT; _id = id; Book.Borrow(this); _borrower.AddLoan(this); }
public void CommitLoanThrowsRuntimeException(LoanState state) { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); DateTime borrowDate = DateTime.Today; DateTime dueDate = DateTime.Today.AddDays(7); var loan = new Loan(book, member, borrowDate, dueDate); // Set the state to one passed in loan.State = state; var ex = Assert.Throws <InvalidOperationException>(() => loan.Complete()); Assert.Equal("Cannot complete a loan if it's not Current or Overdue", ex.Message); }
public PaymentResult MakePayment(decimal amount) { var interestAmount = Balance * AnualRate / 12; var principalAmount = amount - interestAmount; if (Balance - principalAmount > 0) { Balance -= principalAmount; } else { Balance = 0; principalAmount = Balance; LoanState = LoanState.Paid; } return(new PaymentResult { Payment = amount, InterestAmount = interestAmount, PrincipalAmount = principalAmount }); }
public bool CheckOverDue(DateTime currentDate) { if (!(state == LoanState.CURRENT || state == LoanState.OVERDUE)) { throw new ApplicationException( String.Format("Loan : checkOverDue : incorrect state transition :{0} -> {1}\n", state, LoanState.OVERDUE)); } if (DateTime.Compare(currentDate, dueDate) > 0) { state = LoanState.OVERDUE; } return IsOverDue; }
public void Commit() { if (!(state == LoanState.PENDING)) { throw new ApplicationException( String.Format("Loan : commit : incorrect state transition : {0} -> {1}\n", state, LoanState.CURRENT)); } state = LoanState.CURRENT; }
public void CommitLoanThrowsRuntimeException(LoanState state) { var book = Substitute.For<IBook>(); var borrower = Substitute.For<IMember>(); var loan = new Loan(book, borrower, DateTime.Today, DateTime.Today.AddDays(1)); // Set the state to one passed in loan.State = state; var ex = Assert.Throws<InvalidOperationException>(() => loan.Complete()); Assert.Equal("Cannot complete a loan if it's not Current or Overdue", ex.Message); }
public void CheckOverDueThrowsExceptionIfNotCurrentOrOverdue(LoanState state) { var book = Substitute.For<IBook>(); var borrower = Substitute.For<IMember>(); var loan = new Loan(book, borrower, DateTime.Today, DateTime.Today.AddDays(1)); loan.State = state; var ex = Assert.Throws<InvalidOperationException>(() => loan.CheckOverDue(DateTime.Today)); Assert.Equal("Cannot check Over Due if Loan is not Current or Overdue", ex.Message); }
public void CheckOverDueThrowsExceptionIfNotCurrentOrOverdue(LoanState state) { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); DateTime borrowDate = DateTime.Today; DateTime dueDate = DateTime.Today.AddDays(7); var loan = new Loan(book, member, borrowDate, dueDate); loan.State = state; var ex = Assert.Throws<InvalidOperationException>(() => loan.CheckOverDue(DateTime.Today)); Assert.Equal("Cannot check Over Due if Loan is not Current or Overdue", ex.Message); }
public void CommitLoanThrowsRuntimeException(LoanState state) { var book = new Book("author", "title", "call number", 1); var member = new Member("first", "last", "phone", "email", 1); DateTime borrowDate = DateTime.Today; DateTime dueDate = DateTime.Today.AddDays(7); var loan = new Loan(book, member, borrowDate, dueDate); // Set the state to one passed in loan.State = state; var ex = Assert.Throws<InvalidOperationException>(() => loan.Complete()); Assert.Equal("Cannot complete a loan if it's not Current or Overdue", ex.Message); }
public void Commit(int loanID) { if(this.State != LoanState.PENDING) throw new InvalidOperationException("Loan cannot be committed unless state is Pending"); this.State = LoanState.CURRENT; this.Book.Borrow(this); this.Borrower.AddLoan(this); this.ID = loanID; }
public void Complete() { if (!(state == LoanState.CURRENT || state == LoanState.OVERDUE)) { throw new ApplicationException( String.Format("Loan : complete : incorrect state transition : {0} -> {1}\n", state, LoanState.COMPLETE)); } state = LoanState.COMPLETE; }
public void Complete() { if(this.State != LoanState.CURRENT && this.State != LoanState.OVERDUE) throw new InvalidOperationException("Cannot complete a loan if it's not Current or Overdue"); this.State = LoanState.COMPLETE; }