public ReservedBookTests() { var configuration = new MapperConfiguration(cfg => { cfg.AddProfile(new ReservedBookProfile()); }); reservedBookDto = new ReservedBookDto() { Id = 1, AvailableBookId = 1, UserId = "1" }; reservedBookNewDto = new ReservedBookNewDto() { AvailableBookId = 1, UserId = "1" }; var mockUserStore = new Mock <IUserStore <ApplicationUser> >(); _mapper = new Mapper(configuration); _userManager = new Mock <UserManager <ApplicationUser> >(MockBehavior.Loose, new object[] { mockUserStore.Object, null, null, null, null, null, null, null, null }); _availableBookRepository = new Mock <GenericRepository <AvailableBook, int> >(MockBehavior.Loose, new object[] { }); _reservedBookRepository = new Mock <GenericRepository <ReservedBook, int> >(MockBehavior.Loose, new object[] { }); }
public async Task <OperationResult> ReserveBook(ReservedBookNewDto model) { var result = new OperationResult(); var user = await _userManager.FindByIdAsync(model.UserId); if (user == null) { result.Message = "User was not found"; return(result); } if (user.Status == UserStatus.Blocked) { result.Message = "User is not allowed to reserve a book"; return(result); } var availableBook = await _availableBookRepository.GetAsync(model.AvailableBookId); if (availableBook == null) { result.Message = "Available book was not found"; return(result); } var reservedBooks = _reservedBookRepository.Get(x => x.AvailableBookId == model.AvailableBookId, true); if (reservedBooks.Count() >= availableBook.Count) { result.Message = "All books are already reserved"; return(result); } var reserveBookResult = await CreateAsync(_mapper.Map <ReservedBookNewDto, ReservedBookDto>(model)); result.IsSuccessful = reserveBookResult.IsSuccessful; result.Message = reserveBookResult.Message; return(result); }
public async Task <IActionResult> ReserveBook([FromBody] ReservedBookNewDto model) { var result = await _reservedBookService.ReserveBook(model); return(new OkObjectResult(result)); }