private async Task PollBusinessCaseState()

in src/Assessment/BusinessCaseBuilder.cs [64:113]


        private async Task<AssessmentPollResponse> PollBusinessCaseState(UserInput userInputObj)
        {
            int numberOfTries = 0;
            AssessmentPollResponse pollResult = AssessmentPollResponse.Created;

            while (numberOfTries < 25)
            {
                Thread.Sleep(60000);
                try
                {
                    pollResult = await new HttpClientHelper().PollBusinessCase(userInputObj, BusinessCaseInformationObj);

                    if (pollResult == AssessmentPollResponse.Error)
                    {
                        userInputObj.LoggerObj.LogInformation($"Polling for business case {BusinessCaseInformationObj.BusinessCaseName} resulted in non-retryable error");
                        numberOfTries += 1;
                    }
                }
                catch (OperationCanceledException)
                {
                    throw;
                }
                catch (AggregateException aePollBizCase)
                {
                    string errorMessage = "";
                    foreach (var e in aePollBizCase.Flatten().InnerExceptions)
                    {
                        if (e is OperationCanceledException)
                            throw e;
                        else
                        {
                            errorMessage = errorMessage + e.Message + " ";
                        }
                    }
                    userInputObj.LoggerObj.LogWarning($"Business case {BusinessCaseInformationObj.BusinessCaseName} polling failed: {errorMessage}");
                }
                catch (Exception ex)
                {
                    userInputObj.LoggerObj.LogWarning($"Business case {BusinessCaseInformationObj.BusinessCaseName} polling failed: {ex.Message}");
                }

                if (pollResult == AssessmentPollResponse.Completed ||
                    pollResult == AssessmentPollResponse.OutDated ||
                    pollResult == AssessmentPollResponse.Invalid)
                    break;
            }

            userInputObj.LoggerObj.LogInformation($"Polling for business case {BusinessCaseInformationObj.BusinessCaseName} completed");
            return pollResult;
        }