Example #1
0
        public async Task <ActionResult <BookResource> > UpdateBook(int id, [FromBody] SaveBookResource saveBookResource)
        {
            var validator        = new SaveBookResourceValidator();
            var validationResult = await validator.ValidateAsync(saveBookResource);

            var requestIsInvalid = id == 0 || !validationResult.IsValid;

            if (requestIsInvalid)
            {
                return(BadRequest(validationResult.Errors));
            }

            var bookToBeUpdate = await _bookService.GetBookById(id);

            if (bookToBeUpdate == null)
            {
                return(NotFound());
            }

            var book = _mapper.Map <SaveBookResource, Book>(saveBookResource);

            await _bookService.UpdateBook(bookToBeUpdate, book);

            var updatedBook = await _bookService.GetBookById(id);

            var updatedBookResource = _mapper.Map <Book, BookResource>(updatedBook);

            return(Ok(updatedBookResource));
        }
Example #2
0
        public async Task <ActionResult <BookDTO> > UpdateMusic(int id, [FromBody] SaveBookDTo saveMusicResource)
        {
            var validator        = new SaveBookResourceValidator();
            var validationResult = await validator.ValidateAsync(saveMusicResource);

            var requestIsInvalid = id == 0 || !validationResult.IsValid;

            if (requestIsInvalid)
            {
                return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok
            }
            var musicToBeUpdate = await _musicService.GetMusicById(id);

            if (musicToBeUpdate == null)
            {
                return(NotFound());
            }

            var music = _mapper.Map <SaveBookDTo, Music>(saveMusicResource);

            await _musicService.UpdateMusic(musicToBeUpdate, music);

            var updatedMusic = await _musicService.GetMusicById(id);

            var updatedMusicResource = _mapper.Map <Music, BookDTO>(updatedMusic);

            return(Ok(updatedMusicResource));
        }
Example #3
0
        public async Task <ActionResult <BookDTO> > CreateBook([FromBody] SaveBookDTO saveBook)
        {
            try
            {
                var validator        = new SaveBookResourceValidator();
                var validationResult = await validator.ValidateAsync(saveBook);

                if (!validationResult.IsValid)
                {
                    return(BadRequest(validationResult.Errors));
                }

                var bookCreation = _mapper.Map <SaveBookDTO, Book>(saveBook);
                var newBook      = await _bookService.Create(bookCreation);

                var book = await _bookService.GetBookById(newBook.Id);

                var bookRes = _mapper.Map <Book, BookDTO>(book);

                return(BuildObjectResult(HttpStatusCode.OK, true, value: bookRes));
            }
            catch (Exception ex)
            {
                return(BuildObjectResult(HttpStatusCode.BadRequest, false, ex.Message));
            }
        }
        public async Task <ActionResult <BookResource> > UpdateBook(SaveBookResource saveBookResource)
        {
            var validator        = new SaveBookResourceValidator();
            var validationResult = await validator.ValidateAsync(saveBookResource);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }

            var bookToCreate = _mapper.Map <SaveBookResource, Book>(saveBookResource);

            await _bookService.UpdateBook(bookToCreate, bookToCreate);

            // Delete from reference table all Book-Authors
            var bookAuthorsToDelete = await _bookAuhtorService.GetBookAuthorById(saveBookResource.Id);

            foreach (var authorToDelete in bookAuthorsToDelete)
            {
                await _bookAuhtorService.DeleteBookAuthor(authorToDelete);
            }

            // Add to reference table all Book-Authors
            foreach (var author in saveBookResource.Authors)
            {
                BookAuthorResource bookAuthorResource = new BookAuthorResource();
                bookAuthorResource.AuthorId = author.Id;
                bookAuthorResource.BookId   = saveBookResource.Id;

                var bookAuthorToAdd = _mapper.Map <BookAuthorResource, BookAuthor>(bookAuthorResource);
                var newBookAuthor   = await _bookAuhtorService.CreateBookAuthor(bookAuthorToAdd);
            }


            // Delete from reference table all Book-Categories
            var bookCategoryToDelete = await _bookCategoryService.GetBookCategoryById(saveBookResource.Id);

            foreach (var categoryToDelete in bookCategoryToDelete)
            {
                await _bookCategoryService.DeleteBookCategory(categoryToDelete);
            }

            // Add to reference table all Book-Categories
            foreach (var category in saveBookResource.Categories)
            {
                BookCategoryResource bookCategoryResource = new BookCategoryResource();
                bookCategoryResource.CategoryId = category.Id;
                bookCategoryResource.BookId     = saveBookResource.Id;

                var bookCategoryToCreate = _mapper.Map <BookCategoryResource, BookCategory>(bookCategoryResource);
                var newBookCategory      = await _bookCategoryService.CreateBookCategory(bookCategoryToCreate);
            }

            var databaseBooks = await _bookService.GetWithCategoriesAndAuthorById(saveBookResource.Id);

            return(Ok(_mapper.Map <Book, BookResource>(databaseBooks)));
        }
