public ActionResult Login(LoginViewModel loginInfo)
 {
     if (ModelState.IsValid)
     {
         using (var db = new RealtimeChatDB())
         {
             User loggingUser = db.Users.Where(user => user.UserName == loginInfo.UserName).FirstOrDefault();
             if (loggingUser != null)
             {
                 if (string.Equals(loginInfo.UserPassword, loggingUser.UserPassword))
                 {
                     FormsAuthentication.SetAuthCookie(loggingUser.UserName, loginInfo.RememberMe);
                     return(RedirectToAction("Index", "Rooms"));
                 }
                 else
                 {
                     ModelState.AddModelError("UserPassword", "Wrong password");
                 }
             }
             else
             {
                 ModelState.AddModelError("UserName", "Username not found");
             }
         }
     }
     return(View());
 }
Beispiel #2
0
 public ActionResult Details(int?id)
 {
     if (id != null)
     {
         Room currentRoom;
         List <RoomMember> currentRoomMembers;
         var db = new RealtimeChatDB();
         currentRoom        = db.Rooms.Where(r => r.RoomID == id).FirstOrDefault();
         currentRoomMembers = db.RoomMembers.Where(m => m.RoomID == currentRoom.RoomID).ToList();
         if (currentRoom != null)
         {
             RoomDetailsViewModel roomDetails = new RoomDetailsViewModel
             {
                 CurrentRoom = currentRoom,
                 RoomMembers = currentRoomMembers
             };
             return(View(roomDetails));
         }
         else
         {
             TempData["dangerMessage"] = "No room was matched with provided ID";
             return(RedirectToAction("Index"));
         }
     }
     else
     {
         TempData["dangerMessage"] = "Room ID parameter is not found";
         return(RedirectToAction("Index"));
     }
 }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            Room currentRoom;
            User currentUser   = (User)filterContext.HttpContext.Items["currentUser"];
            int  currentRoomID = Convert.ToInt32(filterContext.RouteData.Values["id"]);

            using (var db = new RealtimeChatDB())
            {
                currentRoom = db.Rooms.Where(r => r.RoomID == currentRoomID).FirstOrDefault();
                if (currentRoom != null)
                {
                    RoomMember existingMember = db.RoomMembers.Where(m => m.UserID == currentUser.UserID && m.RoomID == currentRoom.RoomID).FirstOrDefault();
                    if (existingMember == null)
                    {
                        filterContext.Result = new RedirectToRouteResult(
                            new RouteValueDictionary(new { action = "Index", controller = "Rooms" })
                            );
                    }
                    else
                    {
                        filterContext.HttpContext.Items["currentRoom"] = currentRoom;
                    }
                }
                else
                {
                    filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary(new { action = "Index", controller = "Rooms" })
                        );
                }
            }
        }
Beispiel #4
0
        public ActionResult doimk(doimk doimk)
        {
            User currentUser = (User)HttpContext.Items["currentUser"];
            var  db          = new RealtimeChatDB();

            if (ModelState.IsValid)
            {
                if (currentUser.UserPassword == doimk.mkcu)
                {
                    var a = db.Users.Attach(currentUser);
                    a.UserPassword = doimk.mkmoi;
                    db.SaveChanges();
                    TempData["ChangeInfoorPass"] = "******";
                    return(RedirectToAction("Details", "Users"));
                }
                else
                {
                    ModelState.AddModelError("mkcu", "Wrong Old Password");
                    return(View());
                }
            }
            else
            {
                return(View());
            }
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            Room currentRoom = (Room)filterContext.HttpContext.Items["currentRoom"];
            User currentUser = (User)filterContext.HttpContext.Items["currentUser"];

            if (currentRoom != null)
            {
                int currentRoomID = currentRoom.RoomID;
                int currentUserID = currentUser.UserID;
                using (var db = new RealtimeChatDB())
                {
                    RoomMember currentRoomMember = db.RoomMembers.Where(m => m.RoomID == currentRoomID && m.UserID == currentUserID).FirstOrDefault();
                    if (currentRoomMember.MemberLevel < 2)
                    {
                        filterContext.Result = new RedirectToRouteResult(
                            new RouteValueDictionary(new { action = "Index", controller = "Rooms" })
                            );
                    }
                }
            }
            else
            {
                filterContext.Result = new RedirectToRouteResult(
                    new RouteValueDictionary(new { action = "Index", controller = "Rooms" })
                    );
            }
        }
        public override Task OnConnected()
        {
            string roomIDstr = Context.QueryString["roomID"];
            int    roomID    = Convert.ToInt32(Context.QueryString["roomID"]);

            Groups.Add(Context.ConnectionId, "Room_" + roomID);
            joinedUsers.GetOrAdd(Context.ConnectionId, roomID);

            using (var db = new RealtimeChatDB())
            {
                List <ChatMessage>          initMessages;
                List <SendMessageViewModel> formattedMessages = new List <SendMessageViewModel>();
                initMessages = db.ChatMessages.Where(msg => msg.RoomID == roomID).ToList();
                initMessages.ForEach(msg =>
                {
                    User sender = db.Users.Where(u => u.UserID == msg.SenderID).FirstOrDefault();
                    formattedMessages.Add(new SendMessageViewModel
                    {
                        UserID      = sender.UserID,
                        UserName    = sender.UserName,
                        ShowName    = sender.ShowName,
                        MessageText = msg.MessageText
                    });
                });
                Clients.Caller.broadcastMessages(formattedMessages);
            }
            return(base.OnConnected());
        }
        public void Send(string message)
        {
            User currentUser;
            Room currentRoom;
            int  currentRoomID = joinedUsers[Context.ConnectionId];

            using (var db = new RealtimeChatDB())
            {
                currentUser = db.Users.Where(u => u.UserName == Context.User.Identity.Name).FirstOrDefault();
                currentRoom = db.Rooms.Where(r => r.RoomID == currentRoomID).FirstOrDefault();
                var newMessage = db.ChatMessages.Create();
                newMessage.SenderID    = currentUser.UserID;
                newMessage.RoomID      = currentRoom.RoomID;
                newMessage.MessageText = message;
                db.ChatMessages.Add(newMessage);
                db.SaveChanges();

                Clients.Group("Room_" + joinedUsers[Context.ConnectionId]).broadcastMessage(
                    new SendMessageViewModel
                {
                    UserID      = currentUser.UserID,
                    UserName    = currentUser.UserName,
                    ShowName    = currentUser.ShowName,
                    MessageText = newMessage.MessageText
                }
                    );
            }
        }
