Beispiel #1
0
        public ActionResult SendMessage(String message, String username)
        {
            Debug.WriteLine(username);
            var pusher = new Pusher("72484", "e9473350e86cf2fd89ac", "3e1cbae89445267f362f");
            IGetResult <object> result = pusher.Get <object>("/channels/presence-channel/users");
            PusherUsers         users  = new JavaScriptSerializer().Deserialize <PusherUsers>(result.Body);

            pusher.Trigger("presence-channel", "my_event", new { message = message, user = Session["FBID"], username = username });

            // Database logging
            using (ChatContext db = new ChatContext())
            {
                // Insert chat message row
                ChatMessage c = new ChatMessage {
                    FBID = (String)Session["FBID"], Message = message, UserName = username, TimeSent = DateTime.Now
                };
                db.ChatMessages.Add(c);
                db.SaveChanges();   // SaveChanges() is called to get a ChatMessageID value from the DB.
                // Insert user-to-chat rows for all connected users
                foreach (PusherUser user in users.users)
                {
                    UserToChatMessage u = new UserToChatMessage {
                        FBID = user.id.ToString(), ChatMessageID = c.ChatMessageID
                    };
                    db.UserToChatMessages.Add(u);
                }
                db.SaveChanges();
            }

            return(new HttpStatusCodeResult((int)HttpStatusCode.OK));
        }
        public async Task <IActionResult> PostChat([FromBody] Chat chat)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            List <ChatUser> tempUsers = chat.ChatUsers.ToList();
            bool            chatExist = false;

            if (chat.Private)
            {
                var tempChats = _context.Chats.Include(c => c.ChatUsers).Where(p => p.Private == true).ToList();

                for (int i = 0; i < tempChats.Count; i++)
                {
                    var chatUsers = tempChats[i].ChatUsers.ToList();

                    for (int j = 0; j < tempUsers.Count; j++)
                    {
                        if (chatUsers.Where(n => n.UserId == tempUsers[j].UserId).Any())
                        {
                            chatExist = true;
                        }
                        else
                        {
                            chatExist = false;
                            break;
                        }
                    }
                    if (chatExist)
                    {
                        chat           = _context.Chats.Find(tempChats[i].ChatId);
                        chat.ChatUsers = null;
                        return(Ok(chat));
                    }
                }
            }
            chat.ChatUsers = null;
            _context.Chats.Add(chat);
            await _context.SaveChangesAsync();

            for (int i = 0; i < tempUsers.Count; i++)
            {
                ChatUser chatUser = new ChatUser();
                chatUser.Chat = chat;

                var user = _context.Users.Find(tempUsers[i].UserId);
                chatUser.User = user;

                _context.ChatsUsers.Add(chatUser);
                _context.SaveChanges();
            }

            _context.Entry(chat).State = EntityState.Modified;
            _context.SaveChanges();

            chat.ChatUsers = null;

            return(Ok(chat));
        }
Beispiel #3
0
        public int ToggleLike(int userId, int statusId)
        {
            Status status       = context.Statuses.Find(statusId);
            string userIdString = userId.ToString();


            if (status.LikedIds == null || status.LikedIds == "")
            {
                status.LikedIds = userIdString;
                status.Likes   += 1;
                context.SaveChanges();
                return(1);
            }
            else
            {
                List <string> currentLikes = status.LikedIds.Split(',').ToList();

                if (currentLikes.Contains(userIdString))
                {
                    currentLikes.Remove(userIdString);

                    status.LikedIds = string.Join(",", currentLikes);
                    status.Likes   -= 1;
                    context.SaveChanges();
                    return(currentLikes.Count());
                }
                else
                {
                    status.LikedIds += "," + userIdString;
                    status.Likes    += 1;
                    context.SaveChanges();
                    return(currentLikes.Count() + 1);
                }
            }
        }
        public ActionResult <Boolean> CreateRoom(Room room)
        {
            if (_context.Rooms == null)
            {
                return(NotFound());
            }
            var ro = _context.Rooms.AsNoTracking().FirstOrDefault(r => r.Name == room.Name);

            if (ro != null)
            {
                return(Problem("Choose different Name!"));
            }
            var result = _context.Rooms.Add(room);

            _context.SaveChanges();

            if (result.Entity != null)
            {
                _context.UserRooms.Add(new UserRoom {
                    UserId = room.AdminId, RoomId = room.RoomId
                });
                _context.SaveChanges();
                room.UserRooms.Clear();
                //ChatHub.Rooms.Add(room.RoomId,room);
                return(Ok(true));
            }
            return(Ok(false));

            //var usersController = new UsersController(_context);
            //return usersController.GetUser(room.AdminId);
        }