Example #5
0
        public async Task <ActionResult <BookDTO> > CreateMusic([FromBody] SaveBookDTo saveMusicResource)
        {
            var validator        = new SaveBookResourceValidator();
            var validationResult = await validator.ValidateAsync(saveMusicResource);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors)); // this needs refining, but for demo it is ok
            }
            var musicToCreate = _mapper.Map <SaveBookDTo, Music>(saveMusicResource);

            var newMusic = await _musicService.CreateMusic(musicToCreate);

            var music = await _musicService.GetMusicById(newMusic.Id);

            var musicResource = _mapper.Map <Music, BookDTO>(music);

            return(Ok(musicResource));
        }
Example #6
0
        public async Task <ActionResult <BookResource> > CreateBook([FromBody] SaveBookResource saveBookResource)
        {
            var validator        = new SaveBookResourceValidator();
            var validationResult = await validator.ValidateAsync(saveBookResource);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }

            var bookToCreate = _mapper.Map <SaveBookResource, Book>(saveBookResource);

            var newBook = await _bookService.CreateBook(bookToCreate);

            var book = await _bookService.GetBookById(newBook.Id);

            var bookResource = _mapper.Map <Book, BookResource>(book);

            return(Ok(bookResource));
        }
        public async Task <ActionResult <BookResource> > CreateBook(SaveBookResource saveBookResource)
        {
            var validator        = new SaveBookResourceValidator();
            var validationResult = await validator.ValidateAsync(saveBookResource);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }

            var bookToCreate = _mapper.Map <SaveBookResource, Book>(saveBookResource);

            var newBook = await _bookService.CreateBook(bookToCreate);

            foreach (var author in saveBookResource.Authors)
            {
                BookAuthorResource bookAuthorResource = new BookAuthorResource();
                bookAuthorResource.AuthorId = author.Id;
                bookAuthorResource.BookId   = newBook.Id;

                var bookAuthorToCreate = _mapper.Map <BookAuthorResource, BookAuthor>(bookAuthorResource);
                var newBookAuhtor      = await _bookAuhtorService.CreateBookAuthor(bookAuthorToCreate);
            }

            foreach (var category in saveBookResource.Categories)
            {
                BookCategoryResource bookCategoryResource = new BookCategoryResource();
                bookCategoryResource.CategoryId = category.Id;
                bookCategoryResource.BookId     = newBook.Id;

                var bookCategoryToCreate = _mapper.Map <BookCategoryResource, BookCategory>(bookCategoryResource);
                var newBookCategory      = await _bookCategoryService.CreateBookCategory(bookCategoryToCreate);
            }

            var databaseBooks = await _bookService.GetWithCategoriesAndAuthorById(newBook.Id);

            return(Ok(_mapper.Map <Book, BookResource>(databaseBooks)));
        }
Example #8
0
        public async Task <ActionResult <BookDTO> > UpdateBook([FromRoute] int id, [FromBody] SaveBookDTO saveBook)
        {
            try
            {
                var validator        = new SaveBookResourceValidator();
                var validationResult = await validator.ValidateAsync(saveBook);

                var requestIsInvalid = id == 0 || !validationResult.IsValid;

                if (requestIsInvalid)
                {
                    return(BadRequest(validationResult.Errors));
                }

                var bookToBeUpdate = await _bookService.GetBookById(id);

                if (bookToBeUpdate == null)
                {
                    return(NotFound());
                }

                var book = _mapper.Map <SaveBookDTO, Book>(saveBook);

                await _bookService.Update(bookToBeUpdate, book);

                var updatedBook = await _bookService.GetBookById(id);

                var updatedBookResource = _mapper.Map <Book, BookDTO>(updatedBook);


                return(BuildObjectResult(HttpStatusCode.OK, true, value: updatedBookResource));
            }
            catch (Exception e)
            {
                return(BuildObjectResult(HttpStatusCode.BadRequest, false, e.Message));
            }
        }