Exemple #1
0
        protected virtual async Task <List <T> > GetAllPageDataResultsAsync <T>(IPageDataRequest pageDataRequest, Func <IPageDataRequest,
                                                                                                                        Task <IHttpCallResultCGHT <IPageDataT <IList <T> > > > > getMethodToRun, bool throwExceptionOnFailureStatusCode = false)
        {
            List <T> retVal = new List <T>();
            IHttpCallResultCGHT <IPageDataT <IList <T> > > response = null;
            IPageDataRequest currentPageDataRequest = new PageDataRequest(pageDataRequest.FilterCriteria, pageDataRequest.Sort, pageDataRequest.Page, pageDataRequest.PageSize);

            while (response == null ||
                   (response.IsSuccessStatusCode == true && currentPageDataRequest.Page <= response.Data.TotalPages))
            {
                response = await getMethodToRun(currentPageDataRequest);

                if (response.IsSuccessStatusCode && response.Data != null)
                {
                    retVal.AddRange(response.Data.Data);
                }
                else
                {
                    string serializedCurrentPageDataRequest = JsonConvert.SerializeObject(currentPageDataRequest);
                    string msg = $"{nameof(GetAllPageDataResultsAsync)} call resulted in error - status code: {response?.StatusCode}; reason: {response?.ReasonPhrase}. CurrentPageDataRequest: {serializedCurrentPageDataRequest}";

                    Log.Error(message: msg, logMessageType: LogMessageType.Instance.Exception_WebApiClient, ex: response?.Exception,
                              httpResponseStatusCode: (int)response?.StatusCode, url: null);

                    if (throwExceptionOnFailureStatusCode == true)
                    {
                        throw new ApplicationException(msg, response?.Exception);
                    }
                }

                currentPageDataRequest.Page += 1;
            }

            return(retVal);
        }
        protected virtual async Task <List <T> > GetAllPageDataResultsAsync <T>(IPageDataRequest pageDataRequest, Func <IPageDataRequest,
                                                                                                                        Task <IHttpCallResultCGHT <IPageDataT <IList <T> > > > > getMethodToRun, bool throwExceptionOnFailureStatusCode = false)
        {
            List <T> retVal = new List <T>();
            IHttpCallResultCGHT <IPageDataT <IList <T> > > response = null;
            IPageDataRequest currentPageDataRequest = new PageDataRequest(pageDataRequest.FilterCriteria, pageDataRequest.Sort, pageDataRequest.Page, pageDataRequest.PageSize);

            while (response == null ||
                   (response.IsSuccessStatusCode == true && currentPageDataRequest.Page <= response.Data.TotalPages))
            {
                response = await getMethodToRun(currentPageDataRequest);

                if (response.IsSuccessStatusCode && response.Data != null)
                {
                    retVal.AddRange(response.Data.Data);
                }
                else
                {
                    string serializedCurrentPageDataRequest = JsonConvert.SerializeObject(currentPageDataRequest);
                    string msg = $"{nameof(GetAllPageDataResultsAsync)} call resulted in error - status code: {response?.StatusCode}; reason: {response?.ReasonPhrase}. CurrentPageDataRequest: {serializedCurrentPageDataRequest}";

                    Log.LogWarning(eventId: (int)coreEnums.EventId.Warn_WebApiClient,
                                   exception: response?.Exception,
                                   message: "Failure during WebApiClient to Web API GetAllPage operation with {ReturnTypeName}. ReasonPhrase: {ReasonPhrase}  HttpResponseStatusCode: {HttpResponseStatusCode} using CurrentPageDataRequest: {CurrentPageDataRequest}",
                                   retVal?.GetType().Name,
                                   response?.ReasonPhrase,
                                   (int)response.StatusCode,
                                   serializedCurrentPageDataRequest);

                    if (throwExceptionOnFailureStatusCode == true)
                    {
                        throw new ApplicationException(msg, response?.Exception);
                    }
                }

                currentPageDataRequest.Page += 1;
            }

            return(retVal);
        }