/// <summary>
        /// Product Inquiry
        /// </summary>
        /// <param name="accountId"></param>
        /// <param name="productNumber"></param>
        /// <param name="currentPageNumber"></param>
        /// <param name="pageSize"></param>
        /// <param name="sortExpression"></param>
        /// <param name="sortDirection"></param>
        /// <returns></returns>
        public async Task <ResponseModel <List <ProductDataTransformation> > > ProductInquiry(int accountId, string productNumber, int currentPageNumber, int pageSize, string sortExpression, string sortDirection)
        {
            ResponseModel <List <ProductDataTransformation> > returnResponse = new ResponseModel <List <ProductDataTransformation> >();

            List <ProductDataTransformation> products = new List <ProductDataTransformation>();

            try
            {
                _inventoryManagementDataService.OpenConnection(_connectionStrings.PrimaryDatabaseConnectionString);

                DataGridPagingInformation dataGridPagingInformation = new DataGridPagingInformation();
                dataGridPagingInformation.CurrentPageNumber = currentPageNumber;
                dataGridPagingInformation.PageSize          = pageSize;
                dataGridPagingInformation.SortDirection     = sortDirection;
                dataGridPagingInformation.SortExpression    = sortExpression;

                List <Product> productList = await _inventoryManagementDataService.ProductInquiry(accountId, productNumber, dataGridPagingInformation);

                foreach (Product product in productList)
                {
                    ProductDataTransformation productDataTransformation = new ProductDataTransformation();
                    productDataTransformation.ProductId         = product.ProductId;
                    productDataTransformation.AverageCost       = product.AverageCost;
                    productDataTransformation.BinLocation       = product.BinLocation;
                    productDataTransformation.CommittedQuantity = product.CommittedQuantity;
                    productDataTransformation.DateCreated       = product.DateCreated;
                    productDataTransformation.Description       = product.Description;
                    productDataTransformation.OnHandQuantity    = product.OnHandQuantity;
                    productDataTransformation.OnOrderQuantity   = product.OnOrderQuantity;
                    productDataTransformation.ProductNumber     = product.ProductNumber;
                    productDataTransformation.UnitPrice         = product.UnitPrice;

                    products.Add(productDataTransformation);
                }

                returnResponse.Entity     = products;
                returnResponse.TotalRows  = dataGridPagingInformation.TotalRows;
                returnResponse.TotalPages = dataGridPagingInformation.TotalPages;

                returnResponse.ReturnStatus = true;
            }
            catch (Exception ex)
            {
                _inventoryManagementDataService.RollbackTransaction();
                returnResponse.ReturnStatus = false;
                returnResponse.ReturnMessage.Add(ex.Message);
            }
            finally
            {
                _inventoryManagementDataService.CloseConnection();
            }

            return(returnResponse);
        }