Beispiel #5
0
        /// <summary>
        ///		Add a chat room to the database.
        /// </summary>
        /// <param name="chatRoomModel"> Chat room to add. </param>
        public ChatRoomModel Add(ChatRoomModel chatRoomModel)
        {
            var chatRoom = new ChatRoom()
            {
                DisplayName = chatRoomModel.DisplayName
            };

            _chatContext.ChatRooms.Add(chatRoom);
            _chatContext.SaveChanges();
            _chatContext.Entry(chatRoom).Collection(i => i.UserRooms).Load();

            // set dto model's id
            chatRoomModel.Id = chatRoom.Id;

            foreach (var user in chatRoomModel.Users)
            {
                var userRoom = new UserRoom()
                {
                    UserId     = user.Id,
                    ChatRoomId = chatRoom.Id
                };

                chatRoom.UserRooms.Add(userRoom);
            }

            _chatContext.SaveChanges();

            return(chatRoomModel);
        }
 public void AddMessage(Message mess)
 {
     if (mess.IdMessage != null)
     {
         dbChat.Messages.Add(mess);
         dbChat.SaveChanges();
     }
 }
Beispiel #7
0
        public ChatMessage CreateNewMessage(string senderName, string message)
        {
            var newMessage = new ChatMessage {
                Sender = senderName, Message = message, Date = DateTime.Now
            };

            _context.Messages.Add(newMessage);
            _context.SaveChanges();
            return(newMessage);
        }
        //determines if user is about to enter chat
        public ActionResult Logon(string userLogin, string userEmail, bool logon)
        {
            try
            {
                var users       = db.Users.ToList();
                int usersOnline = users.Where(u => u.Online == true).ToList().Count;
                if (usersOnline >= 10)
                {
                    throw new Exception("Chat is full");
                }
                else if (users.FirstOrDefault(u => (u.Login == userLogin) && (u.Email == userEmail)) != null)
                {
                    throw new Exception("User with such login and email already exists. Choose another login/email");
                }
                else if (users.FirstOrDefault(u => u.Login == userLogin) != null)
                {
                    throw new Exception("User with such login already exists. Choose another login");
                }

                else if (users.FirstOrDefault(u => u.Email == userEmail) != null)
                {
                    throw new Exception("User with such email already exists. Choose another email");
                }
                // adding user to chat
                else
                {
                    ChatUser newUser = new ChatUser()
                    {
                        Login     = userLogin,
                        Email     = userEmail,
                        LoginTime = DateTime.Now,
                        Online    = true
                    };
                    db.Messages.Add(new ChatMessage()
                    {
                        Text     = userLogin + " entered the chat",
                        User     = newUser,
                        PostTime = DateTime.Now
                    });
                    db.Users.Add(newUser);
                    db.SaveChanges();
                }
                viewModel = new ChatViewModel()
                {
                    Messages = db.Messages.ToList(),
                    Users    = db.Users.ToList()
                };
                return(PartialView("ChatBox", viewModel));
            }
            catch (Exception ex)
            {
                Response.StatusCode = 500;
                return(Content(ex.Message));
            }
        }
Beispiel #9
0
        public ActionResult Create([Bind(Include = "USER_ID,FIRST_NAME,LAST_NAME,AVATARLINK")] User user)
        {
            if (ModelState.IsValid)
            {
                db.User.Add(user);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(user));
        }
        public async void SendMessage(string message, int conversationId)
        {
            var user = GetCurrentUser();
            var msg  = new Message {
                Content = message, ConversationId = conversationId, Date = DateTime.Now, UserId = user.Id
            };

            _chatContext.Messages.Add(msg);
            _chatContext.SaveChanges();
            await Clients.Group(conversationId.ToString()).SendAsync("receiveMessage", msg);
        }
