Example #1
0
        private static void ValidateBook(Book book)
        {
            var validator = new BookValidator();

            var results = validator.Validate(book);

            if (results.IsValid)
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Book are successfully validated.");
                Console.ForegroundColor = ConsoleColor.Gray;
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Failed. Errors:");
                Console.ForegroundColor = ConsoleColor.DarkRed;

                foreach (ValidationFailure failure in results.Errors)
                {
                    Console.WriteLine(failure.ErrorMessage);
                }
                Console.ForegroundColor = ConsoleColor.Gray;
            }
            Console.WriteLine();
        }
Example #2
0
        public async Task <Payload <Book> > AddBookByIsbnAsync(
            AddBookByIsbnInput input,
            [Service] IGetClaimsProvider claimsProvider,
            [Service] IBookApiService apiService,
            [ScopedService] BookRefDbContext context)
        {
            if (context.Books.Any(e => e.Identifier == input.Isbn))
            {
                return(new Payload <Book>(BuildSingleError(new BookException($"Book with isbn '{input.Isbn}' already in database."))));
            }
            var apiResult = apiService.FindBook(input.Isbn);

            if (apiResult.IsNone)
            {
                return(new Payload <Book>(BuildSingleError(new BookException($"{input.Isbn} not found in service"))));
            }

            apiResult = new BookService().MatchAuthors(context.Authors.ToList(), apiResult);

            var book = apiResult.IfNone(new Book("", "", ""));

            var validationResult = new BookValidator().Validate(book);

            if (!validationResult.IsValid)
            {
                return(new Payload <Book>(BuildErrorList(validationResult.Errors)));
            }


            context.Books.Add(book);
            await context.SaveChangesAsync();

            return(new Payload <Book>(book));
        }
Example #3
0
        public async Task AddBook(BookDto input)
        {
            List <string> errorList = new List <string>();

            var book = new Book
            {
                Name        = input.Name.Remove(),
                PriceBorrow = input.PriceBorrow,
                CategoryId  = input.CategoryId,
                PublisherId = input.PublisherId,
                AuthorId    = input.AuthorId,
                YearPublic  = input.YearPublic
            };

            BookValidator    validator        = new BookValidator();
            ValidationResult validationResult = validator.Validate(book);

            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 _bookRepository.InsertAsync(book);
        }
Example #4
0
        public async Task UpdateBook(BookDto input)
        {
            List <string> errorList = new List <string>();

            var data = await GetBookById(input.Id);

            data.Name        = input.Name.Remove();
            data.CategoryId  = input.CategoryId;
            data.PublisherId = input.PublisherId;
            data.AuthorId    = input.AuthorId;
            data.YearPublic  = input.YearPublic;

            BookValidator    validator        = new BookValidator();
            ValidationResult validationResult = validator.Validate(data);

            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 _bookRepository.UpdateAsync(data);
        }
Example #5
0
        private bool ClientValidator(Book book)
        {
            var bookValidator = new BookValidator();

            book.ValidationResult = bookValidator.Validate(book);
            return(book.ValidationResult.Errors.Any());
        }
Example #6
0
        public void IsValidCityForBookTest()
        {
            BookValidator vld = new BookValidator();

            string city = "Саратов";

            Assert.AreEqual(true, vld.IsValidCity(city));
        }
Example #7
0
        public void IsInValidCityForBookTest()
        {
            BookValidator vld = new BookValidator();

            string city = null;

            Assert.AreEqual(false, vld.IsValidCity(city));
        }
Example #8
0
        public Task <CreateBookOutput> Execute(CreateBookInput data)
        {
            var book = new Book(data.Name, data.Author, data.Description, data.Category, data.PublishingCompany);

            var resultValidation = new BookValidator().Validate(book);

            throw new System.NotImplementedException();
        }
