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;
                }
            }
        }