Beispiel #11
0
        public ActionResult Put([FromBody] string message)
        {
            Chat chatToAdd = new Chat();
            int  idToAdd   = (from n in chatContext.Chats orderby n.Id descending select n.Id).FirstOrDefault();

            chatToAdd.Id      = idToAdd + 1;
            chatToAdd.Message = message;
            chatContext.Chats.Add(chatToAdd);
            chatContext.SaveChanges();
            return(Ok());
        }
Beispiel #12
0
        private void insertNewUser(int userId, string userName)
        {
            var user = new User
            {
                Id   = userId,
                Name = userName,
            };

            db.Users.Add(user);
            db.SaveChanges();
        }
        public ActionResult Create([Bind(Include = "chatlog_id,sender_name,category_id,message,timestamp")] Chatlog chatlog)
        {
            if (ModelState.IsValid)
            {
                db.Chatlog.Add(chatlog);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(chatlog));
        }
        public ActionResult Create([Bind(Include = "Id,Username,Color,PicUrl")] Profile profile)
        {
            if (ModelState.IsValid)
            {
                profile.Id = Guid.NewGuid();
                db.Profiles.Add(profile);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(profile));
        }
Beispiel #15
0
        public void SendFriendRequest(int currentUserId, int friendId)
        {
            FriendRequest friendRequest = new FriendRequest()
            {
                Senderid   = currentUserId,
                Recieverid = friendId,
                Seen       = false
            };

            context.FriendRequests.Add(friendRequest);
            context.SaveChanges();
        }
Beispiel #16
0
        public ActionResult Create([Bind(Include = "Id,Author,Conteudo")] Message message)
        {
            if (ModelState.IsValid)
            {
                message.Id = Guid.NewGuid();
                db.messages.Add(message);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(message));
        }
 public bool Create(User item)
 {
     try
     {
         _context.Users.Add(item);
     }
     catch (Exception e)
     {
         return(false);
     }
     _context.SaveChanges();
     return(true);
 }
Beispiel #18
0
        public bool Delete(int user_id)
        {
            var dbUser = context.mdl_user.Find(user_id);

            if (dbUser == null)
            {
                return(false);
            }

            dbUser.record_state = 1;
            context.SaveChanges();

            return(true);
        }
Beispiel #19
0
        public ActionResult Create([Bind(Include = "Id,Content,Timestamp")] Message message)
        {
            if (ModelState.IsValid)
            {
                message.Id = Guid.NewGuid();
                var profile = (Profile)Session["profile"];
                message.Sender = db.Profiles.SingleOrDefault(p => p.Id == profile.Id);
                db.Messages.Add(message);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(message));
        }
Beispiel #20
0
        /// <summary>
        ///		Adds a chat message to the database.
        /// </summary>
        /// <param name="message"> Message to add to the database. </param>
        /// <returns> The added <see cref="ChatMessage"/> with additional fields set from the database. </returns>
        public ChatMessage Add(ChatMessage message)
        {
            // todo: change the model on the frontend to send a model like this
            message.UserId = message.User.Id;
            message.User   = null;
            var addedMessage = _chatContext.ChatMessages.Add(message).Entity;

            _chatContext.SaveChanges();

            // load the user into the entity
            _chatContext.Entry(addedMessage).Reference(i => i.User).Load();

            return(addedMessage);
        }
        public async Task Send(Message message)
        {
            var dialog = _usersDialog
                         .FirstOrDefault(x => x.Value.ClientUserUserId
                                         .ToString() == Context.UserIdentifier || x.Value.EmployeeUserUserId.ToString() == Context.UserIdentifier)
                         .Value;


            if (dialog != null)
            {
                message.DialogId = dialog.DialogId;
                message.ClientId = dialog.ClientUserUserId;

                await Clients.User(Context.UserIdentifier).Receive(message);


                if (dialog.EmployeeUserUserId == _botId)
                {
                    await Clients.User(Context.UserIdentifier.ToString()).Receive(_autoDialog.ReplyMessage(message));
                }
                else
                {
                    message.SenderType = "out";
                    await Clients.User(dialog.EmployeeUserUserId.ToString()).Receive(message);
                }
            }
            else
            {
                Guid dialogId = Guid.NewGuid();

                Dialog newdialog = new Dialog()
                {
                    ClientUserUserId   = Guid.Parse(Context.UserIdentifier),
                    DialogId           = dialogId,
                    EmployeeUserUserId = _botId
                };

                _context.Dialogs.Add(newdialog);
                _usersDialog.Add(key: newdialog.DialogId, value: newdialog);
                _context.SaveChanges();

                message.DialogId = dialogId;

                await Clients.User(Context.UserIdentifier.ToString()).Receive(message);

                await Clients.User(Context.UserIdentifier.ToString()).Receive(_autoDialog.ReplyMessage(message));
            }
        }