Example #9
0
        public void SecondBookISBNNumberValidatorTest()
        {
            BookValidator bookValidator = new BookValidator();
            bool          expected      = false;
            var           actual        = bookValidator.HasThirteenDigitsInISBNNumber("123456789123");

            Assert.AreEqual(expected, actual);
        }
Example #10
0
 public CreateBookViewModel(IBookRepository bookRepository)
 {
     BookRepository = bookRepository;
     EditableBook   = new Book()
     {
         ReleaseDate = DateTime.Now
     };
     BookValidator = new BookValidator(EditableBook);
 }
Example #11
0
 static Validators()
 {
     AuthorValidator     = new AuthorValidator();
     BookValidator       = new BookValidator();
     PublisherValidator  = new PublisherValidator();
     PaperValidator      = new PaperValidator();
     PatentValidator     = new PatentValidator();
     PaperIssueValidator = new PaperIssueValidator();
 }
        /// <summary>
        /// Tells if title contain substring.
        /// </summary>
        /// <param name="bookToCheck">Book to check.</param>
        /// <returns>True if if title contain substring, otherwise - null.</returns>
        /// <exception cref="ArgumentException">Thrown if book to check is null.</exception>
        public bool IsMatch(Book bookToCheck)
        {
            BookValidator.CheckOnNull(bookToCheck);
            if (bookToCheck.Name.ToLower().Contains(this.searchSubstring.ToLower()))
            {
                return(true);
            }

            return(false);
        }
Example #13
0
        private void BookValidation(Book book)
        {
            BookValidator bookValidator = new BookValidator();
            var           result        = bookValidator.Validate(book);

            if (result.Errors.Count > 0)
            {
                throw new ValidationException(result.Errors);
            }
        }
        /// <summary>
        /// Tells if book is newer.
        /// </summary>
        /// <param name="bookToCheck">Book to check.</param>
        /// <returns>True if book is published later than in given year.</returns>
        /// <exception cref="ArgumentException">Thrown if book to check is null.</exception>
        public bool IsMatch(Book bookToCheck)
        {
            BookValidator.CheckOnNull(bookToCheck);
            if (bookToCheck.PublicationYear > this.year)
            {
                return(true);
            }

            return(false);
        }
Example #15
0
        static void Main(string[] args)
        {
            BookValidator bookValidator = new BookValidator();
            bool          validBook     = bookValidator.Validate("books.xml", "BookSchema.xsd");

            System.Console.WriteLine(validBook);

            bool inValidBook = bookValidator.Validate("invalid-books.xml", "BookSchema.xsd");

            System.Console.WriteLine(inValidBook);
        }
Example #16
0
        public IActionResult AddBook([FromBody] Book book)
        {
            var validator = new BookValidator();

            if (validator.Validate(book).IsValid)
            {
                _bookService.AddBook(book);
                return(Ok());
            }
            return(BadRequest());
        }
Example #17
0
        public IActionResult UpdateBook([FromBody] Book book, int id)
        {
            var validator = new BookValidator();

            if (validator.Validate(book).IsValid)
            {
                book.Id = id;
                _bookService.UpdateBook(book);
                return(Ok());
            }
            return(BadRequest());
        }
Example #18
0
        public async Task <IActionResult> Create([FromBody] Book book)
        {
            var validator   = new BookValidator();
            var brokenRules = validator.GetBrokenRules(book);

            if (brokenRules.Any())
            {
                return(BadRequest(brokenRules.Select(b => b.Rule)));
            }
            await _applicationService.Add(book);

            return(CreatedAtRoute(nameof(GetById), book.Id));
        }
Example #19
0
        public void SecondIsBookNameInLibraryTest()
        {
            BookValidator bookValidator = new BookValidator();
            bool          expected      = false;
            string        bookName      = "Star book";
            List <Book>   books         = new List <Book>
            {
                new Book("Book about nothing", "Richards", "9994443332221"),
                new Book("Lord of the rings", "tolkien", "1111222233334")
            };
            var actual = bookValidator.IsBookNameInBooks(bookName, books);

            Assert.AreEqual(expected, actual);
        }
