public async Task <bool> CompleteAction(ActionCompletionModel actionCompletionObj) { RestRequest request = await PrepareQuery("Responses/CompleteAction", Method.POST); request.AddParameter("application/json", JsonConvert.SerializeObject(actionCompletionObj), ParameterType.RequestBody); var queryResult = await _client.ExecuteTaskAsync <bool>(request); if (queryResult.IsSuccessful) { return(queryResult.Data); } else { _logger.LogError($"CompleteAction: Error while completing an action: {queryResult.StatusCode}"); } return(false); }
/// <summary> /// Complete an action and update the action object /// </summary> /// <param name="actionCompletionObj">ActionCompletionModel</param> /// <returns>true if the call succeeded</returns> public async Task <bool> CompleteAction(ActionCompletionModel actionCompletionObj) { ResponseDAO response = await _repoResponses.GetItemAsync(actionCompletionObj.ResponseId); if (response == null) { throw new Exception($"No response found that matches responseid: {actionCompletionObj.ResponseId}"); } var action = response.ActionPlan.OpenActions.FirstOrDefault(p => p.ActionId == actionCompletionObj.ActionId); if (action == null) { action = response.ActionPlan.CloseActions.FirstOrDefault(p => p.ActionId == actionCompletionObj.ActionId); } if (action != null) { action.StartDate = actionCompletionObj.StartDate; action.EndDate = actionCompletionObj.EndDate; action.Status = actionCompletionObj.Status.ToString(); action.ErrorMessage = actionCompletionObj.ErrorMessage; } else { return(false); } try { await _repoResponses.UpdateItemAsync(response); return(true); } catch (DocumentClientException e) { //Update concurrency issue, retrying if (e.StatusCode == HttpStatusCode.PreconditionFailed) { return(await CompleteAction(actionCompletionObj)); } throw e; } }
public async Task <IActionResult> CompleteAction(ActionCompletionModel actionCompletionObj) { var result = await _responseDataManager.CompleteAction(actionCompletionObj); return(Ok(result)); }