/// <summary>
        /// To Check the Average & max Transaction Amount with history
        /// </summary>
        /// <param name="transAmount"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private decimal validateAvgMaxTransAmount(decimal transAmount, SearchTransactionOnFraudResponse data)
        {
            if (data.AverageTransAmount != 0 && transAmount <= data.AverageTransAmount)
            {
                return(0.02M);
            }
            else if (data.AverageTransAmount != 0 && transAmount > data.AverageTransAmount)
            {
                return(1.0M);
            }
            else if (data.AverageTransAmount == 0 && data.MaxTransAmount == 0)
            {
                return(0.5M);
            }

            return(0.1M);
        }
        public SearchTransactionOnFraudResponse SearchTransactionOnFraud(string cardNo, string transactionId, DateTime FilteringTimeOnwards, string currentIpAddress)
        {
            SearchTransactionOnFraudResponse response = new SearchTransactionOnFraudResponse();

            using (SqlCommand cmd = new SqlCommand())
            {
                con.Open();
                cmd.Connection = con;

                cmd.CommandText = "SearchTransactionOnFraud";
                cmd.CommandType = CommandType.StoredProcedure;

                SqlDataAdapter da = new SqlDataAdapter();
                DataSet        ds = new DataSet();

                cmd.Parameters.AddWithValue("@cardNo", cardNo).Direction = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("@transactionId", transactionId).Direction = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("@TransDateFilterFrom", FilteringTimeOnwards).Direction = ParameterDirection.Input;
                cmd.Parameters.AddWithValue("@IpAddress", currentIpAddress).Direction = ParameterDirection.Input;

                da = new SqlDataAdapter(cmd);
                da.Fill(ds);
                con.Close();

                var tab = ds.Tables[0];
                if (tab != null)
                {
                    var avg = Convert.ToString(tab.Rows[0]["Avg"]);
                    if (!string.IsNullOrEmpty(avg))
                    {
                        response.AverageTransAmount = decimal.Parse(avg);
                    }

                    var max = Convert.ToString(tab.Rows[0]["max"]);
                    if (!string.IsNullOrEmpty(max))
                    {
                        response.MaxTransAmount = decimal.Parse(max);
                    }
                }
                tab = ds.Tables[1];
                if (tab != null)
                {
                    var cnt = Convert.ToString(tab.Rows[0]["cnt"]);
                    if (!string.IsNullOrEmpty(cnt))
                    {
                        response.MaxTransCount = decimal.Parse(cnt);
                    }
                }

                tab = ds.Tables[2];
                if (tab != null)
                {
                    foreach (DataRow existingRow in tab.Rows)
                    {
                        var record = new Records();
                        record.IpAddress = Convert.ToString(existingRow["IPAddress"]);
                        record.Count     = int.Parse(Convert.ToString(existingRow["cnt"]));
                        response.IpLevelTransactions.Add(record);
                    }
                }

                tab = ds.Tables[3];
                if (tab != null)
                {
                    foreach (DataRow existingRow in tab.Rows)
                    {
                        response.IpFradTransactions.Add(ReadRow(existingRow));
                    }
                }
            }

            return(response);
        }