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;
        }
Exemple #10
0
        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);
 }