private void ValidateProductCodes <T>(T request, DoNotCallInterfaceValidateResult result) where T : DoNotCallTransactionInput { var productCodes = new List <DoNotCallActivityProductInput>(); var blockInfoProducList = request.InformationBlockInfo.BlockProducts; var blockSalesProductList = request.SalesBlockInfo.BlockProducts; if (blockInfoProducList?.Count > 0) { productCodes.AddRange(blockInfoProducList.Select(x => new DoNotCallActivityProductInput { BlockType = Constants.ActivityProductTypeInformation, ProductCode = x.ProductCode, IsActive = x.IsActive })); } if (blockSalesProductList?.Count > 0) { productCodes.AddRange(blockSalesProductList.Select(x => new DoNotCallActivityProductInput { BlockType = Constants.ActivityProductTypeSales, ProductCode = x.ProductCode, IsActive = x.IsActive })); } if (productCodes.Count > 0) { _productFacade = new ProductFacade(); var products = _productFacade.GetActivityProductIdFromProductCodeList(productCodes); StringBuilder sb = new StringBuilder(); List <string> invalidCodes = new List <string>(); invalidCodes.AddRange(products.Where(x => !x.ProductId.HasValue).Select(x => x.ProductCode).ToList()); if (invalidCodes.Count > 0) { result.ErrorMessage = $"ProductCode not found: {string.Join(", ", invalidCodes)}"; } else { result.ActivityProducts = products; result.IsValid = true; } } }