/// <summary> /// Returns a list of all borrowings in the database /// </summary> /// <returns></returns> public static List <BorrowingModel> GetAllBorrowings() { var wypożyczenia = new List <BorrowingModel>(); var connString = ConfigurationManager.ConnectionStrings["Biblioteka.Properties.Settings.BibliotekaDBConnectionString"].ToString(); var connection = new SqlConnection(connString); connection.Open(); var command = new SqlCommand($"SELECT * FROM Wypożyczenia", connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var borrowing = new BorrowingModel() { Id = reader.GetInt32(0), BookId = reader.GetInt32(1), UserId = reader.GetInt32(2), DataWypożyczenia = reader.GetDateTime(3), TerminOddania = reader.GetDateTime(4) }; wypożyczenia.Add(borrowing); } } } connection.Close(); return(wypożyczenia); }
/// <summary> /// Returns a borrowing, making the book available and reducing user's amount of concurrent borrowings /// </summary> /// <param name="borrowing">BorrowingModel to return</param> public static void ReturnBook(BorrowingModel borrowing) { var connString = ConfigurationManager.ConnectionStrings["Biblioteka.Properties.Settings.BibliotekaDBConnectionString"].ToString(); var connection = new SqlConnection(connString); var command = new SqlCommand($"DELETE FROM Wypożyczenia WHERE BookId={borrowing.Książka.Id}", connection); connection.Open(); command.ExecuteNonQuery(); connection.Close(); }
/// <summary> /// Marks the chosen book as borrowed if the user has less than five borrowings /// </summary> /// <param name="bookModel">BookModel of the borrowed book</param> public static void BorrowBook(BookModel bookModel) { if (UserModel.CurrentUser == null) { throw new UserNotLoggedInException(); } if (bookModel.IsBorrowed) { throw new BookBorrowedException(); } var connString = ConfigurationManager.ConnectionStrings["Biblioteka.Properties.Settings.BibliotekaDBConnectionString"].ToString(); var connection = new SqlConnection(connString); connection.Open(); //Check if the user has no more than 5 borrowings (that's the limit at a time) var amountOfBorrowings = new SqlCommand($"SELECT COUNT(*) FROM Wypożyczenia WHERE ReaderId={UserModel.CurrentUser.Id}", connection); var amount = (int)(amountOfBorrowings.ExecuteScalar()); if (amount >= 5) { throw new TooManyBorrowings(); } var borrowing = new BorrowingModel() { UserId = UserModel.CurrentUser.Id, BookId = bookModel.Id, DataWypożyczenia = DateTime.Now, TerminOddania = DateTime.Now.AddDays(14) }; var addBorrowing = new SqlCommand($"INSERT INTO Wypożyczenia (BookId, ReaderId, StartDate, EndDate) VALUES " + $"(@BookId, @ReaderId, @StartDate, @EndDate)", connection); addBorrowing.Parameters.AddWithValue("@BookId", borrowing.BookId); addBorrowing.Parameters.AddWithValue("@ReaderId", borrowing.UserId); addBorrowing.Parameters.AddWithValue("@StartDate", borrowing.DataWypożyczenia); addBorrowing.Parameters.AddWithValue("@EndDate", borrowing.TerminOddania); addBorrowing.ExecuteNonQuery(); connection.Close(); }
/// <summary> /// Returns a list of all borrowings of currently logged in user /// </summary> /// <returns></returns> public static List <BorrowingModel> RetrieveBorrowingsForUser() { var listaWypożyczeń = new List <BorrowingModel>(); //get user ID if (UserModel.CurrentUser == null) { throw new UserNotLoggedInException(); } var userId = UserModel.CurrentUser.Id; var connString = ConfigurationManager.ConnectionStrings["Biblioteka.Properties.Settings.BibliotekaDBConnectionString"].ToString(); var connection = new SqlConnection(connString); connection.Open(); var getUserBorrowings = new SqlCommand($"SELECT * FROM Wypożyczenia WHERE ReaderId={userId}", connection); using (var reader = getUserBorrowings.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var wypożyczenie = new BorrowingModel() { BookId = reader.GetInt32(1), UserId = reader.GetInt32(2), DataWypożyczenia = reader.GetDateTime(3), TerminOddania = reader.GetDateTime(4) }; listaWypożyczeń.Add(wypożyczenie); } } else { throw new NoBorrowingFoundException(); } } connection.Close(); return(listaWypożyczeń); }
public void WaitForCardSwipe() { // Move from CREATED to INITIALISED State, and create a message payload. var nextState = EborrowStateManager.CurrentState.ChangeState(); // Create a new borrowing model var borrowingModel = new BorrowingModel(); // Raise the change of state event to let listeners know that the borrow button // has been pressed. EventAggregator.GetEvent<Messages.BorrowingStateEvent>().Publish(borrowingModel); // Listen for the card reader swipe event. EventAggregator.GetEvent<Messages.CardReaderSwipedEvent>().Subscribe(CardSwiped); // Disable the button whilst waiting. ViewModel.Active = false; }
/// <summary> /// Returns the most recent borrowing of currently logged in user /// </summary> /// <returns></returns> public static BorrowingModel RetrieveRecentBorrowing() { BorrowingModel ostatnieWypożyczenie = null; var userId = UserModel.CurrentUser.Id; var connString = ConfigurationManager.ConnectionStrings["Biblioteka.Properties.Settings.BibliotekaDBConnectionString"].ToString(); var connection = new SqlConnection(connString); connection.Open(); var command = new SqlCommand($"SELECT * FROM Wypożycznia WHERE UserId={userId}", connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { if (reader.HasRows) { ostatnieWypożyczenie = new BorrowingModel() { UserId = userId, BookId = reader.GetInt32(1), DataWypożyczenia = reader.GetDateTime(3), TerminOddania = reader.GetDateTime(4) }; } } } else { throw new NoBorrowingFoundException(); } } connection.Close(); return(ostatnieWypożyczenie); }
/// <summary> /// Extend a borrowing by an additional week /// </summary> /// <param name="borrowing">BorrowingModel to extend return time for</param> public static void ExtendUserBorrowing(BorrowingModel borrowing) { if (UserModel.CurrentUser == null) { throw new UserNotLoggedInException(); } var userId = UserModel.CurrentUser.Id; var connString = ConfigurationManager.ConnectionStrings["Biblioteka.Properties.Settings.BibliotekaDBConnectionString"].ToString(); var connection = new SqlConnection(connString); var getEndDate = new SqlCommand($"SELECT * FROM Wypożyczenia WHERE BookId={borrowing.Książka.Id}", connection); connection.Open(); using (var reader = getEndDate.ExecuteReader()) { if (reader.HasRows) { reader.Read(); var previosuDate = reader.GetDateTime(4); var extendedDate = previosuDate.AddDays(7); var command = new SqlCommand($"UPDATE Wypożyczenia SET EndDate={extendedDate} WHERE BookId={borrowing.Książka.Id}", connection); command.ExecuteNonQuery(); } else { throw new NoBorrowingFoundException(); } } connection.Close(); }