示例#1
0
        // POST api/Book
        public async Task <IHttpActionResult> PostBook(BookDto bookDto)
        {
            if (ModelState.IsValid)
            {
                LanguageType bookLanguage;
                if (!Enum.TryParse <LanguageType>(bookDto.language, out bookLanguage))
                {
                    return(BadRequest("Invalid book language"));
                }
                var      userId   = User.Identity.GetUserId();
                UserBook userBook = await db.FindUserBookAsync(userId, bookDto.name, bookLanguage);

                if (userBook != null)
                {
                    ModelState.AddModelError("name", string.Format("You already have book \"{0}\"", bookDto.name));
                }
                else
                {
                    userBook = await db.CreateUserBookAsync(User.Identity.GetUserId(), bookLanguage, bookDto.name);

                    var userBookDto = new UserBookDto(userBook);
                    return(CreatedAtRoute("DefaultApi", new { id = userBook.Id },
                                          new {
                        emberDataFormat = true,
                        books = new List <dynamic> {
                            userBookDto.BookDto
                        },
                        userBooks = new List <dynamic> {
                            userBookDto
                        }
                    }));
                }
            }
            return(new EmberDSErrorsResult(this));
        }