/// <summary>
        /// Create a new response
        /// </summary>
        /// <param name="responseObj">ResponseCreationModel</param>
        /// <returns>ResponseModel</returns>
        public async Task <ResponseModel> CreateResponse(ResponseCreationModel responseObj)
        {
            //Instantiate the actions
            InstantiateResponseActions(responseObj.ActionPlan.OpenActions);
            InstantiateResponseActions(responseObj.ActionPlan.CloseActions);

            ResponseDAO response = new ResponseDAO()
            {
                ActionPlan            = _mapper.Map <ResponseActionPlanDAOObject>(responseObj.ActionPlan),
                ResponderUserId       = responseObj.ResponderUserId,
                ResponseState         = RESPONSE_STATE_ACTIVE,
                PrimaryEventClusterId = responseObj.PrimaryEventClusterId,
                Geolocation           = _mapper.Map <GeolocationDAOObject>(responseObj.Geolocation)
            };



            response.Id = await _repoResponses.CreateItemAsync(response);

            if (_repoResponses.IsDocumentKeyNull(response))
            {
                throw new Exception($"An error occured when creating a new response");
            }

            ResponseModel output = _mapper.Map <ResponseModel>(response);

            return(output);
        }
        public async Task <IActionResult> CreateResponse([FromBody] ResponseCreationModel responseObj)
        {
            var result = await _responseDataManager.CreateResponse(responseObj);

            if (result != null)
            {
                IEventSagaReceiveResponseCreated newMessage = new EventSagaReceiveResponseCreated()
                {
                    Response     = result,
                    ActionStatus = ActionStatus.NotStarted
                };
                await _serviceBus.BusAccess.Publish(newMessage);
            }
            return(Ok(result));
        }
Example #3
0
        public async Task <ResponseModel> CreateResponse(ResponseCreationModel responseObj)
        {
            RestRequest request = await PrepareQuery("Responses", Method.POST);

            request.AddParameter("application/json", JsonConvert.SerializeObject(responseObj), ParameterType.RequestBody);
            var queryResult = await _client.ExecuteTaskAsync <ResponseModel>(request);

            if (queryResult.IsSuccessful)
            {
                return(queryResult.Data);
            }
            else
            {
                _logger.LogError($"CreateResponse: Error while adding a response: {queryResult.StatusCode}");
            }
            return(null);
        }