private List<InactivityClaimDetail> GetInactiveTestClaims()
        {
            List<InactivityClaimDetail> InactiveClaims = new List<InactivityClaimDetail>();
            var taskService = ObjectFactory.Resolve<ITaskService>();
            ILookup<ClaimHeader, ClaimDetail> inactiveClaims = ObjectFactory.Resolve<IClaimsQuery>().GetInactiveClaims(DateTime.Now, null);
            foreach (IGrouping<ClaimHeader, ClaimDetail> group in inactiveClaims)
            {
                foreach (var claimDetail in group)
                {
                    var InactiveClaim = new InactivityClaimDetail
                    {
                        ClaimHeaderID = claimDetail.ClaimHeader.ClaimHeaderID,
                        ClaimDetailID = claimDetail.ClaimDetailID,
                        CustomCode20 = claimDetail.ClaimHeader.CustomCode20,
                        ClaimReference = claimDetail.ClaimHeader.ClaimReference,
                        NameID = claimDetail.ClaimHeader.NameInvolvements.Where(o => o.NameInvolvementType == (short)StaticValues.NameInvolvementType.MainClaimHandler).Select(o => o.NameID).First(),
                        ClaimDetailReference = claimDetail.ClaimDetailReference,
                        ClaimTransactionSource = 1,
                    };

                    // Review event at Header level?
                    bool Revieweventexist = this.IsInactivityTaskAlreadyExists(claimDetail.ClaimHeader.ClaimHeaderID, this.inactivityDetectionProcess, "Claim Review", SystemComponentConstants.ClaimHeader, taskService);
                    if (!Revieweventexist)
                    {
                        // Review event at Detail level?
                        Revieweventexist = this.IsInactivityTaskAlreadyExists(claimDetail.ClaimDetailID, this.inactivityDetectionProcess, "Claim Review", SystemComponentConstants.ClaimDetail, taskService);
                    }

                    if (!Revieweventexist)
                    {
                        InactiveClaims.Add(InactiveClaim);
                    }
                }
            }

            return InactiveClaims;
        }
        /// <summary>
        /// Gets all inactive claim details based on the dates.
        /// </summary>
        /// <returns>Liat of Inactive ClaimDetails</returns>
        public static List<InactivityClaimDetail> GetInactiveClaimDetailsSP()
        {
            // Connect to the Database
            string ConnectionString = ConfigurationManager.ConnectionStrings["Config"].ConnectionString;

            int CommandTimeOut = ConfigurationManager.AppSettings["DefaultSQLCommandTimeout"] == null ? 30 : int.Parse(ConfigurationManager.AppSettings["DefaultSQLCommandTimeout"]);

            if (_Logger.IsInfoEnabled)
            {
                _Logger.Info("SQLCommandTimeout for Claim Inactivity has been set to: " + CommandTimeOut.ToString() + " seconds.");
            }

            // Get the dates for each claim detail
            Dictionary<string, DateTime[]> inactiveThresholdDates = GetInactiveThresholdDates();

            // Create our output list.
            List<InactivityClaimDetail> InactiveClaims = new List<InactivityClaimDetail>();

            SqlConnection conn = new SqlConnection(ConnectionString);

            using (var connection = new SqlConnection(ConnectionString))
            {
                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "[Claims].[AXAGetInactiveClaims]";
                    command.Parameters.Add("@ADDate", SqlDbType.DateTime);
                    command.Parameters.Add("@LIADate", SqlDbType.DateTime);
                    command.Parameters.Add("@TPIDate", SqlDbType.DateTime);
                    command.Parameters.Add("@TPPDDate", SqlDbType.DateTime);
                    command.Parameters.Add("@TPVDDate", SqlDbType.DateTime);
                    command.Parameters.Add("@ANYDate", SqlDbType.DateTime);

                    command.Parameters.Add("@Rec_ADDate", SqlDbType.DateTime);
                    command.Parameters.Add("@Rec_LIADate", SqlDbType.DateTime);
                    command.Parameters.Add("@Rec_TPIDate", SqlDbType.DateTime);
                    command.Parameters.Add("@Rec_TPPDDate", SqlDbType.DateTime);
                    command.Parameters.Add("@Rec_TPVDDate", SqlDbType.DateTime);
                    command.Parameters.Add("@Rec_ANYDate", SqlDbType.DateTime);

                    command.Parameters["@ADDate"].Value = (DateTime)inactiveThresholdDates["AD"][0];
                    command.Parameters["@LIADate"].Value = (DateTime)inactiveThresholdDates["LIA"][0];
                    command.Parameters["@TPIDate"].Value = (DateTime)inactiveThresholdDates["TPI"][0];
                    command.Parameters["@TPPDDate"].Value = (DateTime)inactiveThresholdDates["TPPD"][0];
                    command.Parameters["@TPVDDate"].Value = (DateTime)inactiveThresholdDates["TPVD"][0];
                    command.Parameters["@ANYDate"].Value = (DateTime)inactiveThresholdDates["*Any"][0];

                    command.Parameters["@Rec_ADDate"].Value = (DateTime)inactiveThresholdDates["AD"][1];
                    command.Parameters["@Rec_LIADate"].Value = (DateTime)inactiveThresholdDates["LIA"][1];
                    command.Parameters["@Rec_TPIDate"].Value = (DateTime)inactiveThresholdDates["TPI"][1];
                    command.Parameters["@Rec_TPPDDate"].Value = (DateTime)inactiveThresholdDates["TPPD"][1];
                    command.Parameters["@Rec_TPVDDate"].Value = (DateTime)inactiveThresholdDates["TPVD"][1];
                    command.Parameters["@Rec_ANYDate"].Value = (DateTime)inactiveThresholdDates["*Any"][1];

                    command.CommandType = CommandType.StoredProcedure;
                    command.CommandTimeout = CommandTimeOut;
                    connection.Open();
                    var reader = command.ExecuteReader(CommandBehavior.CloseConnection);

                    while (reader.Read())
                    {
                        var InactivityClaimDetail = new InactivityClaimDetail
                        {
                            ClaimHeaderID = Convert.ToInt32(reader["ClaimHeaderID"]),
                            ClaimDetailID = Convert.ToInt32(reader["ClaimDetailID"]),
                            CustomCode20 = Convert.ToString(reader["CustomCode20"]),
                            ClaimReference = Convert.ToString(reader["ClaimReference"]),
                            NameID = Convert.ToInt32(reader["NameID"]),
                            ClaimDetailReference = Convert.ToString(reader["ClaimDetailReference"]),
                            ClaimTransactionSource = Convert.ToInt32(reader["ClaimTransactionSource"]),
                        };

                        InactiveClaims.Add(InactivityClaimDetail);
                    }
                }
            }

            return InactiveClaims;
        }