public ApiResult <IEnumerable <MaterialAmountView> > FetchMaterials(QueryMaterialsRequest queryMaterialsRequest) { var client = new HttpClient(); var httpResult = client.GetAsync(ConfigurationManager.AppSettings["fetchMaterialsUrl"]).Result; var apiResult = httpResult.Content.ReadAsStringAsync().Result; var actualResult = JsonConvert.DeserializeObject <ApiResult <IEnumerable <PythonMaterialView> > >(apiResult); var entities = actualResult.Data ?? new List <PythonMaterialView>(); var pageSize = queryMaterialsRequest.PageSize; var pageNumber = queryMaterialsRequest.PageNumber - 1; var materialIds = queryMaterialsRequest.MaterialIds; var filteredEntities = materialIds != null && materialIds.Any() ? entities.Where(d => materialIds.Contains(d.Id)) : entities; var pagedEntities = filteredEntities.Skip(pageNumber * pageSize).Take(pageSize); var filtered = new ApiResult <IEnumerable <MaterialAmountView> >() { Errors = actualResult.Errors, Data = pagedEntities.Select(pm => new MaterialAmountView() { Capacity = pm.Attributes.Capacity, Description = pm.Attributes.Description, Id = pm.Id, Name = pm.Attributes.Name }), StatusCode = actualResult.StatusCode, Total = entities.Count() }; return(filtered); }
private MaterialAmountView FetchMaterial(int materialId) { var materialsRequest = new QueryMaterialsRequest() { PageNumber = 1, PageSize = int.MaxValue, MaterialIds = new List <int>() { materialId } }; var result = _storeService.FetchMaterials(materialsRequest).ThrowIfError(); return(result.Data?.FirstOrDefault()); }
public IHttpActionResult Read(QueryMaterialsRequest queryMaterialsRequest) { var result = _storeService.FetchMaterials(queryMaterialsRequest).ThrowIfError(); return(Ok(result)); }