public async Task <IActionResult> GetInventoryByProductId(Guid?id) { var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim); var serviceModel = new GetInventoryByProductIdServiceModel { ProductId = id.Value, }; var validator = new GetProductByIdModelValidator(); var validationResult = await validator.ValidateAsync(serviceModel); if (validationResult.IsValid) { var inventoryProduct = await this.inventoriesService.GetInventoryByProductId(serviceModel); if (inventoryProduct != null) { var response = new InventorySumResponseModel { ProductId = inventoryProduct.ProductId, AvailableQuantity = inventoryProduct.AvailableQuantity, Quantity = inventoryProduct.Quantity, ProductName = inventoryProduct.ProductName, ProductSku = inventoryProduct.ProductSku, RestockableInDays = inventoryProduct.RestockableInDays, ExpectedDelivery = inventoryProduct.ExpectedDelivery, Details = inventoryProduct.Details.Select(item => new InventoryDetailsResponseModel { Id = item.Id, ProductId = item.ProductId, ProductName = item.ProductName, Quantity = item.Quantity, AvailableQuantity = item.AvailableQuantity, ExpectedDelivery = item.ExpectedDelivery, ProductSku = item.ProductSku, WarehouseId = item.WarehouseId, WarehouseName = item.WarehouseName, RestockableInDays = item.RestockableInDays, LastModifiedDate = item.LastModifiedDate, CreatedDate = item.CreatedDate }) }; return(this.StatusCode((int)HttpStatusCode.OK, response)); } else { return(this.StatusCode((int)HttpStatusCode.NotFound)); } } throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity); }
public async Task <InventorySumServiceModel> GetInventoryByProductId(GetInventoryByProductIdServiceModel model) { var inventory = from i in this.context.Inventory join warehouse in this.context.Warehouses on i.WarehouseId equals warehouse.Id where i.ProductId == model.ProductId.Value && i.IsActive select new { Id = i.Id, ProductId = i.ProductId, ProductName = i.ProductName, ProductSku = i.ProductSku, Quantity = i.Quantity, AvailableQuantity = i.AvailableQuantity, ExpectedDelivery = i.ExpectedDelivery, RestockableInDays = i.RestockableInDays, WarehouseId = i.WarehouseId, WarehouseName = warehouse.Name, LastModifiedDate = i.LastModifiedDate, CreatedDate = i.CreatedDate }; if (inventory.OrEmptyIfNull().Any()) { var inventorySum = new InventorySumServiceModel { ProductId = model.ProductId.Value, ProductName = inventory.FirstOrDefault().ProductName, ProductSku = inventory.FirstOrDefault().ProductSku, AvailableQuantity = inventory.Sum(x => x.AvailableQuantity), Quantity = inventory.Sum(x => x.Quantity), ExpectedDelivery = inventory.Min(x => x.ExpectedDelivery), RestockableInDays = inventory.Min(x => x.RestockableInDays), Details = inventory.Select(item => new InventoryServiceModel { Id = item.Id, ProductId = item.ProductId, ProductName = item.ProductName, ProductSku = item.ProductSku, AvailableQuantity = item.AvailableQuantity, Quantity = item.Quantity, ExpectedDelivery = item.ExpectedDelivery, WarehouseId = item.WarehouseId, WarehouseName = item.WarehouseName, RestockableInDays = item.RestockableInDays, LastModifiedDate = item.LastModifiedDate, CreatedDate = item.CreatedDate }) }; return(inventorySum); } return(default);