Ejemplo n.º 1
0
        public async Task <IActionResult> UpdateAuthor(int bookId, [FromBody] SaveBookResource sbResource)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var book = await bookRepository.GetBookByIdAsync(bookId);

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

                mapper.Map <SaveBookResource, Book>(sbResource, book);
                book.LastUpdate = DateTime.Now;

                await unitOfWork.CompleteAsync();

                book = await bookRepository.GetBookByIdAsync(book.Id);

                var result = mapper.Map <Book, BookResource>(book);
                return(Ok(result));
            }
            catch (System.Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Ejemplo n.º 2
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));
        }
        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)));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> PutAsync(int id, [FromBody] SaveBookResource resource)
        {
            if (string.IsNullOrEmpty(resource.Publisher) && !string.IsNullOrEmpty(resource.City))
            {
                ModelState.AddModelError("Publisher", "The Publisher field is required.");
            }

            if (string.IsNullOrEmpty(resource.City) && !string.IsNullOrEmpty(resource.Publisher))
            {
                ModelState.AddModelError("City", "The City field is required.");
            }

            if (resource.Authors != null)
            {
                foreach (var author in resource.Authors)
                {
                    if (string.IsNullOrEmpty(author.FirstName) || string.IsNullOrEmpty(author.LastName))
                    {
                        ModelState.AddModelError("Author", "The Author field is required.");
                    }
                }
            }

            if (!ModelState.IsValid)
            {
                var badresult = new ResponseData
                {
                    Data    = null,
                    Message = string.Join(" ", ModelState.GetErrorMessages().ToArray()),
                    Success = false
                };
                return(Ok(badresult));
            }

            var book         = mapper.Map <SaveBookResource, Book>(resource);
            var bookResponse = await bookService.UpdateAsync(id, book);

            var bookResource = mapper.Map <Book, BookResource>(bookResponse.Book);

            var result = new ResponseData
            {
                Data    = bookResource,
                Message = bookResponse.Message,
                Success = bookResponse.Success
            };

            return(Ok(result));
        }
        public IActionResult Post([FromBody] SaveBookResource form)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var model = _mapper.Map <SaveBookResource, Book>(form);

            _repository.Add(model);
            _unitOfWork.Complete();

            var book = _repository.GetBook(model.Id);

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

            return(Ok(result));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> CreateBook([FromBody] SaveBookResource bookResource)
        {
            if (!ModelState.IsValid &&
                (bookResource.Guests.Count <= 0 || bookResource.NewGuests.Count <= 0))
            {
                return(BadRequest(ModelState));
            }


            if (bookResource.NewGuests != null && bookResource.NewGuests.Count > 0)
            {
                var newGuest = mapper.Map <IEnumerable <GuestResource>, IEnumerable <Guest> >(bookResource.NewGuests);
                unitOfWork.Guests.AddRange(newGuest);

                foreach (var item in newGuest)
                {
                    bookResource.Guests.Add(item.Id);
                }
            }

            var book = mapper.Map <SaveBookResource, Book>(bookResource);


            book.DayRooms.Add(new DayRoom
            {
                RoomId       = book.RoomId,
                GuestsQty    = book.GuestNumber,
                DayRoomDate  = book.CheckIn,
                DayRoomPrice = book.RoomRate,
                PaymentFlag  = false
            });
            unitOfWork.Books.Add(book);

            var room = await unitOfWork.Rooms.Get(book.RoomId);

            room.CurrentBookId = book.Id;
            room.RoomStateId   = (int)RoomStateEnum.Occupied;

            await unitOfWork.CompleteAsync();

            var result = await unitOfWork.Books.GetBook(book.Id);

            return(Ok(mapper.Map <Book, BookResource>(result)));
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> PostAsync([FromBody] SaveBookResource saveBookResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            var book   = _mapper.Map <Book>(saveBookResource);
            var result = await _bookService.SaveAsync(book);

            if (!result.Success)
            {
                return(BadRequest());
            }

            var bookResource = _mapper.Map <BookCheckoutResource>(result.Book);

            return(Ok(bookResource));
        }
Ejemplo n.º 8
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)));
        }
Ejemplo n.º 10
0
        public async Task <IActionResult> UpdateBook(int bookId, [FromBody] SaveBookResource bookResource)
        {
            var book = await unitOfWork.Books.GetBook(bookId);

            var room = await unitOfWork.Rooms.Get(bookResource.RoomId);

            if (book == null || room == null)
            {
                return(NotFound());
            }

            if (book.RoomId != bookResource.RoomId)
            {
                await ChangeRoom(book, room);
            }

            book.GuestNumber = bookResource.GuestNumber;
            book.RoomRate    = bookResource.RoomRate;
            book.CheckOut    = ParseString.ParseStringToDateTime(bookResource.CheckOut);

            await unitOfWork.CompleteAsync();

            return(Ok(mapper.Map <Book, BookResource>(book)));
        }
Ejemplo n.º 11
0
        public async Task <IActionResult> AddBook([FromBody] SaveBookResource sbResource)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var book = mapper.Map <SaveBookResource, Book>(sbResource);
                book.LastUpdate = DateTime.Now;
                bookRepository.AddBookAsync(book);
                await unitOfWork.CompleteAsync();

                var newBook = await bookRepository.GetBookByIdAsync(book.Id);

                _logger.LogInformation(new EventId(), null, newBook, null);
                return(Ok(mapper.Map <Book, BookResource>(newBook)));
            }
            catch (System.Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public IActionResult Put(int id, [FromBody] SaveBookResource form)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var model = _repository.GetBook(id);

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

            _mapper.Map <SaveBookResource, Book>(form, model);

            _unitOfWork.Complete();

            var book = _repository.GetBook(model.Id);

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

            return(Ok(result));
        }