예제 #1
0
        public async Task <Book> AddOrUpdateBookAsync(Book book)
        {
            if (book is null)
            {
                throw new ArgumentNullException(nameof(book));
            }

            Book updated = null;

            if (book.BookId == 0)
            {
                updated = await _booksRepository.AddAsync(book);

                _books.Add(updated);
            }
            else
            {
                updated = await _booksRepository.UpdateAsync(book);

                if (updated == null)
                {
                    throw new InvalidOperationException();
                }

                Book old = _books.Where(b => b.BookId == updated.BookId).Single();
                int  ix  = _books.IndexOf(old);
                _books.RemoveAt(ix);
                _books.Insert(ix, updated);
            }
            return(updated);
        }
예제 #2
0
        public async Task <BookDTO> Handle(CreateBookCommand request, CancellationToken cancellationToken)
        {
            var book = await booksRepository.AddAsync(mapper.Map <BookDTO, Book>(request, new Book()));

            logger.LogInformation($"A new book has been added to the repository {JsonConvert.SerializeObject(book)}");
            return(mapper.Map <BookDTO>(book));
        }
예제 #3
0
        // TODO: nameof operator
        public async Task <Book> AddOrUpdateBookAsync(Book book)
        {
            if (book == null)
            {
                throw new ArgumentNullException("book");
            }

            Book old = _books.Where(b => b.BookId == book.BookId).SingleOrDefault();

            if (old == null)
            {
                Book added = await _booksRepository.AddAsync(book);

                _books.Add(added);
                return(added);
            }
            else
            {
                Book updated = await _booksRepository.UpdateAsync(book);

                int ix = _books.IndexOf(old);
                _books.RemoveAt(ix);
                _books.Insert(ix, updated);
                return(updated);
            }
        }
예제 #4
0
        public async Task <Book> Handle(AddBookCommand request, CancellationToken cancellationToken)
        {
            // add to database
            BookEntity entity = await _booksRepository.AddAsync(request.Name, request.Price);

            // map
            Book book = BookMapper.MapToModel(entity);

            // return
            return(book);
        }
예제 #5
0
        private async Task OnSaveBookAsync()
        {
            switch (Mode)
            {
            case EditBookMode.Edit:
                await _booksRepository.UpdateAsync(Book).ConfigureAwait(true);

                break;

            case EditBookMode.AddNew:
                await _booksRepository.AddAsync(Book).ConfigureAwait(true);

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(Mode));
            }
        }
예제 #6
0
        private async void OnSaveBook()
        {
            switch (Mode)
            {
            case EditBookMode.Edit:
                await _booksRepository.UpdateAsync(Book);

                break;

            case EditBookMode.AddNew:
                await _booksRepository.AddAsync(Book);

                break;

            default:
                break;
            }
        }
예제 #7
0
        public async Task <Book> AddOrUpdateBookAsync(Book book)
        {
            Book updated;

            if (book.BookId == 0)
            {
                updated = await _booksRepository.AddAsync(book).ConfigureAwait(true);

                _books.Add(updated);
            }
            else
            {
                updated = await _booksRepository.UpdateAsync(book).ConfigureAwait(true);

                var old = _books.Single(bk => bk.BookId == updated.BookId);
                var ix  = _books.IndexOf(old);
                _books.RemoveAt(ix);
                _books.Insert(ix, updated);
            }

            return(updated);
        }
예제 #8
0
        public async Task <Book> AddOrUpdateBookAsync(Book book)
        {
            Book updated = null;

            if (book.BookId == 0)
            {
                updated = await _booksRepository.AddAsync(book);

                _books.Add(updated);
            }
            else
            {
                updated = await _booksRepository.UpdateAsync(book);

                Book old = _books.Where(b => b.BookId == updated.BookId).Single();
                int  ix  = _books.IndexOf(old);
                _books.RemoveAt(ix);
                _books.Insert(ix, updated);
            }

            return(updated);
        }
        public async Task <IActionResult> Add([FromBody] Book book)
        {
            var bookAdded = await booksRepository.AddAsync(book);

            return(Created($"/books/details/{book.Id}", bookAdded));
        }