public async Task <IHttpActionResult> Post(CampViewModel campViewModel) { if (await _repository.ExistsCampAsync(campViewModel.Moniker)) { ModelState.AddModelError("campViewModel.Moniker", "The moniker is already is use, please choose a new one."); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var camp = _mapper.Map <Camp>(campViewModel); await _repository.AddCampAsync(camp); await _repository.SaveChangesAsync(); var createdCampViewModel = _mapper.Map <CampViewModel>(camp); return(CreatedAtRoute("GetCamp", new { moniker = createdCampViewModel.Moniker }, createdCampViewModel)); }