// 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)); }