public void FavoriteBookDto_is_not_valid(FavoriteBookDto dto, string message)
        {
            var result = dto.IsValid();

            result.Should().BeFalse();
            dto.ValidationResult.Errors.Should().NotBeNullOrEmpty();
            dto.ValidationResult.Errors.First().ErrorMessage.Should().Be(message);
        }
        public void Add(FavoriteBookDto dto)
        {
            if (!dto.IsValid())
            {
                NotifyValidationError(dto);
                return;
            }

            var authors      = string.Join(";", dto.Authors.Select(x => x));
            var favoriteBook = new FavoriteBook(bookId: dto.BookId, link: dto.Link, title: dto.Title, thumbnail: dto.Thumbnail, description: dto.Description, authors: authors, user: dto.User);

            _favoriteBookRepository.Add(favoriteBook);
            Commit();
        }
        public async Task AddFavoriteBook(FavoriteBookDto input)
        {
            List <string> errorList = new List <string>();

            long userID = AbpSession.UserId.Value;

            var getData = _favoriteBookRepository.GetAll()
                          .Where(x => x.LibraryId == input.LibraryId && x.BookId == input.BookId && x.UserId == userID)
                          .FirstOrDefault();

            if (getData == null)
            {
                var favoriteBook = new FavoriteBook
                {
                    UserId        = userID,
                    BookLibraryId = input.BookLibraryId,
                    BookId        = input.BookId,
                    LibraryId     = input.LibraryId
                };

                FavoriteBookValidator validator        = new FavoriteBookValidator();
                ValidationResult      validationResult = validator.Validate(favoriteBook);

                if (!validationResult.IsValid)
                {
                    foreach (var failure in validationResult.Errors)
                    {
                        errorList.Add(string.Format("{0}", failure.ErrorMessage));
                    }
                    string errorString = string.Join(" ", errorList.ToArray());
                    throw new UserFriendlyException(errorString);
                }
                await _favoriteBookRepository.InsertAsync(favoriteBook);
            }
            else
            {
                throw new UserFriendlyException(string.Format("The book is already in the favorites list!"));
            }
        }
        public void FavoriteBookDto_is_valid()
        {
            var dto = new FavoriteBookDto
            {
                Title       = "test",
                Description = "test",
                Authors     = new List <string>()
                {
                    "test", "test2"
                },
                BookId    = "test",
                Link      = "test",
                Thumbnail = "test",
                User      = new UserBuilder().Builder(),
            };

            var result = dto.IsValid();

            result.Should().BeTrue();

            dto.ValidationResult.Errors.Should().BeNullOrEmpty();
        }