private LibraryBooksOperationResult validate(InfoRequest infoReq) { var result = new LibraryBooksOperationResult(); var book = this._bookRepository.FindBy(x => x.Code == infoReq.BookCode).Result.FirstOrDefault(); result.Success = !LibraryValidator.isBookAlreadyRegistered(book, ref result); return result; }
private async Task Loan(InfoRequest infoReq) { var bookList = await this._bookRepository.GetBookListByUsername(infoReq.Username); var book = bookList.Where(x => x.Code == infoReq.BookCode).FirstOrDefault(); var user = await this._usersRepository.GetUserByUsername(infoReq.Username); book.IsLoaned = true; book.User = user == null ? new User() { Username = infoReq.Username } : user; this._bookRepository.Edit(book); }
public static bool isBookLoanExceeds30Days(Book book, ref LibraryBooksOperationResult result, InfoRequest infoReq) { if (book.LoanDate.Value.AddDays(30) < infoReq.ReturnDate) { result.Message = ValidationMessages.BookLoanExceeds30Days; return true; } return false; }
private LibraryBooksOperationResult validate(InfoRequest infoReq, Book book) { var result = new LibraryBooksOperationResult(); result.Success = !LibraryValidator.isBookNull(book, ref result) && LibraryValidator.isBookLoaned(book, ref result) && LibraryValidator.isBookLoanExceeds30Days(book, ref result, infoReq); return result; }
public async Task<LibraryBooksOperationResult> ExecuteOperation(InfoRequest infoRequest) { LibraryBooksOperationResult result; result = validate(infoRequest); if (result.Success) { await Loan(infoRequest); await this._bookRepository.Save(); } return result; }
private async Task Register(InfoRequest infoRequest) { var user = await this._usersRepository.GetUserByUsername(infoRequest.Username); await this._bookRepository.Add(new Book() { Code = infoRequest.BookCode, LoanDate = infoRequest.LoanDate, IsLoaned = true, ReturnDate = infoRequest.ReturnDate, User = user == null ? new User() { Username = infoRequest.Username } : user }); }
private LibraryBooksOperationResult validate(InfoRequest infoReq) { var result = new LibraryBooksOperationResult(); var user = this._usersRepository.GetUserByUsername(infoReq.Username).Result; var book = this._bookRepository.FindBy(x => x.Code == infoReq.BookCode).Result.FirstOrDefault(); var userBookList = this._bookRepository.GetBookListByUsername(infoReq.Username).Result; result.Success = !LibraryValidator.isBookNull(book, ref result) && !LibraryValidator.isBookLoaned(book, ref result) && !LibraryValidator.isMaxLoanReached(userBookList,ref result) && !LibraryValidator.isUserFined(user, ref result); return result; }
private static void Register() { var infoReq = new InfoRequest(); AskForValue(Resource.EnterName); infoReq.Username = inputValue; AskForValue(Resource.EnterBook); infoReq.BookCode = inputValue; result = libraryService.ExecuteBookOperation(infoReq).Result; if (result.Success) { PrintMessage(Resource.RegisterBookSuccess); } else { PrintMessage(result.Message.ToString()); } }
public async Task<LibraryBooksOperationResult> ExecuteOperation(InfoRequest infoRequest) { LibraryBooksOperationResult result; var bookList = await this._bookRepository.GetBookListByUsername(infoRequest.Username); var book = bookList.Where(x => x.Code == infoRequest.BookCode).FirstOrDefault(); var user = await this._usersRepository.GetUserByUsername(infoRequest.Username); result = validate(infoRequest, book); if (result.Success || result.Message.Equals(ValidationMessages.BookLoanExceeds30Days)) { if (result.Message.Equals(ValidationMessages.BookLoanExceeds30Days)) { user.isFined = true; await this._usersRepository.Save(); } Return(infoRequest, book); await this._bookRepository.Save(); } return result; }
public static bool isBookLoanExceeds30Days(Book book, ref LibraryBooksOperationResult result, InfoRequest infoReq) { if (book.LoanDate.Value.AddDays(30) < infoReq.ReturnDate) { result.Message = ValidationMessages.BookLoanExceeds30Days; return(true); } return(false); }
public async Task<LibraryBooksOperationResult> ExecuteBookOperation(InfoRequest infoReq) { return await container.Resolve<ILibraryOperations>(infoReq.OperationType.ToString()).ExecuteOperation(infoReq); }
private void Return(InfoRequest infoRequest, Book book) { book.IsLoaned = false; book.ReturnDate = infoRequest.ReturnDate; this._bookRepository.Edit(book); }