示例#1
0
        private Room CreateRoom(User sender, User reciver)
        {
            var senderUserRoom = new UserRoom
            {
                User = sender
            };

            var reciverUserRoom = new UserRoom
            {
                User = reciver
            };

            var room = new Room
            {
                Id        = Guid.NewGuid(),
                RoomUsers = new List <UserRoom>()
                {
                    senderUserRoom,
                    reciverUserRoom
                }
            };

            _context.Rooms.Add(room);

            return(room);
        }
示例#2
0
 public void Delete(UserRoom userRoom)
 {
     if (userRoom != null)
     {
         _context.UserRooms.Remove(userRoom);
         _context.SaveChanges();
     }
 }
示例#3
0
        public IActionResult LeaveRoom()
        {
            int roomid = (int)HttpContext.Session.GetInt32("RoomID");
            int userid = (int)HttpContext.Session.GetInt32("Userid");

            UserRoom delete = _context.UserRooms.Where(ur => ur.RoomID == roomid && ur.UserID == userid).FirstOrDefault();

            _context.UserRooms.Remove(delete);
            _context.SaveChanges();

            return(RedirectToAction("Dashboard", "Users"));
        }
示例#4
0
        public bool AddToRoom(UserRoom userRoom)
        {
            int membercount = _db.UserRooms.Count(x => x.Guid == userRoom.Guid);

            if (membercount > 50)
            {
                return(false);
            }

            _db.UserRooms.Add(userRoom);
            return(Save());
        }
示例#5
0
文件: Rooms.cs 项目: ringe/JoMAR
        /// <summary>
        /// Find a private room for two users.
        /// </summary>
        /// <param name="user1">First user's Profile</param>
        /// <param name="user2">Second user's Profile</param>
        /// <param name="db">JodADataContext</param>
        /// <returns></returns>
        public static ChatRoom Private(Profile user1, Profile user2, JodADataContext db)
        {
            // Possible names of private rooms between these users.
            String A = user1.CellPhone + user2.CellPhone;
            String B = user2.CellPhone + user1.CellPhone;

            // No rooms with oneself
            if (A == B) return null;

            // Select rooms where name is A or B and the room is private, not public and with only two users
            List<ChatRoom> rooms = (from r in db.ChatRooms
                                     where (r.Name == A || r.Name == B && r.isPrivate && !r.isPublic && r.UserRooms.Count == 2)
                                     select r).ToList();

            ChatRoom newRoom;
            // Return private room, create if necessary
            if (rooms.Count == 0)
            {
                // Prepare new private room
                newRoom = new ChatRoom();
                newRoom.UserID = user1.UserId;
                newRoom.RoomID = Guid.NewGuid();
                newRoom.isPrivate = true;
                newRoom.Name = A;

                // Insert new room
                db.ChatRooms.InsertOnSubmit(newRoom);

                // Join user 1 to room
                UserRoom nr = new UserRoom();
                nr.UserID = user1.UserId;
                nr.RoomID = newRoom.RoomID;

                // Join user 2 to room
                UserRoom nr2 = new UserRoom();
                nr2.UserID = user2.UserId;
                nr2.RoomID = newRoom.RoomID;

                // Insert user_room relationsships
                db.UserRooms.InsertOnSubmit(nr);
                db.UserRooms.InsertOnSubmit(nr2);

                // Submit changes to DB
                db.SubmitChanges();

                return newRoom;
            }
            else return rooms.First();
        }