Beispiel #8
0
        public ActionResult Index()
        {
            List <Room> roomList;
            int         currentUserID = ((User)HttpContext.Items["currentUser"]).UserID;

            using (var db = new RealtimeChatDB())
            {
                roomList = db.Rooms.Where(r => r.RoomMembers.Any(m => m.UserID == currentUserID)).ToList();
            }
            return(View(roomList));
        }
Beispiel #9
0
        public ActionResult All()
        {
            List <Room> roomList;

            using (var db = new RealtimeChatDB())
            {
                roomList = db.Rooms.ToList();
            }
            ViewBag.currentUserID = ((User)HttpContext.Items["currentUser"]).UserID;
            return(View(roomList));
        }
 protected override ValidationResult IsValid(object value, ValidationContext validationContext)
 {
     using (var db = new RealtimeChatDB())
     {
         User getUser = db.Users.Where(user => user.UserName == (string)value).FirstOrDefault();
         if (getUser != null)
         {
             return(new ValidationResult("This username has been taken"));
         }
         else
         {
             return(ValidationResult.Success);
         }
     }
 }
 protected override ValidationResult IsValid(object value, ValidationContext validationContext)
 {
     using (var db = new RealtimeChatDB())
     {
         Room getRoom = db.Rooms.Where(room => room.RoomName == (string)value).FirstOrDefault();
         if (getRoom != null)
         {
             return(new ValidationResult("This room name has been taken"));
         }
         else
         {
             return(ValidationResult.Success);
         }
     }
 }
Beispiel #12
0
        public ActionResult DeletePost(int id, FormCollection collection)
        {
            // TODO: Add delete logic here
            User currentUser = (User)HttpContext.Items["currentUser"];
            Room currentRoom = (Room)HttpContext.Items["currentRoom"];

            using (var db = new RealtimeChatDB())
            {
                Room deleteRoom = db.Rooms.Attach(currentRoom);
                db.Rooms.Remove(deleteRoom);
                db.SaveChanges();
            }

            TempData["successMessage"] = "Deleted successfully";
            return(RedirectToAction("Index"));
        }
Beispiel #13
0
        public ActionResult doiemail(doiemail doiemail)
        {
            User currentUser = (User)HttpContext.Items["currentUser"];
            var  db          = new RealtimeChatDB();

            if (ModelState.IsValid)
            {
                var a = db.Users.Attach(currentUser);
                a.Email    = doiemail.emailmoi;
                a.ShowName = doiemail.namemoi;
                db.SaveChanges();
                TempData["ChangeInfoorPass"] = "******";
                return(RedirectToAction("Details", "Users"));
            }
            else
            {
                return(View());
            }
        }
 public override void OnActionExecuting(ActionExecutingContext filterContext)
 {
     if (filterContext.HttpContext.User.Identity.IsAuthenticated)
     {
         using (var db = new RealtimeChatDB())
         {
             string currentUserName = filterContext.HttpContext.User.Identity.Name;
             User   currentUser     = db.Users.Where(u => u.UserName == currentUserName).FirstOrDefault();
             if (currentUser != null)
             {
                 filterContext.HttpContext.Items["currentUser"] = currentUser;
             }
             else
             {
                 FormsAuthentication.SignOut();
                 filterContext.Result = new RedirectToRouteResult(
                     new RouteValueDictionary(new { action = "Login", controller = "Sessions" })
                     );
             }
         }
     }
 }
