private void FillCriteriaMatch()
        {
            int _UserID = Convert.ToInt32(HttpContext.Current.User.Identity.Name);

            List <CriteriaMatch> _CriteriaMatch = new List <CriteriaMatch>();

            _CriteriaMatch = new CriteriaMatch().GetCriteriaMatch(_UserID, Convert.ToInt32(OtherUserID)).ToList();
            _CriteriaMatch = _CriteriaMatch.OrderByDescending(x => x.PointsAssigned).ToList();



            foreach (CriteriaMatch _EachMatch in _CriteriaMatch)
            {
                if (_EachMatch.CriteriaType == 9)
                {
                    //set distance range
                    string PostCodeA    = _EachMatch.OtherUser.ZipCode;
                    string PostCodeB    = _EachMatch.User.ZipCode;
                    double?DistanceFrom = Distance.BetweenTwoPostCodesInMiles(PostCodeA, PostCodeB);
                    if (DistanceFrom != null)
                    {
                        string _distance = string.Format("{0:0.00}", DistanceFrom);
                        _EachMatch.OtherUserValue = _distance + " miles.";
                    }
                    else
                    {
                        _EachMatch.OtherUserValue = "";
                    }
                }

                if (_EachMatch.UserPreferences == "")
                {
                    _EachMatch.UserPreferences = "No Answer";
                }
            }

            decimal _TotalPointsAssigned = 0;
            decimal _TotalPointsAwarded  = 0;

            foreach (var item in _CriteriaMatch)
            {
                _TotalPointsAssigned = _TotalPointsAssigned + item.PointsAssigned;
                _TotalPointsAwarded  = _TotalPointsAwarded + item.PointsAwarded;
            }


            _CriteriaMatch = _CriteriaMatch.OrderBy(x => x.CriteriaName).OrderByDescending(x => x.PointsAssigned).ToList();
            //.GroupBy(x => x.CriteriaName).OrderBy(x => x.First().CriteriaName).SelectMany(x => x).ToList();
            //
            _CriteriaMatch.Add(new CriteriaMatch {
                Criteria_id = "", CriteriaName = "", CriteriaQuestion = "", CriteriaType = 0, UserPreferences = "", OtherUserValue = "", PointsAwarded = _TotalPointsAwarded, PointsAssigned = _TotalPointsAssigned, IsMatch = true
            });



            dgCriteriaTable.DataSource = _CriteriaMatch;
            dgCriteriaTable.DataBind();


            List <CriteriaMatch> _OtherUserCriteriaMatch = new List <CriteriaMatch>();

            _OtherUserCriteriaMatch = new CriteriaMatch().GetCriteriaMatch(Convert.ToInt32(OtherUserID), _UserID).ToList();
            _OtherUserCriteriaMatch = _OtherUserCriteriaMatch.OrderByDescending(x => x.PointsAssignedByOtherUser).ToList();

            _OtherUserCriteriaMatchNew = new List <CriteriaMatch>();

            foreach (CriteriaMatch _EachMatch in _OtherUserCriteriaMatch)
            {
                if (_EachMatch.CriteriaType == 9)
                {
                    //set distance range
                    string PostCodeA    = _EachMatch.OtherUser.ZipCode;
                    string PostCodeB    = _EachMatch.User.ZipCode;
                    double?DistanceFrom = Distance.BetweenTwoPostCodesInMiles(PostCodeA, PostCodeB);
                    if (DistanceFrom != null)
                    {
                        string _distance = string.Format("{0:0.00}", DistanceFrom);
                        _EachMatch.OtherUserValue = _distance + " miles.";
                    }
                    else
                    {
                        _EachMatch.OtherUserValue = "";
                    }
                }
                if (_EachMatch.OtherUserValue == "")
                {
                    _EachMatch.OtherUserValue = "No Answer";
                }

                bool _Isadd = false;

                if (_EachMatch.CriteriaName.ToLower().IndexOf("race/ethnicity") != -1)
                {
                    _Isadd = true;
                }
                if (_EachMatch.CriteriaName.ToLower().IndexOf("hair color") != -1)
                {
                    _Isadd = true;
                }
                if (_EachMatch.CriteriaName.ToLower().IndexOf("eye color") != -1)
                {
                    _Isadd = true;
                }
                if (_EachMatch.CriteriaName.ToLower().IndexOf("salary") != -1 || _EachMatch.CriteriaName.ToLower().IndexOf("income") != -1)
                {
                    _Isadd = true;
                }
                if (!_Isadd)
                {
                    _OtherUserCriteriaMatchNew.Add(_EachMatch);
                }
            }

            decimal _TotalPointsAssigned2 = 0;
            decimal _TotalPointsAwarded2  = 0;

            foreach (var item in _OtherUserCriteriaMatch)
            {
                _TotalPointsAssigned2 = _TotalPointsAssigned2 + item.PointsAssigned;
                _TotalPointsAwarded2  = _TotalPointsAwarded2 + item.PointsAwarded;
            }

            _OtherUserCriteriaMatchNew = _OtherUserCriteriaMatchNew.OrderBy(x => x.CriteriaName).OrderByDescending(x => x.PointsAssigned).ToList();
            _OtherUserCriteriaMatchNew.Add(new CriteriaMatch {
                Criteria_id = "", CriteriaName = "", CriteriaQuestion = "", CriteriaType = 0, UserPreferences = "", OtherUserValue = "", PointsAwarded = _TotalPointsAwarded2, PointsAssigned = _TotalPointsAssigned2, IsMatch = true, ShowMatch = true
            });

            dgOtherUserCriteriaTable.DataSource = _OtherUserCriteriaMatchNew;
            dgOtherUserCriteriaTable.DataBind();

            lblMutualMatch.InnerText = "Mutual Match: " + ((_TotalPointsAwarded + _TotalPointsAwarded2) / 2).ToString() + "%";
        }