示例#6
0
        internal override IPromise <Nothing> Process(PlayerHandle sender, ChatManager server)
        {
            var room = new UserRoom
            {
                Identifier       = this.identifier,
                OwnerId          = sender.Id,
                OwnerName        = sender.Name,
                Name             = this.userRoomService.CleanupName(this.name),
                Type             = this.type,
                Access           = this.accessType,
                SlowmodeInterval = this.config.LocalChatIntermessageInterval,
            };

            return(this.userRoomService.OpenRoom(room));
        }
        public IActionResult AddRemove([FromBody] GuidDto addremoveDto)
        {
            if (!ModelState.IsValid || addremoveDto == null)
            {
                return(BadRequest(ModelState));
            }

            var identity = HttpContext.User.Identity as ClaimsIdentity;
            IEnumerable <Claim> claim = identity.Claims;

            var idClaim = claim.Where(x => x.Type == ClaimTypes.Name)
                          .FirstOrDefault().Value;

            if (_roomRepo.RoomExists(addremoveDto.Guid))
            {
                UserRoom objUserRoom = new UserRoom();

                objUserRoom.Guid = addremoveDto.Guid;
                objUserRoom.Id   = Convert.ToInt32(idClaim);

                if (_roomRepo.MemberExists(objUserRoom))
                {
                    if (_roomRepo.DeleteFromRoom(objUserRoom))
                    {
                        return(StatusCode(201));
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
                else
                {
                    if (_roomRepo.AddToRoom(objUserRoom))
                    {
                        return(StatusCode(201));
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
            }
            else
            {
                return(BadRequest());
            }
        }
示例#8
0
        public IActionResult JoinRoom(string RoomKey)
        {
            // Get user ID
            int    userid   = (int)HttpContext.Session.GetInt32("Userid");
            string username = HttpContext.Session.GetString("Username");

            // Check if the code introduced actually matches with any room
            Room room = _context.Rooms.Where(r => r.RoomKey.Equals(RoomKey)).FirstOrDefault();

            if (room != null)
            {
                List <UserRoom> userRoom = _context.UserRooms.Where(ur => ur.UserID == userid && ur.RoomID == room.RoomID).ToList();
                if (userRoom.Count() == 0)
                {
                    HttpContext.Session.SetInt32("RoomID", room.RoomID);
                    HttpContext.Session.SetString("RoomName", room.Nome);
                    // Create new UserRoom and save it on db
                    UserRoom ur = new UserRoom {
                        UserID = userid, RoomID = room.RoomID, UserTypeID = 3
                    };
                    _context.UserRooms.Add(ur);
                    _context.SaveChanges();

                    // Update ViewBag and trigger the room view
                    ViewBag.RoomName = room.Nome;
                    ViewBag.UserName = username;
                    ViewBag.UserID   = userid;
                    ViewBag.Room_key = room.RoomKey;

                    return(RedirectToAction("EnterRoom", new { id = room.RoomID }));
                }
            }

            // If it exists and the user doesnt belongs there add the user to the room


            TempData["Message"] = " Oops, código de acesso incorrecto !";


            return(RedirectToAction("Dashboard", "Users", null));
        }
示例#9
0
        public UserRoom Create(User user, Room room, bool owner)
        {
            var userRoom = new UserRoom()
            {
                User  = user,
                Room  = room,
                Owner = owner
            };

            if (!_context.UserRooms.Any(x => x.UserId == user.Id && x.RoomId == room.Id))
            {
                _context.UserRooms.Add(userRoom);
                _context.SaveChanges();
            }
            else
            {
                throw new ApplicationException(Properties.resultMessages.UserRoomExists);
            }

            return(userRoom);
        }
示例#10
0
文件: ChatModels.cs 项目: ringe/JoMAR
        /// <summary>
        /// Is the given user a member in this room?
        /// </summary>
        /// <param name="user">user id</param>
        /// <param name="db">JodADataContext</param>
        /// <returns>true/false</returns>
        public bool IsMember(Guid user, JodADataContext db)
        {
            // See if user is a member already
            foreach (aspnet_User u in Users)
                if (u.UserId == user) return true;

            if (Private) // Private room
                return false;
            else
            {
                UserRoom r = new UserRoom();
                r.UserID = user;
                r.RoomID = RoomID;
                db.UserRooms.InsertOnSubmit(r);
                db.SubmitChanges();
                return true;
            }
        }
示例#11
0
        public ActionResult Private(FormCollection collection)
        {
            JodADataContext db = new JodADataContext();
            aspnet_User newMember = (from p in db.aspnet_Users
                                where p.UserId.ToString() == collection["SelectedValue"]
                                select p).First();
            ChatRoom room = (from p in db.ChatRooms
                                where p.RoomID.ToString() == collection["item.RoomID"]
                                select p).First();
            aspnet_User user = (from p in db.aspnet_Users
                                where p.UserName == User.Identity.Name
                                select p).First();

            if (room.UserID != user.UserId)
            {
                Session["jomarmessage"] = "You can't add users to a room you don't own.";
                return Redirect(Url.Action("Private", "Rooms"));
            }

            List<Guid> mmm = new List<Guid>();
            foreach (var s in room.UserRooms)
                mmm.Add(s.UserID);

            if (!mmm.Contains(newMember.UserId)) {
                UserRoom ur = new UserRoom();
                ur.RoomID = room.RoomID;
                ur.UserID = newMember.UserId;
                db.UserRooms.InsertOnSubmit(ur);
                db.SubmitChanges();
            }

            Models.MyRoom model = new Models.MyRoom(user, db);
            return View(model);
        }