Example #20
0
        public Form1()
        {
            _bookService   = new BookService();
            _cartService   = new CartService();
            _genreService  = new GenreService();
            _bookValidator = new BookValidator();

            _pageNumber  = 1;
            _messages    = new List <string>();
            _rowsPerPage = 20;
            _genreId     = (long?)null;
            _name        = "";
            InitializeComponent();
        }
        public async Task <IActionResult> Save(BookViewModel bookViewModel)
        {
            var validator = new BookValidator();
            var results   = validator.Validate(bookViewModel);

            results.AddToModelState(ModelState, null);
            if (ModelState.IsValid)
            {
                var result = await _testService.PostAsync("api/books", bookViewModel);

                return(RedirectToAction("GetBooks", "Home"));
            }

            return(View("Create"));
        }
Example #22
0
        public long Create(Book book)
        {
            long pulledDownNumber = 0;
            var  bookValidator    = new BookValidator(book);

            book.PulledDownNumber = GenerateNextPulledDownNumber();

            if (bookValidator.IsValid())
            {
                _bookRepository.Create(book);
                pulledDownNumber = book.PulledDownNumber;
            }

            return(pulledDownNumber);
        }
Example #23
0
        public void FirstIsBookInAvailableBooksTest()
        {
            BookValidator bookValidator = new BookValidator();
            bool          expected      = true;
            string        bookName      = "Star book";
            List <Book>   books         = new List <Book>
            {
                new Book("Book about nothing", "Richards", "9994443332221"),
                new Book("Star book", "galikowski", "1234567891111"),
                new Book("Lord of the rings", "tolkien", "1111222233334")
            };

            var actual = bookValidator.IsBookNameInAvailableBooks(bookName, books);

            Assert.AreEqual(expected, actual);
        }
Example #24
0
        protected static void WithService(Action <BookService> func, string type = null)
        {
            Utils.WithTestDatabase((uow) =>
            {
                var mapper    = AutoMapperConfig.CreateMapper((cfg) => cfg.AddProfile(new MappingProfile()));
                var config    = new ConfigurationBuilder().Build();
                var validator = new BookValidator();

                TestService service;
                service = type switch
                {
                    "TestCallbackService" => new TestCallbackService(uow, mapper, validator),
                    _ => new TestService(uow, mapper, validator),
                };
                service.Repo.DeleteAll();
                func(service);
            });
        }
Example #25
0
        public async Task <Payload <Book> > AddBookAsync(
            AddBookInput input,
            [Service] IGetClaimsProvider claimsProvider,
            [ScopedService] BookRefDbContext context)
        {
            var book = new Book(input.Identifier, input.Title, claimsProvider.Username)
            {
                Subtitle = input.Subtitle
            };
            var validationResult = new BookValidator().Validate(book);

            if (!validationResult.IsValid)
            {
                return(new Payload <Book>(BuildErrorList(validationResult.Errors)));
            }

            context.Books.Add(book);
            await context.SaveChangesAsync();

            return(new Payload <Book>(book));
        }
Example #26
0
        public void SecondIsBookInAvailableBooksTest()
        {
            BookValidator bookValidator = new BookValidator();
            bool          expected      = false;
            string        bookName      = "Star book";
            List <Book>   books         = new List <Book>
            {
                new Book("Book about nothing", "Richards", "9994443332221"),
                new Book("Star book", "galikowski", "1234567891111"),
                new Book("Lord of the rings", "tolkien", "1111222233334")
            };

            books.First(x => (x.BookName == bookName));
            foreach (var item in books.Where(x => (x.BookName == bookName)))
            {
                item.IdPerson = 1;
            }

            var actual = bookValidator.IsBookNameInAvailableBooks(bookName, books);

            Assert.AreEqual(expected, actual);
        }
