public async Task <IActionResult> Post([FromBody] ConditionRequest model) { Condition newRecord = null; if (ModelState.IsValid) { InitUserCredentials(); Scenario scenario = await _scenarioService.Get(model.ScenarioGuid); if (scenario == null) { return(BadRequest()); } if (scenario.CompanyGuid != CompanyGuid) { return(Unauthorized()); } newRecord = new Condition { Guid = Guid.NewGuid(), UserGuid = UserGuid, CompanyGuid = CompanyGuid, CreationTime = DateTime.UtcNow, CreationUserGuid = UserGuid, ScenarioId = scenario.ScenarioId, ScenarioGuid = scenario.Guid }; newRecord = _mapper.Map(model, newRecord); try { await _conditionService.Save(newRecord); } catch (Exception e) { Log.Error(e.StackTrace); throw; } } return(CreatedAtAction(nameof(Post), _mapper.Map(newRecord, new ConditionResponse()))); }
public async Task <IActionResult> CreateCondition([FromBody] ConditionCreationDto condition, [FromHeader(Name = "Accept")] string mediaType) { if (condition == null) { return(BadRequest()); } if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } var newCondition = _mapper.Map <Condition>(condition); await _conditionService.CreateCondition(newCondition); if (!await _conditionService.Save()) { throw new Exception("Creating a condition failed on save."); } var returnedCondition = _mapper.Map <ConditionDto>(newCondition); if (mediaType == "application/json+hateoas") { var links = CreateConditionLinks(returnedCondition.Id, null); var linkedResource = returnedCondition.ShapeData(null) as IDictionary <string, object>; linkedResource.Add("links", links); return(CreatedAtRoute("GetCondition", new { id = returnedCondition.Id }, linkedResource)); } else { return(CreatedAtRoute("GetCondition", new { id = returnedCondition.Id }, returnedCondition)); } }