/// <summary> /// Close a response by adding a end date. /// </summary> /// <param name="responseObj">EventSagaReceiveResponseClosed</param> /// <returns>ResponseModel</returns> public async Task <ResponseModel> CloseResponse(ResponseCloseModel responseObj) { ResponseDAO response = await _repoResponses.GetItemAsync(responseObj.ResponseId); if (response == null) { throw new Exception($"No response found that matches responseid: {responseObj.ResponseId}"); } string etag = response.ETag; response.ResponseState = RESPONSE_STATE_INACTIVE; //responseObj.State; Add for later alt states of completion response.EndDate = DateTime.UtcNow; response.ETag = etag; try { await _repoResponses.UpdateItemAsync(response); } catch (DocumentClientException e) { //Update concurrency issue, retrying if (e.StatusCode == HttpStatusCode.PreconditionFailed) { return(await CloseResponse(responseObj)); } throw e; } var output = _mapper.Map <ResponseModel>(response); return(output); }
public async Task <IActionResult> CloseResponse(ResponseCloseModel responseObj) { var result = await _responseDataManager.CloseResponse(responseObj); IEventSagaReceiveResponseClosed newMessage = new EventSagaReceiveResponseClosed() { Response = result, ActionStatus = ActionStatus.NotStarted }; await _serviceBus.BusAccess.Publish(newMessage); return(Ok(result)); }
public async Task <ResponseModel> CloseResponse(ResponseCloseModel responseObj) { RestRequest request = await PrepareQuery("Responses/Close", Method.PUT); 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($"CloseResponse: Error while closing a response: {queryResult.StatusCode}"); } return(null); }