public async Task <IHttpActionResult> Post(string moniker, TalkViewModel viewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var camp = await _repository.GetCampAsync(moniker); var speaker = await _repository.GetSpeakerAsync(viewModel.Speaker.Id); var talk = _mapper.Map <Talk>(viewModel); talk.Camp = camp; talk.Speaker = speaker; await _repository.AddTalkAsync(talk); await _repository.SaveChangesAsync(); var createdTalkViewModel = _mapper.Map <TalkViewModel>(talk); return(CreatedAtRoute("GetTalk", new { moniker = camp.Moniker, id = createdTalkViewModel.Id }, createdTalkViewModel)); }