public async Task <PagedResults <IEnumerable <InventoryItem> > > GetInventoryProductsAsync(string token, string language, string searchTerm, int pageIndex, int itemsPerPage, string orderBy) { var productsRequestModel = new PagedRequestModelBase { SearchTerm = searchTerm, PageIndex = pageIndex, ItemsPerPage = itemsPerPage, OrderBy = orderBy }; var apiRequest = new ApiRequest <PagedRequestModelBase> { Language = language, Data = productsRequestModel, AccessToken = token, EndpointAddress = $"{this.settings.Value.InventoryUrl}{ApiConstants.Inventory.InventoryApiEndpoint}" }; var response = await this.apiInventoryService.GetAsync <ApiRequest <PagedRequestModelBase>, PagedRequestModelBase, PagedResults <IEnumerable <InventoryItem> > >(apiRequest); if (response.IsSuccessStatusCode && response.Data?.Data != null) { return(new PagedResults <IEnumerable <InventoryItem> >(response.Data.Total, response.Data.PageSize) { Data = response.Data.Data }); } if (!response.IsSuccessStatusCode) { throw new CustomException(response.Message, (int)response.StatusCode); } return(default);
public async Task <IEnumerable <Client> > GetAllClientsAsync(string token, string language) { var clientsRequestModel = new PagedRequestModelBase { PageIndex = PaginationConstants.DefaultPageIndex, ItemsPerPage = PaginationConstants.DefaultPageSize }; var apiRequest = new ApiRequest <PagedRequestModelBase> { Language = language, Data = clientsRequestModel, AccessToken = token, EndpointAddress = $"{this.settings.Value.ClientUrl}{ApiConstants.Identity.ClientsApiEndpoint}" }; var response = await this.apiClientService.GetAsync <ApiRequest <PagedRequestModelBase>, PagedRequestModelBase, PagedResults <IEnumerable <Client> > >(apiRequest); if (response.IsSuccessStatusCode && response.Data?.Data != null) { var clients = new List <Client>(); clients.AddRange(response.Data.Data); int totalPages = (int)Math.Ceiling(response.Data.Total / (double)PaginationConstants.DefaultPageSize); for (int i = PaginationConstants.SecondPage; i <= totalPages; i++) { apiRequest.Data.PageIndex = i; var nextPagesResponse = await this.apiClientService.GetAsync <ApiRequest <PagedRequestModelBase>, PagedRequestModelBase, PagedResults <IEnumerable <Client> > >(apiRequest); if (!nextPagesResponse.IsSuccessStatusCode) { throw new CustomException(response.Message, (int)response.StatusCode); } if (nextPagesResponse.IsSuccessStatusCode && nextPagesResponse.Data?.Data != null && nextPagesResponse.Data.Data.Any()) { clients.AddRange(nextPagesResponse.Data.Data); } } return(clients); } if (!response.IsSuccessStatusCode) { throw new CustomException(response.Message, (int)response.StatusCode); } return(default);
public async Task <PagedResults <IEnumerable <InventorySum> > > GetAvailbleProductsInventory( string language, int pageIndex, int itemsPerPage, string token) { var requestModel = new PagedRequestModelBase { ItemsPerPage = itemsPerPage, PageIndex = pageIndex }; var apiRequest = new ApiRequest <RequestModelBase> { Data = requestModel, Language = language, AccessToken = token, EndpointAddress = $"{this.settings.Value.InventoryUrl}{ApiConstants.Inventory.AvailableProductsApiEndpoint}" }; var response = await this.apiClientService.GetAsync <ApiRequest <RequestModelBase>, RequestModelBase, PagedResults <IEnumerable <InventorySumResponseModel> > > (apiRequest); if (response.IsSuccessStatusCode && response.Data?.Data != null) { return(new PagedResults <IEnumerable <InventorySum> >(response.Data.Total, response.Data.PageSize) { Data = response.Data.Data.OrEmptyIfNull().Select(x => new InventorySum { RestockableInDays = x.RestockableInDays, AvailableQuantity = x.AvailableQuantity, ExpectedDelivery = x.ExpectedDelivery, ProductId = x.ProductId, ProductName = x.ProductName, ProductSku = x.ProductSku, Quantity = x.Quantity }) }); } return(default);