Ejemplo n.º 1
0
        public async Task <ActionResult <UploadState> > CreateUploadAsync(CreateNewBookRequest request)
        {
            try
            {
                // creating an entirely new book
                if (request.Book != null)
                {
                    return(_uploads.CreateTask(new BookUpload
                    {
                        Book = request.Book,
                        Content = request.Content
                    }));
                }

                // adding contents to an existing book
                if (request.BookId != null)
                {
                    var book = await _books.GetAsync(request.BookId);

                    if (book == null)
                    {
                        return(ResultUtilities.NotFound <Book>(request.BookId));
                    }

                    return(_uploads.CreateTask(new BookUpload
                    {
                        BookId = book.Id,
                        Content = request.Content
                    }));
                }
            }
            catch (InvalidOperationException e)
            {
                return(BadRequest(e.Message));
            }

            throw new ArgumentException("Invalid upload state.");
        }