Beispiel #22
0
        public ActionResult PostQuestion(string title, string editor1)
        {
            BaiDang baiDang = new BaiDang
            {
                TieuDe      = title,
                NoiDung     = editor1,
                TenDangNhap = (Session["NguoiDungDangNhap"] as NguoiDung).TenDangNhap,
                ThoiGian    = DateTime.Now
            };

            database.BaiDangs.Add(baiDang);

            database.SaveChanges();

            return(View("Index", database.BaiDangs));
        }
Beispiel #23
0
        public ActionResult SubmitSignup(string tenDangNhap, string hoTen, string matKhau, HttpPostedFileBase hinhAnh)
        {
            if (database.NguoiDungs.Any(e => e.TenDangNhap == tenDangNhap))
            {
                ViewBag["ThongBao"] = "Tên đăng nhập đã tồn tại, vui lòng chọn cái khác.";
                return(View());
            }

            string filename = (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond).ToString() + Path.GetExtension(hinhAnh.FileName);
            string path     = Path.Combine(Server.MapPath("~/Upload/profile"), filename);

            hinhAnh.SaveAs(path);

            NguoiDung nguoiDung = new NguoiDung
            {
                TenDangNhap = tenDangNhap,
                HoTen       = hoTen,
                MatKhau     = matKhau,
                HinhAnh     = "~/Upload/profile/" + filename
            };

            database.NguoiDungs.Add(nguoiDung);
            database.SaveChanges();

            Session["NguoiDungDangNhap"] = nguoiDung;
            return(RedirectToAction("Index"));
        }
Beispiel #24
0
 public bool RemoveUser(int userId)
 {
     using (var context = new ChatContext())
     {
         List <TopicModel> topics = context.TopicModel.Include(topic => topic.author).Where(topic => topic.author.id == userId).ToList();
         foreach (TopicModel topic in topics)
         {
             List <PostModel> posts = context.PostModel.Include(post => post.topic).Where(post => post.topic.id == topic.id).ToList();
             foreach (PostModel post in posts)
             {
                 context.PostModel.Remove(post);
             }
             context.TopicModel.Remove(topic);
         }
         List <PostModel> postModels = context.PostModel.Include(post => post.author).Where(post => post.author.id == userId).ToList();
         foreach (PostModel postModel in postModels)
         {
             context.PostModel.Remove(postModel);
         }
         UserModel userModel = context.UserModel.First(user => user.id == userId);
         context.UserModel.Remove(userModel);
         context.SaveChanges();
         return(true);
     }
 }
        public override int SaveChanges()
        {
            var result = _context.SaveChanges();

            _publisher.Publish(new SaveEvent());
            return(result);
        }
Beispiel #26
0
        public JsonResult MessageDelivered(int message_id)
        {
            Conversation convo = null;

            using (var db = new ChatContext())
            {
                convo = db.Conversations.FirstOrDefault(c => c.Id == message_id);
                if (convo != null)
                {
                    convo.Status          = Conversation.MessageStatus.Delivered;
                    db.Entry(convo).State = EntityState.Modified;
                    db.SaveChanges();
                }
            }
            string socket_id           = Request.Form["socket_id"];
            var    conversationChannel = getConvoChannel(convo.SenderId, convo.ReceiverId);

            pusher.TriggerAsync(
                conversationChannel,
                "message_delivered",
                convo,
                new TriggerOptions()
            {
                SocketId = socket_id
            });
            return(Json(convo));
        }
Beispiel #27
0
        // TODO: move to service?
        #region Db handling

        private ChatUser AddUserToStorage(string userName, string clientId)
        {
            ChatUser user = null;

            using (var db = new ChatContext())
            {
                user = db.ChatUsers.SingleOrDefault(u => u.Name == userName);

                if (user == null)
                {
                    user = new ChatUser
                    {
                        Name     = userName,
                        JoinTime = DateTime.Now,
                        ClientId = clientId,
                    };
                    db.ChatUsers.Add(user);
                }

                //user.Connections.Add(new Connection
                //                     {
                //                         ConnectionID = Context.ConnectionId,
                //                         UserAgent = Context.Request.Headers["User-Agent"],
                //                         Connected = true
                //                     });
                db.SaveChanges();
            }

            return(user);
        }
