public void T1_Checkout_CreatesACheckoutRecord() { Patron testPatron = new Patron("Judy"); testPatron.Save(); Copy testCopy = new Copy(5); testCopy.Save(); DateTime checkoutDate = new DateTime(2016,08,04); DateTime dueDate = new DateTime(2017,01,02); Checkout newCheckout = new Checkout(testCopy.GetId(), testPatron.GetId(), checkoutDate, dueDate); newCheckout.Save(); List<Checkout> result = Checkout.GetAll(); Assert.Equal(newCheckout, result[0]); }
public static void Return(int id) { SqlConnection conn = DB.Connection(); conn.Open(); if (Checkout.Find(id).GetDueDate() != "Returned") { SqlCommand copyCmd = new SqlCommand("UPDATE books SET copies = @BookCopies WHERE id = @BookId;", conn); copyCmd.Parameters.Add(new SqlParameter("@BookCopies", (Book.Find(Checkout.Find(id).GetBookId()).GetCopies() + 1))); copyCmd.Parameters.Add(new SqlParameter("@BookId", Checkout.Find(id).GetBookId())); copyCmd.ExecuteNonQuery(); } SqlCommand cmd = new SqlCommand("UPDATE checkouts SET due_date = 'Returned' WHERE id=@CheckoutId;", conn); cmd.Parameters.Add(new SqlParameter("@CheckoutId", id)); cmd.ExecuteNonQuery(); DB.CloseSqlConnection(conn); }
public void Checkout_EmptyOnLoad_0() { Assert.Equal(0, Checkout.GetAll().Count); }
public static List<Checkout> GetAll() { List<Checkout> allCheckouts = new List<Checkout>{}; SqlConnection conn = DB.Connection(); conn.Open(); SqlCommand cmd = new SqlCommand("SELECT * FROM checkouts;", conn); SqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { int id = rdr.GetInt32(0); int copyId = rdr.GetInt32(1); int patronId = rdr.GetInt32(2); DateTime checkoutDate = rdr.GetDateTime(3); DateTime dueDate = rdr.GetDateTime(4); Checkout newCheckout = new Checkout(copyId, patronId, checkoutDate, dueDate, id); allCheckouts.Add(newCheckout); } if (rdr != null) { rdr.Close(); } if (conn != null) { conn.Close(); } return allCheckouts; }
public void Dispose() { Checkout.DeleteAll(); }
public Checkout Checkout(int copyId, int patronId, DateTime dueDate) { SqlConnection conn = DB.Connection(); conn.Open(); SqlCommand cmd = new SqlCommand("INSERT into checkouts(copy_id, patron_id, due, checkin) OUTPUT INSERTED.* VALUES(@CopyId, @PatronId, @DueDate, 0);", conn); SqlParameter copyIdParameter = new SqlParameter(); copyIdParameter.ParameterName = "@CopyId"; copyIdParameter.Value = copyId; cmd.Parameters.Add(copyIdParameter); SqlParameter patronIdParameter = new SqlParameter(); patronIdParameter.ParameterName = "@PatronId"; patronIdParameter.Value = this._id; cmd.Parameters.Add(patronIdParameter); SqlParameter dueDateParameter = new SqlParameter(); dueDateParameter.ParameterName = "@DueDate"; dueDateParameter.Value = dueDate; cmd.Parameters.Add(dueDateParameter); SqlDataReader rdr = cmd.ExecuteReader(); int newCheckoutId = 0; int newCopyId = 0; int newPatronId = 0; DateTime due = new DateTime(1900, 01, 01); bool checkin = false; while (rdr.Read()) { newCheckoutId = rdr.GetInt32(0); newCopyId = rdr.GetInt32(1); newPatronId = rdr.GetInt32(2); due = rdr.GetDateTime(3); if (rdr.GetByte(4) == 1) { checkin = true; } else { checkin = false; } } Checkout newCheckout = new Checkout(newCopyId, newPatronId, due, newCheckoutId); newCheckout.SetCheckInStatus(checkin); if (rdr != null) { rdr.Close(); } if (conn != null) { conn.Close(); } return(newCheckout); }
public HomeModule() { string thisDay = "1"; Get["/"] = _ => { return(View["index.cshtml", ModelMaker()]); }; Post["/overdue-date"] = _ => { thisDay = Request.Form["current-day"]; Dictionary <string, object> model = ModelMaker(); model.Add("Overdue", Checkout.GetAllOverdue(thisDay)); return(View["overdue.cshtml", model]); }; Post["/add-book"] = _ => { Book newBook = new Book(Request.Form["book-name"], Request.Form["copies"]); newBook.Save(); if (Request.Form["author-name"] != null) { Author newAuthor = new Author(Request.Form["author-name"]); newAuthor.Save(); newBook.AddAuthor(newAuthor.GetId()); } Dictionary <string, object> model = ModelMaker(); model.Add("Book", newBook); return(View["book.cshtml", model]); }; Post["/add-author"] = _ => { Author newAuthor = new Author(Request.Form["author-name"]); newAuthor.Save(); Dictionary <string, object> model = ModelMaker(); model.Add("Author", newAuthor); return(View["author.cshtml", model]); }; Post["/patron/{patronId}/return/{id}"] = parameters => { Checkout.Return(parameters.id); Dictionary <string, object> model = ModelMaker(); model.Add("Patron", Patron.Find(parameters.patronId)); model.Add("Patron Checkouts", Patron.Find(parameters.patronId).GetCheckouts()); return(View["patron.cshtml", model]); }; Post["/add-patron"] = _ => { Patron newPatron = new Patron(Request.Form["patron-name"], Request.Form["patron-phone"]); newPatron.Save(); Dictionary <string, object> model = ModelMaker(); model.Add("Patron", newPatron); model.Add("Patron Checkouts", newPatron.GetCheckouts()); return(View["patron.cshtml", model]); }; Get["/patron/{id}"] = parameters => { Dictionary <string, object> model = ModelMaker(); model.Add("Patron", Patron.Find(parameters.id)); model.Add("Patron Checkouts", Patron.Find(parameters.id).GetCheckouts()); return(View["patron.cshtml", model]); }; Post["/patron/{id}"] = parameters => { Checkout newCheckout = new Checkout(Request.Form["due-date"], parameters.id, Request.Form["booklist"]); newCheckout.Save(Book.Find(Request.Form["booklist"])); Dictionary <string, object> model = ModelMaker(); model.Add("Patron", Patron.Find(parameters.id)); model.Add("Patron Checkouts", Patron.Find(parameters.id).GetCheckouts()); return(View["patron.cshtml", model]); }; Patch["/patron/{id}"] = parameters => { Patron.Find(parameters.id).Update(Request.Form["new-name"], Request.Form["new-phone"]); Dictionary <string, object> model = ModelMaker(); model.Add("Patron", Patron.Find(parameters.id)); model.Add("Patron Checkouts", Patron.Find(parameters.id).GetCheckouts()); return(View["patron.cshtml", model]); }; Get["/author/{id}"] = parameters => { Dictionary <string, object> model = ModelMaker(); model.Add("Author", Author.Find(parameters.id)); return(View["author.cshtml", model]); }; Post["/author/{id}"] = parameters => { Author.Find(parameters.id).AddBook(Request.Form["book-id"]); Dictionary <string, object> model = ModelMaker(); model.Add("Author", Author.Find(parameters.id)); return(View["author.cshtml", model]); }; Patch["/author/{id}"] = parameters => { Author.Find(parameters.id).Update(Request.Form["new-name"]); Dictionary <string, object> model = ModelMaker(); model.Add("Author", Author.Find(parameters.id)); return(View["author.cshtml", model]); }; Delete["/author/{id}"] = parameters => { Author.Delete(parameters.id); return(View["index.cshtml", ModelMaker()]); }; Get["/book/{id}"] = parameters => { Dictionary <string, object> model = ModelMaker(); model.Add("Book", Book.Find(parameters.id)); return(View["book.cshtml", model]); }; Delete["/book/{id}"] = parameters => { Dictionary <string, object> model = ModelMaker(); model.Add("Overdue", Checkout.GetAllOverdue(thisDay)); Book.Delete(parameters.id); return(View["index.cshtml", model]); }; Post["/book/{id}"] = parameters => { Book.Find(parameters.id).AddAuthor(Request.Form["author-id"]); Dictionary <string, object> model = ModelMaker(); model.Add("Book", Book.Find(parameters.id)); return(View["book.cshtml", model]); }; Post["/book/{id}/remove_author"] = parameters => { Book.Find(parameters.id).RemoveAuthor(Request.Form["author-id"]); Dictionary <string, object> model = ModelMaker(); model.Add("Book", Book.Find(parameters.id)); return(View["book.cshtml", model]); }; Patch["/book/{id}"] = parameters => { Book.Find(parameters.id).Update(Request.Form["new-name"], Request.Form["new-copies"]); Dictionary <string, object> model = ModelMaker(); model.Add("Book", Book.Find(parameters.id)); return(View["book.cshtml", model]); }; }