protected void uiButtonChangePass_Click(object sender, EventArgs e)
        {
            Member user = new Member();
            if (Request.QueryString["rc"] != null)
            {
                string querystring = Helper.General.DecryptString(Request.QueryString["rc"].ToString());
                string[] allkeys = querystring.Split('&');

                if (!(allkeys.Length < 2))
                {
                    int id = Convert.ToInt32(allkeys[0].Substring(4));
                    string mail = allkeys[1].Substring(6);

                    user.LoadByPrimaryKey(id);
                    if (user.Email == mail)
                    {
                        MembershipUser _user = Membership.GetUser(user.UserName);
                        if (_user.ChangePassword(_user.GetPassword(user.Answer), Password.Text))
                            ErrorMessage.Text = "تم تغيير كلمة السر بنجاح.";
                        else
                            ErrorMessage.Text = "حدث خطأ . من فضلك حاول مرة أخرى.";
                        ClearFields();
                    }
                    else
                        ErrorMessage.Text = "حدث خطأ . من فضلك حاول مرة أخرى.";
                }
                else
                    ErrorMessage.Text = "حدث خطأ . من فضلك حاول مرة أخرى.";

                ErrorMessage.Visible = true;
            }
            else
                Response.Redirect("default.aspx");
        }
        public void addToRoom(int memberID, int roomid)
        {
            Groups.Add(Context.ConnectionId, roomid.ToString());
            try
            {
                Member member = new Member();
                member.LoadByPrimaryKey(memberID);
                bool isHidden = member.Status == (int)Helper.Enums.MemberStatus.Offline &&
                    Roles.IsUserInRole(member.Name, Helper.Enums.MemberRoles.InvisibleInRoom.ToString());

                RoomMember roomMember = new RoomMember();
                if (!roomMember.LoadByPrimaryKey(memberID, roomid))
                {
                    roomMember.AddNew();
                    roomMember.MemberID = memberID;
                    roomMember.RoomID = roomid;
                }
                roomMember.LastJoinDate = DateTime.Now;
                roomMember.InRoom = !isHidden;
                Room room = new Room();
                room.LoadByPrimaryKey(roomid);
                if (!room.IsColumnNull("CreatedBy"))
                {
                    if (room.CreatedBy == roomMember.MemberID)
                        roomMember.RoomMemberLevelID = (int)Helper.Enums.RoomMemberLevel.Owner;
                }
                roomMember.Save();

                Helper.ChatMember chatMember = roomMember.LoadWithSettings(roomid, roomMember.MemberID, roomMember.MemberID, null).FirstOrDefault();

                if (!isHidden)
                    Clients.Group(roomid.ToString()).addNewMember(roomid.ToString(), chatMember);
                if (roomMember.RoomMemberLevelID > (int)Helper.Enums.RoomMemberLevel.Visitor)
                    Groups.Add(Context.ConnectionId, GetRoomAdminGroupName(roomid));

                BLL.MemberLog log = new BLL.MemberLog();
                Helper.Enums.LogType lgType = Helper.Enums.LogType.EnterRoom;
                if (isHidden)
                    lgType = Helper.Enums.LogType.EnterRoomHidden;
                log.AddNew(memberID, new BLL.Log.EnterRoom() { Type = lgType, RoomID = roomid, RoomName = room.Name }, null, roomid);

                RoomMember onlineroomMember = new RoomMember();
                onlineroomMember.GetAllOnlineMembersByRoomID(roomid);
                Clients.All.updateExistingCount(roomid, onlineroomMember.RowCount);

                var item = ConnectedUsers.FirstOrDefault(m => m.MemberID == memberID);
                if (item == null)
                {
                    var newMember = new Helper.SignalRUser { ConnectionId = Context.ConnectionId, MemberName = member.Name, MemberID = member.MemberID, ProfilePic = member.ProfilePic, MemberTypeSpecID = member.MemberType.MemberTypeSpecDuration.MemberTypeSpecID };
                    ConnectedUsers.Add(newMember);
                }
            }
            catch (Exception ex)
            {

            }
        }
        protected void uiLinkButtonConfirm_Click(object sender, EventArgs e)
        {
            MembershipUser user = Membership.GetUser();

            if (user.PasswordQuestion == uiDropDownListQuestion.SelectedValue && Member.CurrentMember.Answer == uiTextBoxAnswer.Text.Trim())
            {
                if (!string.IsNullOrEmpty(uiHiddenFieldFriendID.Value))
                {
                    try
                    {
                        int points = Convert.ToInt32(uiHiddenFieldPoints.Value);
                        if (Member.CurrentMember.Credit_Point < points)
                        {
                            ClientScript.RegisterStartupScript(this.GetType(), "Error3", @"$(document).ready(function () { notify('error', 'حدث خطأ . رصيدك الحالى لا يسمح لإتمام الشحن.'); });", true);
                            return;
                        }

                        Member ToMember = new Member();
                        ToMember.LoadByPrimaryKey(Convert.ToInt32(uiHiddenFieldFriendID.Value));

                        ToMember.Credit_Point = ToMember.Credit_Point + points;
                        Member.CurrentMember.Credit_Point -= points;
                        ToMember.Save();
                        Member.CurrentMember.Save();

                        ClientScript.RegisterStartupScript(this.GetType(), "Success1", @"$(document).ready(function () { notify('success', 'تم تحويل النقاط بنجاح.'); });", true);

                        // logging
                        BLL.MemberLog log = new BLL.MemberLog();
                        log.AddNew(Member.CurrentMemberID, new BLL.Log.RechargePoints() { FromMemberName=BLL.Member.CurrentMember.Name,ToMemberName = ToMember.Name, Points = points }, ToMember.MemberID, null);

                        LoadBalance();
                        uiHiddenFieldPrice.Value = "";
                        uiHiddenFieldPoints.Value = "";
                        uiHiddenFieldFriendID.Value = "";
                    }
                    catch (Exception ex)
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "Error11", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أعد المحاولة.'); });", true);
                    }
                }
                else
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "Error4", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أعد المحاولة.'); });", true);
                }
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Error5", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك تأكد من السؤال والإجابة السرى.'); });", true);
                return;
            }
        }
        protected void uiLinkButtonCreateTempRoom_Click(object sender, EventArgs e)
        {
            if (Request.IsAuthenticated)
            {
                if (uiCheckBoxListFriends.Items.Cast<ListItem>().Where(i => i.Selected).Count() > 0)
                {
                    IHubContext _Ncontext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
                    Member member = new Member();
                    member.GetMemberByUserId(new Guid(Membership.GetUser().ProviderUserKey.ToString()));
                    Room room = new Room();
                    room.AddNew();

                    room.EnableCam = true;
                    room.EnableMic = true;
                    room.RowStatusID = 1;
                    room.CreatedDate = DateTime.Now;
                    room.Save();

                    room.Name = "غرفة مؤقتة - " + room.RoomID.ToString();
                    room.Save();

                    Session["TempRoomCreate"] = room.RoomID;

                    // notify friends with new temp room

                    for (int i = 0; i < uiCheckBoxListFriends.Items.Count; i++)
                    {
                        if (uiCheckBoxListFriends.Items[i].Selected)
                        {
                            Member temp = new Member();
                            temp.LoadByPrimaryKey(Convert.ToInt32(uiCheckBoxListFriends.Items[i].Value));
                            MembershipUser u = Membership.GetUser(temp.UserID);
                            _Ncontext.Clients.Group(u.UserName).inviteToTempRoom(room.RoomID, member.Name);
                        }
                    }

                    IHubContext _Rcontext = GlobalHost.ConnectionManager.GetHubContext<ChatRoomHub>();
                    _Rcontext.Clients.Group(member.UserName).openTempRoom(room.RoomID);
                    //ClientScript.RegisterStartupScript(this.GetType(), "initTempRoom", "self.parent.location='/home.aspx';", true);
                    //Response.Redirect("home.aspx");
                }
                else
                {

                }
            }
        }
 private void BindRoomInfo()
 {
     clearFields();
     BLL.Room room = new BLL.Room();
     room.LoadByPrimaryKey(RoomID);
     if (!room.IsColumnNull("CreatedDate"))
         uiLabelCreatedDate.Text = Helper.Date.ToString(room.CreatedDate);
     BLL.Member creator = new BLL.Member ();
     if(!room.IsColumnNull("CreatedBy"))
     {
         creator.LoadByPrimaryKey(room.CreatedBy);
         uiLabelCreator.Text = creator.UserName;
         uiLabelName.Text = room.Name;
         loadAdminTable();
         uiGridViewAdmins.DataSource = AdminsTable;
         uiGridViewAdmins.DataBind();
     }
 }
        protected void uiLinkButtonConfirm_Click(object sender, EventArgs e)
        {
            MembershipUser user = Membership.GetUser();

            if (user.PasswordQuestion == uiDropDownListQuestion.SelectedValue && BLL.Member.CurrentMember.Answer == uiTextBoxAnswer.Text.Trim())
            {
                if (uiHiddenFieldFriendID.Value != "")
                {

                    if (string.IsNullOrEmpty(uiTextBoxAmount.Text))
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "Error2", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أدخل قيمة التحويل.'); });", true);
                        return;
                    }
                    try
                    {
                        int points = Convert.ToInt32(uiTextBoxAmount.Text);
                        if (BLL.Member.CurrentMember.Credit_Point < points)
                        {
                            ClientScript.RegisterStartupScript(this.GetType(), "Error3", @"$(document).ready(function () { notify('error', 'حدث خطأ . رصيدك الحالى لا يسمح لإتمام التحويل.'); });", true);
                            return;
                        }

                        Member ToMember = new Member();
                        if (uiHiddenFieldFriendID.Value != "0" && uiHiddenFieldFriendID.Value != "")
                        {
                            ToMember.LoadByPrimaryKey(Convert.ToInt32(uiHiddenFieldFriendID.Value));
                        }
                        else
                        {
                            ClientScript.RegisterStartupScript(this.GetType(), "Error7", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أختر صديق للتحويل.'); });", true);
                            return;
                        }

                        ToMember.Credit_Point += points;
                        BLL.Member.CurrentMember.Credit_Point -= points;
                        ToMember.Save();
                        BLL.Member.CurrentMember.Save();

                        BLL.Message msg = new BLL.Message();
                        msg.AddNew();
                        msg.Body = string.Format(GetLocalResourceObject("ConfirmMsgBody").ToString(),BLL.Member.CurrentMember.UserName, points.ToString());
                        msg.SenderID = BLL.Member.CurrentMemberID;
                        msg.Subject = GetLocalResourceObject("ConfirmMsgSubject").ToString();
                        msg.ToMembers = ToMember.UserName;
                        msg.Save();

                        MemberMessage memberMsg = new MemberMessage();
                        memberMsg.AddNew();
                        memberMsg.MemberID = ToMember.MemberID;
                        memberMsg.MessageID = msg.ID;
                        memberMsg.Save();

                        NotificationHub notifications = new NotificationHub();
                        notifications.SendMailNotifications(ToMember.MemberID);

                        IHubContext roomHub = GlobalHost.ConnectionManager.GetHubContext<ChatRoomHub>();
                        roomHub.Clients.Group(ToMember.UserName).updateBalance(ToMember.Credit_Point);

                        ClientScript.RegisterStartupScript(this.GetType(), "Success1", @"$(document).ready(function () { notify('success', 'تم تحويل النقاط بنجاح.'); });", true);

                        // logging
                        BLL.MemberLog log = new BLL.MemberLog();
                        log.AddNew(BLL.Member.CurrentMemberID, new BLL.Log.TransferPoints() { FromMemberName=BLL.Member.CurrentMember.Name, ToMemberName = ToMember.Name, Points = points }, ToMember.MemberID, null);

                        LoadBalance();
                        uiTextBoxAmount.Text = "";
                    }
                    catch (Exception ex)
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "Error11", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أعد المحاولة.'); });", true);
                    }
                }
                else
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "Error7", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أختر صديق للتحويل.'); });", true);
                }
            }
            else
            {
                ClientScript.RegisterStartupScript(this.GetType(), "Error5", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك تأكد من السؤال والإجابة السرى.'); });", true);
                return;
            }
        }
        protected void uiLinkButtonConfirm_Click(object sender, EventArgs e)
        {
            MembershipUser user = Membership.GetUser();
            if (user.PasswordQuestion == uiDropDownListQuestion.SelectedValue && BLL.Member.CurrentMember.Answer == uiTextBoxAnswer.Text.Trim())
            {
                if (!String.IsNullOrEmpty(hdnMember.Value))
                {
                    Member upgrademember = new Member();
                    upgrademember.LoadByPrimaryKey(Convert.ToInt32(hdnMember.Value));

                    try
                    {
                        int durationID = Convert.ToInt32(hdnDuration.Value);
                        int specID = Convert.ToInt32(hdnSpec.Value);
                        BLL.MemberTypeSpecDuration bllMemberTypeSpecDuration = new MemberTypeSpecDuration();
                        bllMemberTypeSpecDuration.Where.TypeDurationID.Value = durationID;
                        bllMemberTypeSpecDuration.Where.MemberTypeSpecID.Value = specID;
                        bllMemberTypeSpecDuration.Query.Load();
                        int points = bllMemberTypeSpecDuration.Points;

                        if (BLL.Member.CurrentMember.Credit_Point < points)
                        {
                            Page.ClientScript.RegisterStartupScript(this.GetType(), "Error3", @"$(document).ready(function () { notify('error', 'حدث خطأ . رصيدك الحالى لا يسمح لإتمام العملية.'); });", true);
                            return;
                        }

                        BLL.Member.CurrentMember.Credit_Point -= points;
                        BLL.Member.CurrentMember.Save();

                        //delete old records
                        BLL.MemberType bllMemberType = new MemberType();
                        bllMemberType.DeleteMemberTypes(upgrademember.MemberID);

                        upgrademember.MemberType.MemberTypeSpecDurationID = bllMemberTypeSpecDuration.ID;
                        upgrademember.MemberType.CreateBy = BLL.Member.CurrentMember.MemberID;
                        upgrademember.MemberType.StartDate = DateTime.Now;
                        upgrademember.MemberType.EndDate = DateTime.Now.AddMonths(bllMemberTypeSpecDuration.TypeDuration.MonthesNumber);
                        upgrademember.MemberType.Save();

                        Page.ClientScript.RegisterStartupScript(this.GetType(), "Success1", @"$(document).ready(function () { notify('success', 'تم ترقية الإسم بنجاح.'); });", true);

                        BLL.MemberLog log = new BLL.MemberLog();
                        log.AddNew(BLL.Member.CurrentMemberID, new BLL.Log.ChangeMemberType() { MemberName = upgrademember.Name, NewTypeName = upgrademember.MemberType.MemberTypeSpecDuration.MemberTypeSpec.Name, NewTypeExpiryDate = upgrademember.MemberType.EndDate, Points = points }, upgrademember.MemberID, null);

                        lblPoints.Text = BLL.Member.CurrentMember.Credit_Point.ToString();

                        NotifyMember(upgrademember.MemberID, bllMemberTypeSpecDuration.MemberTypeSpecID);

                        LoadBalance();
                    }
                    catch (Exception ex)
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "Error11", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أعد المحاولة.'); });", true);
                    }
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "Error4", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك أعد المحاولة.'); });", true);
                }
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "Error5", @"$(document).ready(function () { notify('error', 'حدث خطأ . من فضلك تأكد من السؤال والإجابة السرى.'); });", true);
                return;
            }
        }
        protected void uiLinkButtonAddFriend_Click(object sender, EventArgs e)
        {
            Member member = new Member();
            member.GetMemberByUserId(new Guid(Membership.GetUser().ProviderUserKey.ToString()));

            try
            {
                MemberFriend newfriend = new MemberFriend();
                newfriend.AddNew();
                newfriend.MemberID = member.MemberID;
                newfriend.FriendID = Convert.ToInt32(uiHiddenFieldFriendID.Value);
                newfriend.Save();

                Member memberfriend = new Member();
                memberfriend.LoadByPrimaryKey(newfriend.FriendID);

                // logging
                BLL.MemberLog log = new BLL.MemberLog();
                log.AddNew(BLL.Member.CurrentMemberID, new BLL.Log.AddFriend() { FriendID = newfriend.FriendID, FriendName = memberfriend.Name }, newfriend.FriendID, null);
            }
            catch (Exception ex)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "ErrorAddingFriend", "$(document).ready(function (){ notify('error','خطأ. حدث خطأ . من فضلك أعد المحاولة مرة أخرى أو تأكد من وجود الصديق فى قائمة الأصدقاء.');}); ", true);
            }
        }
        public void updateMemberOnlineStatus(Helper.SignalRUser connectedUser, bool isOnline)
        {
            Member bllMember = new Member();
            if (bllMember.LoadByPrimaryKey(connectedUser.MemberID))
            {
                bllMember.IsOnLine = isOnline;
                //bllMember.Status = isConnected ? 1 : 4;
                bllMember.Save();

                Clients.All.updateMember(bllMember.MemberID, "IsOnline", isOnline);
            }
        }
        public void updateRoomMemberSettings(int roomid, int memberid, bool canWrite, bool canAccessMic, bool canAccessCam, string banDays)
        {
            try
            {
                RoomMemberBanning banning = new RoomMemberBanning();
                if (!banning.LoadByPrimaryKey(roomid, memberid))
                {
                    banning.AddNew();
                    banning.RoomID = roomid;
                    banning.MemberID = memberid;
                }
                if (String.IsNullOrEmpty(banDays))
                {
                    banning.MarkAsDeleted();
                    try
                    {
                        if (banning.RowState() != System.Data.DataRowState.Added)
                        {
                            //deleted ban from member
                            BLL.Member member = new Member();
                            member.LoadByPrimaryKey(memberid);
                            BLL.MemberLog log = new BLL.MemberLog();
                            log.AddNew(BLL.Member.CurrentMemberID, new BLL.Log.UnBanRoomMember() { MemberName = member.Name }, member.MemberID, roomid);
                        }
                    }
                    catch { }
                }
                else
                {
                    int days = Convert.ToInt32(banDays);
                    if (days == 0)
                    {
                        banning.SetColumnNull(RoomMemberBanning.ColumnNames.EndDate);
                    }
                    else
                    {
                        banning.EndDate = DateTime.Now.AddDays(days);
                    }

                    try
                    {
                        BLL.Member member = new Member();
                        member.LoadByPrimaryKey(memberid);
                        BLL.MemberLog log = new BLL.MemberLog();
                        BLL.Log.BanRoomMember infoLog = new BLL.Log.BanRoomMember() { MemberName = member.Name };
                        if (days > 0)
                        {
                            infoLog.BanningDays = days;
                            infoLog.EndDate = banning.EndDate;
                        }
                        log.AddNew(BLL.Member.CurrentMemberID, infoLog, member.MemberID, roomid);
                    }
                    catch { }
                }
                banning.Save();
                //room member settings
                RoomMember rm = new RoomMember();
                if (!rm.LoadByPrimaryKey(memberid, roomid))
                {
                    rm.AddNew();
                    rm.RoomID = roomid;
                    rm.MemberID = memberid;
                }
                rm.CanAccessCam = canAccessCam;
                rm.CanAccessMic = canAccessMic;
                rm.CanWrite = canWrite;
                if (!String.IsNullOrEmpty(banDays))
                    rm.InRoom = false;
                rm.Save();
                //update clients
                Clients.Group(roomid.ToString()).updateRoomMemberSettings(roomid, memberid, canWrite, canAccessMic, canAccessCam, banDays);

            }
            catch { }
        }
 public void sendPrivateMessage(int toUserId, string message, string profileImg, int MemberTypeID)
 {
     message = message.Replace("<br>", "");
     var toUser = ConnectedUsers.FirstOrDefault(x => x.MemberID == toUserId);
     var fromUser = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);
     if (toUser != null && fromUser != null)
     {
         var resultMsg = new Helper.ChatMessage()
         {
             FromID = fromUser.MemberID,
             ToID = toUser.MemberID,
             FromName = fromUser.MemberName,
             Message = message,
             MessageDate = DateTime.Now,
             FromProfileImg = profileImg,
             MemberTypeID = MemberTypeID
         };
         // send to
         Clients.Client(toUser.ConnectionId).getPrivateMessage(fromUser.MemberID, resultMsg);
         // send to caller user
         Clients.Caller.getPrivateMessage(toUserId, resultMsg);
     }
     else
     {
         Member friend = new Member();
         friend.LoadByPrimaryKey(toUserId);
         var resultMsg = new Helper.ChatMessage()
         {
             FromName = "",
             Message = "  المستخدم الذى تحاول التحدث معه الان غير موجود اونلاين" + "&nbsp;<a onclick=\"OpenPopup(\'../popuppages/Messages_popup.aspx?t=createmsg&u=" + friend.MemberID.ToString() + "&un=" + friend.UserName + "\',\'الرسائل\');\" class='SendMsg' target='_blank' style='cursor:pointer;'>يمكنك ان ترسل له رساله الان</a>",
             MessageDate = DateTime.Now,
             FromProfileImg = profileImg,
             FromTypeSpecID = 1
         };
         Clients.Caller.getPrivateMessage(toUserId, resultMsg);
     }
 }
 /// <summary>
 /// Eskat or Cancel Eskat of room member
 /// </summary>
 /// <param name="rid"></param>
 /// <param name="isMarked"></param>
 /// <param name="memberid"></param>
 public void ToggleUserMark(int rid, bool isMarked, int memberid)
 {
     if (isMarked)
         Clients.Group(rid.ToString()).UserMarked(rid, memberid);
     else
         Clients.Group(rid.ToString()).UserUnMarked(rid, memberid);
     try
     {
         BLL.Member member = new Member();
         member.LoadByPrimaryKey(memberid);
         BLL.MemberLog log = new BLL.MemberLog();
         if (isMarked)
         {
             log.AddNew(BLL.Member.CurrentMemberID, new BLL.Log.MarkRoomMember() { MemberID = memberid, MemberName = member.Name }, memberid, rid);
         }
         else
         {
             log.AddNew(BLL.Member.CurrentMemberID, new BLL.Log.UnMarkRoomMember() { MemberID = memberid, MemberName = member.Name }, memberid, rid);
         }
         RoomMember rm = new RoomMember();
         if (rm.LoadByPrimaryKey(memberid, rid))
         {
             rm.IsMarked = isMarked;
             rm.CanAccessMic = !isMarked;
             rm.Save();
         }
     }
     catch { }
 }
        protected void uiLinkButtonSaveMember_Click(object sender, EventArgs e)
        {
            int type = Convert.ToInt32(uiRadioButtonListTypes.SelectedValue);
            BLL.MemberTypeSpecDuration bllSpec = new MemberTypeSpecDuration();
            if (!bllSpec.LoadByMemberTypeSpecID(type))
                return;
            int val = 0;//Convert.ToInt32(bllSpec.Points);
            if (BLL.Member.CurrentMember.Credit_Point < val)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "balanceError", @"$(document).ready(function () { notify('error', 'حدث خطأ . رصيدك الحالى لا يسمح لإتمام العملية.'); });", true);
                return;
            }

            Member member = new Member();
            if (!member.LoadByPrimaryKey(Convert.ToInt32(hdnMember.Value)))
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "NoacountError", @"$(document).ready(function () { notify('error', 'حدث خطأ . لا يوجد حساب بهذا الإسم.'); });", true);
                return;
            }

            BLL.MembershipBLL membership = new BLL.MembershipBLL();
            string msg;
            string oldname = member.Name;
            if (!string.IsNullOrEmpty(uiTextBoxNewName.Text))
            {
                if (membership.ChangeUsername(oldname, uiTextBoxNewName.Text, Membership.ApplicationName, out msg))
                {
                    member.Name = uiTextBoxNewName.Text;
                    member.Save();
                }
                else
                {
                    uiTextBoxNewName.Text = oldname;
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "changeName", @"$(document).ready(function () { notify('error', 'حدث خطأ ." + msg + ".'); });", true);
                    return;
                }
            }
            member.MemberType.MemberTypeSpecDurationID = bllSpec.ID;
            member.MemberType.CreateBy = BLL.Member.CurrentMember.MemberID;
            member.MemberType.StartDate = DateTime.Now;
            member.MemberType.EndDate = DateTime.Now.AddMonths(Convert.ToInt32(uiDropDownListTypeDuration.SelectedValue));
            member.MemberType.OldName = oldname;
            member.MemberType.Save();

            Page.ClientScript.RegisterStartupScript(this.GetType(), "Success1", @"$(document).ready(function () { notify('success', 'تم ترقية الإسم بنجاح.'); });", true);

            uiPanelUpgradeSuccess.Visible = true;
            uiPanelUpgrade.Visible = false;
            clearUpgradeFields();

            BLL.MemberLog log = new BLL.MemberLog();
            log.AddNew(BLL.Member.CurrentMemberID, new BLL.Log.ChangeMemberType() { MemberName = member.Name,OldName=oldname, NewTypeName = member.MemberType.MemberTypeSpecDuration.MemberTypeSpec.Name, NewTypeExpiryDate = member.MemberType.EndDate, Points = val }, member.MemberID, null);

            Chat2Connect.usercontrols.MemberTypes.NotifyMember(member.MemberID, type);
            Chat2Connect.usercontrols.MemberTypes.NotifyMember(member.MemberID, member.UserName);
        }
        public bool SelectProfileImg(int mid, int pid)
        {
            Member member = new Member();
            member.LoadByPrimaryKey(mid);

            MemberPic pic = new MemberPic();
            pic.LoadByPrimaryKey(pid);
            member.ProfilePic = pic.PicPath;
            member.Save();
            return true;
        }
        public void AddRemoveFriend(int mid, int fid, bool isFriend)
        {
            try
            {
                BLL.MemberFriend friend = new MemberFriend();
                Member friendMember = new Member();
                friendMember.LoadByPrimaryKey(fid);

                if (!isFriend)
                {
                    friend.AddNew();
                    friend.MemberID = mid;
                    friend.FriendID = fid;
                    friend.Save();
                    // logging
                    BLL.MemberLog log = new BLL.MemberLog();
                    log.AddNew(mid, new BLL.Log.AddFriend() { FriendID = fid, FriendName = friendMember.Name }, fid, null);

                    var resultFriend = new
                    {
                        MemberID = friendMember.MemberID,
                        Name = friendMember.Name,
                        TypeSpecID = friendMember.MemberType.MemberTypeSpecDuration.MemberTypeSpecID,
                        ProfilePic = (friendMember.IsColumnNull(Member.ColumnNames.ProfilePic) ? "images/defaultavatar.png" : friendMember.ProfilePic),
                        IsOnline = friendMember.IsOnLine,
                        StatusMsg = friendMember.s_StatusMsg,
                        Status = Helper.EnumUtil.ParseEnum<Helper.Enums.MemberStatus>(Helper.TypeConverter.ToInt32(friendMember.s_Status)).ToString().ToLower(),
                        IsSelected = false
                    };
                    SetContentResult(resultFriend);
                }
                else
                {
                    friend.DeleteFriend(mid, fid);
                    // logging
                    BLL.MemberLog log = new BLL.MemberLog();
                    log.AddNew(mid, new BLL.Log.DeleteFriend() { FriendID = fid, FriendName = friendMember.Name }, fid, null);
                }

            }
            catch { }
        }
        private void LoadProfile()
        {
            uiPanelHideProfile.Visible = false;
            uipanelProfile.Visible = true;
            if (userId != 0)
            {
                Member member = new Member();
                member.LoadByPrimaryKey(userId);

                // load settings
                MemberSetting setting = new MemberSetting();
                setting.GetMemberSettingsByMemberID(member.MemberID);
                if ((setting.RowCount > 0))
                {
                    if (!setting.IsColumnNull("HideProfile"))
                    {
                        if (setting.HideProfile)
                        {
                            uiPanelHideProfile.Visible = true;
                            uipanelProfile.Visible = false;
                        }
                    }
                    if (!setting.IsColumnNull("HidePics"))
                        uiPanelPics.Visible = !setting.HidePics;
                }

                uiLabelName.Text = member.Name;

                if (!member.IsColumnNull("ReligionID"))
                {
                    Religion religion = new Religion();
                    religion.LoadByPrimaryKey(member.ReligionID);
                    uiLabelReligion.Text = religion.Name;
                }
                uiLabelJob.Text = member.JobTitle;
                if (!member.IsColumnNull("BirthDate"))
                {
                    uiLabelDOP.Text = member.BirthDate.ToString("yyyy/MM/dd");
                }
                if (!member.IsColumnNull("CountryID"))
                {
                    Country country = new Country();
                    if (member.CountryID != 0)
                    {
                        country.LoadByPrimaryKey(member.CountryID);
                        uiLabelCountry.Text = country.Name;
                    }
                }
                uiLabelBestFood.Text = member.BestFood;
                uiLabelBestCar.Text = member.BestCar;
                uiLabelBestTeam.Text = member.BestTeam;
                uiLabelBestCountry.Text = member.BestCounrty;
                uiHyperLinkFb.NavigateUrl = member.FbURL;
                uiHyperLinktwitter.NavigateUrl = member.TURL;
                uiHyperLinkyt.NavigateUrl = member.YtURL;

                uiLabelCreatedDate.Text = Membership.GetUser().CreationDate.ToString("yyyy/MM/dd");
                if (member.MemberType.MemberTypeSpecDurationID != Helper.Defaults.MemberTypeSpecDurationID)
                {
                    uiLabelAccountType.Text = member.MemberType.MemberTypeSpecDuration.MemberTypeSpec.Name;
                    uiLabelAccountType.Attributes.Add("style", "background-color:" + member.MemberType.MemberTypeSpecDuration.MemberTypeSpec.Color + ";color:#fff;");

                    if (!member.MemberType.IsColumnNull("EndDate"))
                        uiLabelTypeExpiry.Text = member.MemberType.EndDate.ToString("yyyy/MM/dd");
                }
                if (!member.IsColumnNull("ProfilePic"))
                {
                    uiImageMain.ImageUrl = "images.aspx?Image=" + member.ProfilePic;
                }
                ///////////////////////////////
                uiLabelInterests.Text = member.Interests;

                ProfileLike likes = new ProfileLike();
                likes.GetLikeCount(member.MemberID);
                uiLabelLikeCount.Text = likes.RowCount.ToString();

                likes.LoadByPrimaryKey(Member.CurrentMemberID, member.MemberID);
                uiLinkButtonLike.OnClientClick = "return ToggleProfileLike(" + Member.CurrentMemberID.ToString() + ", " + member.MemberID + ")";
                uiLinkButtonUnLike.OnClientClick = "return ToggleProfileLike(" + Member.CurrentMemberID.ToString() + ", " + member.MemberID + ")";
                if (likes.RowCount > 0)
                {
                    uiLinkButtonUnLike.Attributes.Add("style","display:inline;padding:0px;");
                    uiLinkButtonLike.Attributes.Add("style", "display:none;padding:0px;");

                }
                else
                {
                    uiLinkButtonUnLike.Attributes.Add("style", "display:none;padding:0px;");
                    uiLinkButtonLike.Attributes.Add("style", "display:inline;padding:0px;");
                }

                MemberPic pics = new MemberPic();
                pics.GetMemberPicsByMemberID(member.MemberID);
                uiRepeaterPhotos.DataSource = pics.DefaultView;
                uiRepeaterPhotos.DataBind();
            }
            else
            {
                Response.Redirect("home.aspx");
            }
        }
        public bool MarkMembers(string rid, bool CanWrite, bool mark)
        {
            Room room = new Room();
            room.LoadByPrimaryKey(Convert.ToInt32(rid));

            RoomMember members = new RoomMember();
            members.GetAllMembersByRoomID(room.RoomID);

            try
            {
                for (int i = 0; i < members.RowCount; i++)
                {
                    members.IsMarked = mark;
                    members.CanWrite = CanWrite;
                    members.Save();

                    Member m = new Member();
                    m.LoadByPrimaryKey(members.MemberID);
                    MembershipUser u = Membership.GetUser(m.UserID);

                    IHubContext _Rcontext = GlobalHost.ConnectionManager.GetHubContext<ChatRoomHub>();
                    if (mark)
                        _Rcontext.Clients.Group(room.RoomID.ToString()).UserMarked(room.RoomID, members.MemberID, CanWrite);
                    else
                        _Rcontext.Clients.Group(room.RoomID.ToString()).UserUnMarked(room.RoomID, members.MemberID, CanWrite);
                    members.MoveNext();
                }
            }
            catch (Exception ex)
            {
                return false;
            }
            return true;
        }
        public bool InviteFriends(string memberName, int roomID, string roomName, string friendsIDs)
        {
            string[] ToMembers = friendsIDs.Split(',');

            foreach (string item in ToMembers)
            {
                if (!string.IsNullOrEmpty(item))
                {
                    int recipientID = Convert.ToInt32(item);
                    Member m = new Member();
                    m.LoadByPrimaryKey(recipientID);
                    MembershipUser u = Membership.GetUser(m.UserID);

                    IHubContext _Ncontext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
                    _Ncontext.Clients.Group(u.UserName).InviteToRoomByFriend(roomID, roomName, memberName);
                }
            }

            return true;
        }
        public void HandleClose()
        {
            Member user = new Member();
            user.GetMemberByUserId(new Guid(Membership.GetUser().ProviderUserKey.ToString()));
            user.IsOnLine = false;
            user.Status = 4;
            user.Save();

            RoomMember rooms = new RoomMember();
            rooms.GetAllRoomsByMemberID(user.MemberID);
            if (rooms.RowCount > 0)
            {
                rooms.InRoom = false;
                if (rooms.HasCam)
                {
                    rooms.HasCam = false;
                    Room room = new Room();
                    room.LoadByPrimaryKey(rooms.RoomID);
                    room.OpenCams -= 1;
                    if (room.OpenCams < 0)
                        room.OpenCams = 0;
                    room.Save();
                    IHubContext _Rcontext = GlobalHost.ConnectionManager.GetHubContext<ChatRoomHub>();
                    _Rcontext.Clients.Group(rooms.RoomID.ToString()).HideCamLink(rooms.MemberID, rooms.RoomID);
                }
                rooms.Save();

            }

            MemberFriend friends = new MemberFriend();
            friends.GetAllMemberFriends(user.MemberID);
            for (int i = 0; i < friends.RowCount; i++)
            {
                Member temp = new Member();
                temp.LoadByPrimaryKey(friends.FriendID);
                MembershipUser u = Membership.GetUser(temp.UserID);
                IHubContext _Ncontext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
                _Ncontext.Clients.Group(u.UserName).friendStatusChanged(user.MemberID, user.StatusMsg, "offline");
            }

            // clear all session vars
            Session.Abandon();
        }
        public void GetMemberNode(int mid)
        {
            Member member = new Member();
            member.LoadByPrimaryKey(mid);

            string memberdiv = @"{5}$$$<div class='Altodd friend-link' id='usernode-{0}' data-name='{1}'>
                                    <img src='{3}' id='user-{0}' class='friendpic {5}'/>
                                    <a href='#' class='type_{2}'>{1}
                                    </a>
                            <div class='clearfix' style='height: 1px;'></div>
                            <span id='user-status-{0}'>
                             {4}
                                </span>
                            <div class='clearfix' style='height: 1px;'></div>
                                <div class='friendSubMenu' >
                                <div class='popup-menu profileMenu' data-for='usernode-{0}' >
                                        <div class='col-lg-3 pull-right'>
                                        <div class=' thumbnail'>
                                            <img src='{3}'/>

                                        </div>
                                            <div class='clearfix' style='height:1px;'>
                                            </div>
                                            <div style='text-align:right;'>
                                            {1}
                                                </div>
                                            </div>
                                        <div class='col-lg-9 pull-right'>
                                        <div class='col-lg-6 pull-right'>
                                            <ul>
                                                <li><a class='jslink' onclick=" + "\"addChatRoom({0}, " + "'{1}', 'Private', false, false, 1, true," + member.MemberType.MemberTypeSpecDuration.MemberTypeSpec.ID.ToString() + " , true,'" + (member.IsColumnNull("ProfilePic") ? "images/defaultavatar.png" : member.ProfilePic) + "');\"" + @"><span class='awesome'>&#xf0e6;</span> محادثة خاصة</a></li>
                                                <li><a class='jslink' onclick=" + "\"OpenPopup('../userprofile.aspx?uid={0}','حساب صديق');\"" + @" target='_blank'><span class='awesome'>&#xf08e;</span> عرض البروفايل</a></li>
                                                <li><a class='jslink' onclick=" + "\"removeFriend(" + BLL.Member.CurrentMemberID.ToString() + "," + member.MemberID.ToString() + ");\"" + @"><span class='awesome'>&#xf00d;</span> حذف من الأصدقاء</a></li>
                                            </ul>
                                        </div>
                                        <div class='col-lg-6 pull-right'>
                                            <ul>
                                                <li><a class='jslink openGiftModal' data-mid='{0}'><span class='awesome'>&#xf06b;</span> أرسل هدية</a></li>
                                                <li><a class='jslink' onclick=" + "\"OpenPopup('../popuppages/Messages_popup.aspx?t=createmsg&u={0}&un={1}','الرسائل');\"" + @" target='_blank'><span class='awesome'>&#xf003;</span> أرسل رسالة</a></li>
                                                <li><a class='jslink'><span class='awesome'>&#xf05e;</span> حجب</a></li>

                                            </ul>
                                        </div>
                                      </div>
                                        <div class='clear' style='height: 1px;'></div>
                                    </div>
                                    </div>
                                </div>";

            string result = string.Format(memberdiv, member.MemberID, member.UserName, member.MemberType.MemberTypeSpecDurationID, string.IsNullOrEmpty(member.ProfilePic) ? "images/defaultavatar.png" : member.ProfilePic, string.IsNullOrEmpty(member.StatusMsg) ? "&nbsp;" : member.StatusMsg, (member.IsColumnNull("IsOnLine") ? false : member.IsOnLine) ? "online" : "offline");
            HttpContext.Current.Response.ContentType = "application/json; charset=utf-8";
            result = Newtonsoft.Json.JsonConvert.SerializeObject(result);
            HttpContext.Current.Response.Write(result);
            //return result;
        }
 public bool ClearProfileImg(int mid)
 {
     Member member = new Member();
     member.LoadByPrimaryKey(mid);
     member.ProfilePic = "/images/defaultavatar.png";
     member.Save();
     return true;
 }