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); }