Exemplo n.º 1
0
        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));
        }