Example #27
0
        public object Put(BookModels request)
        {
            ValidationResult validations = new BookValidator().Validate(request);

            if (!validations.IsValid)
            {
                return(validations.Errors);
            }

            request.Description = HttpContext.Current.Server.HtmlEncode(request.Description);

            if (request.CategoryId <= 0)
            {
                request.CategoryId = LookupRepository.Insert(new CategoryModels
                {
                    Name      = request.CategoryText,
                    SortOrder = 0
                });
            }

            BookRepository.Update(request);

            return(request.Id);
        }
Example #28
0
 public BookService(IBookRepository bookRepository)
 {
     _bookRepository = bookRepository;
     _validator      = new BookValidator();
 }
 public void Setup()
 {
     bookValidator = new BookValidator();
 }
Example #30
0
        public object Post(BookModels request)
        {
            ValidationResult validations = new BookValidator().Validate(request);

            if (!validations.IsValid)
            {
                request.ResponseResult.ResultStatus = ResultStatuses.Error;
                foreach (var item in validations.Errors)
                {
                    request.ResponseResult.Messages.Add(item.ErrorMessage);
                }

                return request;
            }

            if (request.InsertMode)
            {
                if (request.UserId <= 0)
                {
                    var userAuth = this.GetSession();
                    request.UserId = userAuth.Id.To<int>();
                }
            }

            request.Description = HttpContext.Current.Server.HtmlEncode(request.Description);
            if (request.Description.Length > 1500)
            {
                request.Description = request.Description.Substring(0, 1500);
            }

            if (request.CategoryId <= 0)
            {
                request.CategoryId = LookupRepository.Insert(new CategoryModels
                {
                    Name = request.CategoryText,
                    SortOrder = 0
                });
            }

            if (request.Id > 0)
            {
                BookRepository.Update(request);
            }
            else
            {
                BookRepository.Insert(request);
            }

            var liveMode = ServiceStack.Configuration.ConfigUtils.GetAppSetting("AppMode");
            if (request.InsertMode && liveMode.Equals("Live", StringComparison.InvariantCultureIgnoreCase))
            {
                // send a notification email
                EmailService.SendSmtpEmail(new EmailServiceModels
                {
                    Subject = "A New Book has been submitted and Needs your attention",
                    To = new List<string>() { "*****@*****.**", "*****@*****.**", "*****@*****.**" },
                    IsBodyHtml = false,
                    Body = string.Format("{0} has uploaded a book named {1}. You will need to upload the book to gumroad.", request.Author, request.Title),
                    Attachments = new List<string>() { string.Format("C:\\websites\\{0}", request.BookUrl) }
                });
            }

            return null;
        }
Example #31
0
 public BookController(IBookContainersDAL ibookContainerDAL)
 {
     bookValidator = new BookValidator();
     bookContainer = new BookContainer(ibookContainerDAL);
 }
Example #32
0
 /// <summary>
 /// Method that returns the result of comparison of years.
 /// </summary>
 /// <param name="firstBook">First book.</param>
 /// <param name="secondBook">Second book.</param>
 /// <returns>Returns 0 of publication years are the same.
 /// Returns 1 if first book was published earlier than second. Otherwise it returns -1.</returns>
 public int Compare(Book firstBook, Book secondBook)
 {
     BookValidator.CheckOnNull(firstBook);
     BookValidator.CheckOnNull(secondBook);
     return(secondBook.AmountOfPages - firstBook.AmountOfPages);
 }
Example #33
0
        public object Put(BookModels request)
        {
            ValidationResult validations = new BookValidator().Validate(request);

            if (!validations.IsValid)
            {
                return validations.Errors;
            }

            request.Description = HttpContext.Current.Server.HtmlEncode(request.Description);

            if (request.CategoryId <= 0)
            {
                request.CategoryId = LookupRepository.Insert(new CategoryModels
                {
                    Name = request.CategoryText,
                    SortOrder = 0
                });
            }

            BookRepository.Update(request);

            return request.Id;
        }