public async Task <IActionResult> GetAvailableProductsInventories( int pageIndex, int itemsPerPage) { var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim); var serviceModel = new GetInventoriesServiceModel { Language = CultureInfo.CurrentCulture.Name, PageIndex = pageIndex, ItemsPerPage = itemsPerPage, OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value) }; var inventories = await this.inventoriesService.GetAvailableProductsInventoriesAsync(serviceModel); if (inventories != null) { var response = new PagedResults <IEnumerable <InventorySumResponseModel> >(inventories.Total, inventories.PageSize) { Data = inventories.Data.OrEmptyIfNull().Select(inventoryProduct => new InventorySumResponseModel { ProductId = inventoryProduct.ProductId, AvailableQuantity = inventoryProduct.AvailableQuantity, Quantity = inventoryProduct.Quantity, ProductName = inventoryProduct.ProductName, ProductSku = inventoryProduct.ProductSku, RestockableInDays = inventoryProduct.RestockableInDays, ExpectedDelivery = inventoryProduct.ExpectedDelivery }) }; return(this.StatusCode((int)HttpStatusCode.OK, response)); } throw new CustomException("", (int)HttpStatusCode.UnprocessableEntity); }
public async Task <IActionResult> Get(string ids, string searchTerm, int pageIndex, int itemsPerPage, string orderBy) { var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim); var inventoryIds = ids.ToEnumerableGuidIds(); if (inventoryIds != null) { var serviceModel = new GetInventoriesByIdsServiceModel { Ids = inventoryIds, PageIndex = pageIndex, ItemsPerPage = itemsPerPage, OrderBy = orderBy, Language = CultureInfo.CurrentCulture.Name }; var validator = new GetInventoriesByIdsModelValidator(); var validationResult = await validator.ValidateAsync(serviceModel); if (validationResult.IsValid) { var inventories = await this.inventoriesService.GetByIdsAsync(serviceModel); if (inventories != null) { var response = new PagedResults <IEnumerable <InventoryResponseModel> >(inventories.Total, inventories.PageSize) { Data = inventories.Data.OrEmptyIfNull().Select(x => new InventoryResponseModel { Id = x.Id, ProductId = x.ProductId, ProductName = x.ProductName, ProductSku = x.ProductSku, WarehouseId = x.WarehouseId, WarehouseName = x.WarehouseName, AvailableQuantity = x.AvailableQuantity, LastModifiedDate = x.LastModifiedDate, CreatedDate = x.CreatedDate }) }; return(this.StatusCode((int)HttpStatusCode.OK, response)); } } throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity); } else { var serviceModel = new GetInventoriesServiceModel { Language = CultureInfo.CurrentCulture.Name, SearchTerm = searchTerm, PageIndex = pageIndex, ItemsPerPage = itemsPerPage, OrderBy = orderBy, OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value) }; var inventories = await this.inventoriesService.GetAsync(serviceModel); if (inventories != null) { var response = new PagedResults <IEnumerable <InventoryResponseModel> >(inventories.Total, inventories.PageSize) { Data = inventories.Data.OrEmptyIfNull().Select(x => new InventoryResponseModel { Id = x.Id, WarehouseId = x.WarehouseId, WarehouseName = x.WarehouseName, ProductId = x.ProductId, ProductName = x.ProductName, ProductSku = x.ProductSku, Quantity = x.Quantity, AvailableQuantity = x.AvailableQuantity, LastModifiedDate = x.LastModifiedDate, CreatedDate = x.CreatedDate }) }; return(this.StatusCode((int)HttpStatusCode.OK, response)); } throw new CustomException("", (int)HttpStatusCode.UnprocessableEntity); } }
public async Task <PagedResults <IEnumerable <InventoryServiceModel> > > GetAsync(GetInventoriesServiceModel model) { var inventories = from c in this.context.Inventory join warehouse in this.context.Warehouses on c.WarehouseId equals warehouse.Id where c.SellerId == model.OrganisationId.Value && c.IsActive select new InventoryServiceModel { Id = c.Id, ProductId = c.ProductId, ProductName = c.ProductName, ProductSku = c.ProductSku, WarehouseId = c.WarehouseId, WarehouseName = warehouse.Name, Quantity = c.Quantity, AvailableQuantity = c.AvailableQuantity.Value, RestockableInDays = c.RestockableInDays, ExpectedDelivery = c.ExpectedDelivery, LastModifiedDate = c.LastModifiedDate, CreatedDate = c.CreatedDate }; if (!string.IsNullOrWhiteSpace(model.SearchTerm)) { inventories = inventories.Where(x => x.ProductName.StartsWith(model.SearchTerm) || x.WarehouseName.StartsWith(model.SearchTerm) || x.ProductSku.StartsWith(model.SearchTerm)); } inventories = inventories.ApplySort(model.OrderBy); return(inventories.PagedIndex(new Pagination(inventories.Count(), model.ItemsPerPage), model.PageIndex)); }