UpdateConnectionRecord() public method

public UpdateConnectionRecord ( ConnectionRecord t ) : void
t ConnectionRecord
return void
Ejemplo n.º 1
0
        private ConnectionRecord SetupConnectionRecord()
        {
            string username = Clients.Caller.username;


            //if (string.IsNullOrEmpty(username))
            //{
            //    Clients.Caller.newMessageNoParse(new Message { AuthorName = Localization.GetString("SystemName.Text", "~/desktopmodules/DnnChat/app_localresources/" + Localization.LocalSharedResourceFile), ConnectionId = "0", MessageDate = DateTime.UtcNow, MessageId = -1, MessageText = string.Format(Localization.GetString("BadConnection.Text", "~/desktopmodules/DnnChat/app_localresources/" + Localization.LocalSharedResourceFile), "phantom") });
            //    return new ConnectionRecord();
            //}

            if (username.Trim() == "phantom" || username.Trim() == string.Empty)
            {
                username = string.Format(Localization.GetString("AnonymousUser.Text", "~/desktopmodules/DnnChat/app_localresources/" + Localization.LocalSharedResourceFile), (Users.Count + 1));
            }

            Clients.Caller.username = username;
            var userId = -1;


            if (Convert.ToInt32(Clients.Caller.userid) > 0)
            {
                userId = Convert.ToInt32(Clients.Caller.userid);
            }

            //check if the connectionrecord is already in the DB

            var crc = new ConnectionRecordController();
            var c   = crc.GetConnectionRecordByConnectionId(Context.ConnectionId);

            if (c != null)
            {
                c.UserName = username;
                crc.UpdateConnectionRecord(c);
            }
            else
            {
                c = new ConnectionRecord
                {
                    ConnectionId  = Context.ConnectionId,
                    ConnectedDate = DateTime.UtcNow,
                    ModuleId      = Convert.ToInt32(Clients.Caller.moduleid),
                    UserName      = username,
                    UserId        = userId,
                    IpAddress     = GetIpAddress()
                };

                //Users.Add(c);
                crc.CreateConnectionRecord(c);
            }
            //store the record for the connection
            return(c);
        }
Ejemplo n.º 2
0
        /*
         * This method gets called when someone updates their name. We need to store the change in the ConnectionRecord
         * We also want to send that info back to the client's state to update it there.
         */
        public string UpdateName(string userName)
        {
            var crc  = new ConnectionRecordController();
            var id   = Context.ConnectionId;
            var cr   = crc.GetConnectionRecordByConnectionId(id);
            var crId = cr.ConnectionRecordId;

            //we need to remove the original CR before updating it in the users list

            //TODO: this isn't the right search
            var roomList = Users.FindAll(c => (c.ConnectionRecordId == crId));

            foreach (UserListRecords rr in roomList)
            {
                //todo: it doesn't look like the Remove happens on the client side
                Users.Remove(rr);
                var originalName = rr.UserName;
                //set the new name on both record objects
                rr.UserName = cr.UserName = userName;

                //we need to update with the connectionrecord not UserListRecord
                crc.UpdateConnectionRecord(cr);

                Users.Add(rr);

                var nameChange = String.Format(Localization.GetString("NameChange.Text", "~/desktopmodules/DnnChat/app_localresources/" + Localization.LocalSharedResourceFile), originalName,
                                               rr.UserName);
                Clients.Group(rr.RoomId.ToString()).updateUserList(Users.FindAll(uc => (uc.RoomId == rr.RoomId)), rr.RoomId);


                var m = new Message
                {
                    ConnectionId = Context.ConnectionId,
                    MessageDate  = DateTime.UtcNow,
                    MessageText  = nameChange,
                    AuthorName   = originalName,
                    AuthorUserId = -1,
                    ModuleId     = rr.ModuleId,
                    RoomId       = rr.RoomId
                };
                new MessageController().CreateMessage(m);
                Clients.Group(rr.RoomId.ToString()).newMessage(m);

                //update message for all rooms
            }

            Clients.Caller.updateName(userName);


            //else return nothing
            return(string.Empty);
        }
Ejemplo n.º 3
0
        private void DisconnectUser(string connectionId)
        {
            if (connectionId == null)
            {
                return;
            }
            //TODO: remove user from all rooms
            var crc  = new ConnectionRecordController();
            var crrc = new ConnectionRecordRoomController();
            var id   = connectionId;
            var cr   = crc.GetConnectionRecordByConnectionId(id);

            if (cr != null)
            {
                var roomList = Users.FindAll(c => (c.ConnectionId == connectionId));
                //disconnect from each room the user was connected to
                foreach (UserListRecords rr in roomList)
                {
                    Users.Remove(rr);

                    Clients.Group(rr.RoomId.ToString()).newMessageNoParse(new Message
                    {
                        AuthorName = Localization.GetString("SystemName.Text", "~/desktopmodules/DnnChat/app_localresources/" + Localization.LocalSharedResourceFile)
                        ,
                        AuthorUserId = -1
                        ,
                        ConnectionId = "0",
                        MessageDate  = DateTime.UtcNow
                        ,
                        MessageId = -1
                        ,
                        MessageText = string.Format(Localization.GetString("Disconnected.Text", "~/desktopmodules/DnnChat/app_localresources/" + Localization.LocalSharedResourceFile)

                                                    , cr.UserName)
                        ,
                        RoomId = rr.RoomId
                    });

                    //Clients.Group(rr.RoomId.ToString()).updateUserList(Users.FindAll(c => (c.RoomId == rr.RoomId)));
                    Clients.Group(rr.RoomId.ToString()).updateUserList(Users.FindAll(uc => (uc.RoomId == rr.RoomId)), rr.RoomId);
                }
                //disconnect the connectionrecord
                cr.DisConnectedDate = DateTime.UtcNow;
                crc.UpdateConnectionRecord(cr);
            }
        }