Ejemplo n.º 1
0
        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);
Ejemplo n.º 2
0
        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);
Ejemplo n.º 3
0
        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);