public MemberDetailViewModel UpdateMemberDetail(MemberDetailViewModel memberDetail)
        {

            return _connection.DbPath.ExecStoredProcedure<MemberDetailViewModel>("UpdateMemberDetail",
                new
                {
                    memberDetail.MemberId,
                    memberDetail.PasswordHash,
                    memberDetail.PasswordSalt,
                    memberDetail.NickName
                }).FirstOrDefault();
        }
        public ActionResult MemberProfile(MemberDetailViewModel memberDetailViewModel)
        {
           
            
            memberDetailViewModel.MemberId = GetSessionUser.Id;

            var result = _memberBusiness.UpdateMemberDetail(memberDetailViewModel);

            if (!result.Success)
            {
                 
                ModelState.AddModelError("errorMemberProfile", result.Message);
                memberDetailViewModel.Error = Errors(GetModelErrors());


            }

            return Json(memberDetailViewModel);

        }
        public ResultSet<MemberDetailViewModel> UpdateMemberDetail(MemberDetailViewModel memberDetail)
        {
            var result = new ResultSet<MemberDetailViewModel>();
            result.Object = memberDetail;
            var member = GetMemberByMemberId(memberDetail.MemberId);
            if (member.Success)
            {
                DateTime dateTime;
                #region Basic Fields Validations

                if (string.IsNullOrEmpty(memberDetail.NickName) || !ValidationUtils.UserNameIsValid(memberDetail.NickName))
                {
                    result.Message = "Invalid nickname"; 
                    return result;
                }

                else if ((!string.IsNullOrEmpty(memberDetail.CurrentPassword) && memberDetail.CurrentPassword.Length > 16))
                {
                    result.Message = "Invalid password(maximum current password length can be 16 character)"; 
                    return result;
                }

                else if ((!string.IsNullOrEmpty(memberDetail.NewPassword) && memberDetail.NewPassword.Length > 16))
                {
                    result.Message = "Invalid password(maximum new password length can be 16 character)";
                    return result;
                }

                else if ((!string.IsNullOrEmpty(memberDetail.NewPasswordMatch) && memberDetail.NewPasswordMatch.Length > 16))
                {
                    result.Message = "Invalid password(maximum password repeat length can be 16 character)";
                }
 
                #endregion

                #region This fields are exists?
                /*************This nickname is exists***************************************/
                var _existMember = _memberRepository.GetMemberByNickname(memberDetail.NickName);
                if (_existMember != null && _existMember.Id != member.Object.Id)
                {
                    result.Message = "This nick name is in use"; 
                    return result;
                }

                

                #endregion

                
 

                #region Password Operations
                else if (!string.IsNullOrEmpty(memberDetail.NewPassword) && string.IsNullOrEmpty(memberDetail.NewPasswordMatch))
                {
                    result.Message = "New password and repeat did not match"; 
                    return result;
                }

                else if ((!string.IsNullOrEmpty(memberDetail.NewPassword) || !string.IsNullOrEmpty(memberDetail.NewPasswordMatch)) && (!string.IsNullOrEmpty(member.Object.PasswordHash))
                    && string.IsNullOrEmpty(memberDetail.CurrentPassword))
                {
                    result.Message = "Please enter current password"; 
                    return result;
                }

                else if (!string.IsNullOrEmpty(memberDetail.NewPassword) && !string.IsNullOrEmpty(memberDetail.NewPasswordMatch))
                {
                    if (memberDetail.NewPassword != memberDetail.NewPasswordMatch)
                    {
                        result.Message  = "New password and repeat did not match";
                        return result;
                    }

                    string _hash = string.Empty, _salt = string.Empty;

                    if (!string.IsNullOrEmpty(member.Object.PasswordHash))
                        if (!_hashProvider.VerifyHashString(memberDetail.CurrentPassword, member.Object.PasswordHash, member.Object.PasswordSalt))
                        {
                            result.Message = "Current password is wrong"; 
                            return result;
                        }


                    _hashProvider.GetHashAndSaltString(memberDetail.NewPassword, out _hash, out _salt);
                    memberDetail.PasswordHash = _hash;
                    memberDetail.PasswordSalt = _salt;
                }
                #endregion

               

                
                var tempMemberDetail = _memberRepository.UpdateMemberDetail(memberDetail);

                if (tempMemberDetail != null)
                {
                    result.Success = true;
                    result.Object = tempMemberDetail;
                    result.Message = "Your informations are updated";
                }
            }
            return result;
        }