Beispiel #28
0
        /* public members */

        public static void CreateUser(string username, string nickname, string authCode)
        {
            ValidateUsername(username);
            ValidateNickname(nickname);
            ValidateAuthCode(authCode);
            using (ChatContext context = new ChatContext())
            {
                var usernameToLower = username.ToLower();
                var nicknameToLower = nickname.ToLower();

                var dbUser = context.Users.FirstOrDefault(u => u.Username.ToLower() == usernameToLower || u.Nickname.ToLower() == nicknameToLower);

                if (dbUser != null)
                {
                    if (dbUser.Username.ToLower() == usernameToLower)
                    {
                        throw new ServerErrorException("Username already exists", "ERR_DUP_USR");
                    }
                    else
                    {
                        throw new ServerErrorException("Nickname already exists", "ERR_DUP_NICK");
                    }
                }

                dbUser = new User()
                {
                    Username = usernameToLower,
                    Nickname = nickname,
                    AuthCode = authCode
                };
                context.Users.Add(dbUser);
                context.SaveChanges();
            }
        }
Beispiel #29
0
        public ActionResult SendTheNewMessage(string User, Message model)
        {
            var currentUser = (User)Session["user"];

            if (string.IsNullOrEmpty(User))
            {
                ModelState.AddModelError("Person", "Некорректный адресант");
            }
            if (string.IsNullOrEmpty(model.TitleMessage))
            {
                ModelState.AddModelError("header", "Некорректный заголовок");
            }
            if (string.IsNullOrEmpty(model.TextMessage))
            {
                ModelState.AddModelError("text", "Некорректный текс");
            }

            if (ModelState.IsValid)
            {
                model.SenderId  = currentUser.Id;
                model.ReciverId = db.Users.Where(x => x.Login.Equals(User)).Select(x => x.Id).FirstOrDefault();
                model.CreateAt  = DateTime.Now;
                db.Messages.Add(model);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            else
            {
                ViewBag.Message = "Не верный ввод";
                return(RedirectToAction("MessageCreate"));
            }
        }
Beispiel #30
0
        private ChatUser RemoveUserFromStorage(string userName)
        {
            ChatUser currentUser = null;

            using (var db = new ChatContext())
            {
                currentUser = db.ChatUsers.SingleOrDefault(u => u.Name == userName);

                if (currentUser != null)
                {
                    currentUser.LeaveTime       = DateTime.Now;
                    db.Entry(currentUser).State = System.Data.Entity.EntityState.Deleted;

                    db.SaveChanges();
                }

                //user.Connections.Add(new Connection
                //                     {
                //                         ConnectionID = Context.ConnectionId,
                //                         UserAgent = Context.Request.Headers["User-Agent"],
                //                         Connected = true
                //                     });
            }

            return(currentUser);
        }
        static void Main()
        {
            //Create and initialize the database

            Database.SetInitializer(new MigrateDatabaseToLatestVersion
                <ChatContext, Chat.Data.Migrations.Configuration>());

            var context = new ChatContext();
            using (context)
            {
                var user = new User { Username = "******", Password = "******", Picture = "....." };
                context.Users.Add(user);
                var chatRoom = new ChatRoom { Name = "chatroom", Users = new User[] { user } };
                context.ChatRooms.Add(chatRoom);
                var post = new Post { Date = DateTime.Now, UserId = user.Id, ChatRoomId = chatRoom.Id, Content = "ok" };
                context.Posts.Add(post);
                context.SaveChanges();
            }
        }
Beispiel #32
0
        protected void InsertButton_Command(object sender, CommandEventArgs e)
        {
            var tbUsername = (TextBox)Page.FindControl("tb_Username");
            if (string.IsNullOrWhiteSpace(tbUsername.Text))
            {
                return;
            }

            this.ViewState["username"] = tbUsername.Text;

            string username = tbUsername.Text;
            string text = ((TextBox)Page.FindControl("tb_Message")).Text;
            ChatContext db = new ChatContext();
            db.Messages.Add(new Message()
            {
                Username = username,
                Text = text
            });

            db.SaveChanges();
        }