/// <summary>
        /// This method is to get the latest approvers that have approved the rfq for each level and before the current approval level
        /// </summary>
        /// <param name="level"></param>
        /// <returns></returns>
        private List<Approvers> ApproversList(int level)
        {
            List<Approvers> approvers = new List<Approvers>();
            DataTable dt = TablesLogic.tActivityHistory.Select(TablesLogic.tActivityHistory.PreviousApprovalLevel.As("Level"),
                                                                      TablesLogic.tActivityHistory.CreatedDateTime.Max().As("CreatedDateTime"))
                                                              .Where(TablesLogic.tActivityHistory.AttachedObjectID == this.ObjectID &
                                                                     TablesLogic.tActivityHistory.TriggeringEventName == "Approve" &
                                                                     TablesLogic.tActivityHistory.PreviousApprovalLevel <= level)
                                                              .GroupBy(TablesLogic.tActivityHistory.PreviousApprovalLevel)
                                                              .OrderBy(TablesLogic.tActivityHistory.PreviousApprovalLevel.Asc);
            foreach (DataRow row in dt.Rows)
            {

                OActivityHistory ah = TablesLogic.tActivityHistory.Load(
                                        TablesLogic.tActivityHistory.PreviousApprovalLevel == Convert.ToInt16(row["Level"]) &
                                        TablesLogic.tActivityHistory.CreatedDateTime == Convert.ToDateTime(row["CreatedDateTime"]) &
                                        TablesLogic.tActivityHistory.AttachedObjectID == this.ObjectID &
                                        TablesLogic.tActivityHistory.TriggeringEventName == "Approve");
                if (ah != null)
                {
                    Approvers app = new Approvers();
                    app.ApproverName = ah.CreatedUser;
                    app.ApprovalDateTime = ah.CreatedDateTime;
                    if (ah.TriggeringEventName.Is("Approve"))
                        app.ApprovalStatus = Resources.Strings.TriggeringEventName_Approve;
                    else if (ah.TriggeringEventName.Is("Reject"))
                        app.ApprovalStatus = Resources.Strings.TriggeringEventName_Reject;
                    else if (ah.TriggeringEventName.Is("Approve_Supporter"))
                        app.ApprovalStatus = Resources.Strings.TriggeringEventName_Approve_Supporter;
                    else
                        app.ApprovalStatus = ah.TriggeringEventName;
                    app.ApprovalLevel = ah.PreviousApprovalLevel;
                    approvers.Add(app);
                }

            }
            return approvers;
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="level"></param>
        /// <returns></returns>
        private List<Approvers> GetPreviousApproversByLevel(int? level)
        {
            List<Approvers> approvers = new List<Approvers>();

            TActivityHistory actHistory = TablesLogic.tActivityHistory;
            TActivityHistory activityHistory = new TActivityHistory();
            DataTable dt = actHistory.Select
                            (actHistory.PreviousApprovalLevel,
                            actHistory.CreatedDateTime,
                            actHistory.CreatedUser,
                            actHistory.TriggeringEventName)
                            .Where
                            ((actHistory.PreviousApprovalLevel <= level |
                            actHistory.PreviousApprovalLevel == null) &
                            actHistory.AttachedObjectID == this.ObjectID &
                            (actHistory.TriggeringEventName.Like("Approve%")) &
                            actHistory.CreatedDateTime.In
                            (activityHistory.Select
                            (activityHistory.CreatedDateTime.Max().As("CreatedDateTime"))
                            .Where
                            (
                            (activityHistory.PreviousApprovalLevel == actHistory.PreviousApprovalLevel | actHistory.PreviousApprovalLevel == null) &
                            (activityHistory.TriggeringEventName.Like("Approve%")) &
                            activityHistory.AttachedObjectID == this.ObjectID)
                            .GroupBy(activityHistory.PreviousApprovalLevel, activityHistory.CreatedUser)))
                            .OrderBy(actHistory.PreviousApprovalLevel.Asc);
            
            foreach (DataRow dr in dt.Rows)
            {
                Approvers app = new Approvers();
                app.ApproverName = dr["CreatedUser"].ToString();
                app.ApprovalDateTime = Convert.ToDateTime(dr["CreatedDateTime"]);

                if (dr["TriggeringEventName"].ToString().Is("Approve"))
                    app.ApprovalStatus = Resources.Strings.TriggeringEventName_Approve;
                else if (dr["TriggeringEventName"].ToString().Is("Reject"))
                    app.ApprovalStatus = Resources.Strings.TriggeringEventName_Reject;
                else if (dr["TriggeringEventName"].ToString().Is("Approve_Supporter"))
                    app.ApprovalStatus = Resources.Strings.TriggeringEventName_Approve_Supporter;
                else
                    app.ApprovalStatus = dr["TriggeringEventName"].ToString();
                if (dr["PreviousApprovalLevel"] != DBNull.Value)
                    app.ApprovalLevel = Convert.ToInt16(dr["PreviousApprovalLevel"]);
                approvers.Add(app);
            }
            return approvers;

        }