Beispiel #15
0
        public ActionResult Create(RoomCreateViewModel roomCreateInfo)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    int currentUserID = ((User)HttpContext.Items["currentUser"]).UserID;
                    using (var db = new RealtimeChatDB())
                    {
                        var newRoom = db.Rooms.Create();
                        newRoom.RoomName        = roomCreateInfo.RoomName;
                        newRoom.ShowName        = roomCreateInfo.ShowName;
                        newRoom.RoomDescription = roomCreateInfo.Description;
                        newRoom.CreatorID       = ((User)HttpContext.Items["currentUser"]).UserID;
                        db.Rooms.Add(newRoom);

                        var newMember = db.RoomMembers.Create();
                        newMember.UserID      = ((User)HttpContext.Items["currentUser"]).UserID;
                        newMember.RoomID      = newRoom.RoomID;
                        newMember.MemberLevel = 2;
                        db.RoomMembers.Add(newMember);

                        db.SaveChanges();

                        TempData["successMessage"] = "You have successfully created a room";
                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    return(View());
                }
            }
            catch
            {
                return(View());
            }
        }
Beispiel #16
0
        public ActionResult LeaveRoom(int?id)
        {
            if (id != null)
            {
                int  currentUserID = ((User)HttpContext.Items["currentUser"]).UserID;
                Room joiningRoom;
                using (var db = new RealtimeChatDB())
                {
                    joiningRoom = db.Rooms.Where(r => r.RoomID == id).FirstOrDefault();
                    if (joiningRoom != null)
                    {
                        RoomMember existingMember = db.RoomMembers.Where(m => m.UserID == currentUserID && m.RoomID == joiningRoom.RoomID).FirstOrDefault();
                        if (existingMember == null)
                        {
                            ModelState.AddModelError("LeaveError", "You are not joined this room");
                        }
                        else if (existingMember.MemberLevel == 2)
                        {
                            ModelState.AddModelError("LeaveError", "You cannot leave this room because you are the person who created it");
                        }
                        else
                        {
                            db.RoomMembers.Remove(existingMember);

                            db.SaveChanges();

                            TempData["successMessage"] = "You have leaved the room successfully";
                            return(RedirectToAction("Index"));
                        }
                    }
                }
            }
            else
            {
                ModelState.AddModelError("JoinError", "Room ID param was not found");
            }
            return(View());
        }
Beispiel #17
0
        public ActionResult JoinRoom(int?roomID)
        {
            if (roomID != null)
            {
                int  currentUserID = ((User)HttpContext.Items["currentUser"]).UserID;
                Room joiningRoom;
                using (var db = new RealtimeChatDB())
                {
                    joiningRoom = db.Rooms.Where(r => r.RoomID == roomID).FirstOrDefault();
                    if (joiningRoom != null)
                    {
                        RoomMember existingMember = db.RoomMembers.Where(m => m.UserID == currentUserID && m.RoomID == joiningRoom.RoomID).FirstOrDefault();
                        if (existingMember == null)
                        {
                            var newMember = db.RoomMembers.Create();
                            newMember.UserID      = currentUserID;
                            newMember.RoomID      = joiningRoom.RoomID;
                            newMember.MemberLevel = 0;
                            db.RoomMembers.Add(newMember);

                            db.SaveChanges();

                            TempData["successMessage"] = "You have joined the room successfully";
                            return(RedirectToAction("All"));
                        }
                        else
                        {
                            ModelState.AddModelError("JoinError", "You have already joined this room");
                        }
                    }
                }
            }
            else
            {
                ModelState.AddModelError("JoinError", "Room ID param was not found");
            }
            return(View());
        }
Beispiel #18
0
 public ActionResult Create(RegisterViewModel registerInfo)
 {
     if (ModelState.IsValid)
     {
         using (var db = new RealtimeChatDB())
         {
             var newUser = db.Users.Create();
             newUser.UserName     = registerInfo.UserName;
             newUser.UserPassword = registerInfo.UserPassword;
             newUser.Email        = registerInfo.Email;
             newUser.ShowName     = registerInfo.ShowName;
             newUser.CreatedAt    = DateTime.Now;
             db.Users.Add(newUser);
             db.SaveChanges();
             TempData["successMessage"] = "Signed up successfully. Please login.";
             return(RedirectToAction("Login", "Sessions"));
         }
     }
     else
     {
         return(View());
     }
 }
Beispiel #19
0
 public ActionResult Messages(int?id)
 {
     if (id != null)
     {
         Room currentRoom;
         using (var db = new RealtimeChatDB())
         {
             currentRoom = db.Rooms.Where(r => r.RoomID == id).FirstOrDefault();
         }
         if (currentRoom != null)
         {
             return(View(currentRoom));
         }
         else
         {
             return(RedirectToAction("Index"));
         }
     }
     else
     {
         return(RedirectToAction("Index"));
     }
 }