示例#1
0
        public void AddToRoom(string roomName)
        {
            using (var db = new RouteExtremeDbContext())
            {
                var user = db.Users
                    .Include(u => u.ChatRooms)
                    .SingleOrDefault(u => u.UserName == Context.User.Identity.Name);

                var room = db.ChatRooms.FirstOrDefault(x => x.Name == roomName);

                if (room != null)
                {
                    db.Users.Attach(user);
                    room.Users.Add(user);

                }
                else
                {
                    var newRoom = new ChatRoom
                    {
                        Name = roomName,
                        ConnectionId = Context.ConnectionId
                    };

                    newRoom.Users.Add(user);
                    db.ChatRooms.Add(newRoom);
                }

                db.SaveChanges();
                Groups.Add(Context.ConnectionId, roomName);
            }
        }
示例#2
0
        public void AddToRoom(string roomName)
        {
            using (var db = new RouteExtremeDbContext())
            {
                var user = db.Users
                           .Include(u => u.ChatRooms)
                           .SingleOrDefault(u => u.UserName == Context.User.Identity.Name);

                var room = db.ChatRooms.FirstOrDefault(x => x.Name == roomName);

                if (room != null)
                {
                    db.Users.Attach(user);
                    room.Users.Add(user);
                }
                else
                {
                    var newRoom = new ChatRoom
                    {
                        Name         = roomName,
                        ConnectionId = Context.ConnectionId
                    };

                    newRoom.Users.Add(user);
                    db.ChatRooms.Add(newRoom);
                }

                db.SaveChanges();
                Groups.Add(Context.ConnectionId, roomName);
            }
        }
示例#3
0
        public void RemoveFromRoom(string roomName)
        {
            using (var db = new RouteExtremeDbContext())
            {
                var room = db.ChatRooms.FirstOrDefault(x => x.Name == roomName);
                var user = db.Users
                           .Include(u => u.ChatRooms)
                           .SingleOrDefault(u => u.UserName == Context.User.Identity.Name);

                if (room != null)
                {
                    db.Users.Attach(user);
                    room.Users.Remove(user);
                    db.SaveChanges();

                    if (room.Users.Count == 0)
                    {
                        Groups.Remove(Context.ConnectionId, roomName);
                    }
                }
            }
        }
示例#4
0
        public void SendMessage(string message, string room)
        {
            using (var db = new RouteExtremeDbContext())
            {
                var currentRoom = db.ChatRooms
                                  .Where(x => x.Name == room)
                                  .FirstOrDefault();

                var user = currentRoom.Users
                           .FirstOrDefault(x => x.UserName == this.Context.User.Identity.Name);

                var msg = new ChatMessage
                {
                    AuthorId = user.Id,
                    Message  = message.Trim()
                };

                currentRoom.Messages.Add(msg);
                db.SaveChanges();

                Clients.Group(room).SendPrivateMessage(currentRoom.ConnectionId, Context.User.Identity.Name, message);
            }
        }
示例#5
0
        public void SendMessage(string message, string room)
        {
            using (var db = new RouteExtremeDbContext())
            {
                var currentRoom = db.ChatRooms
                                              .Where(x => x.Name == room)
                                              .FirstOrDefault();

                var user = currentRoom.Users
                                            .FirstOrDefault(x => x.UserName == this.Context.User.Identity.Name);

                var msg = new ChatMessage
                {
                    AuthorId = user.Id,
                    Message = message.Trim()
                };

                currentRoom.Messages.Add(msg);
                db.SaveChanges();

                Clients.Group(room).SendPrivateMessage(currentRoom.ConnectionId, Context.User.Identity.Name, message);
            }
        }
示例#6
0
        public void RemoveFromRoom(string roomName)
        {
            using (var db = new RouteExtremeDbContext())
            {
                var room = db.ChatRooms.FirstOrDefault(x => x.Name == roomName);
                var user = db.Users
                   .Include(u => u.ChatRooms)
                   .SingleOrDefault(u => u.UserName == Context.User.Identity.Name);

                if (room != null)
                {
                    db.Users.Attach(user);
                    room.Users.Remove(user);
                    db.SaveChanges();

                    if (room.Users.Count == 0)
                    {
                        Groups.Remove(Context.ConnectionId, roomName);
                    }
                }
            }
        }