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())));
        }
Esempio n. 2
0
        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));
            }
        }