示例#1
0
 public void removeFCMToken(FormCollection fc)
 {
     using (var db = new OZChatDbContext())
     {
         var fcmToken = fc["fcmToken"];
         if (fcmToken != null)
         {
             FcmConnection oFcmConnection = db.FcmConnection.Where(p => p.DeviceToken == fcmToken).FirstOrDefault();
             if (oFcmConnection != null)
             {
                 db.FcmConnection.Remove(oFcmConnection);
                 db.SaveChanges();
             }
         }
     }
 }
示例#2
0
        public void addDeviceTokenFCM(string deviceToken)
        {
            string id   = Context.User.Identity.GetUserId();
            string name = Context.User.Identity.Name;

            using (var db = new OZChatDbContext())
            {
                var hubUser = db.HubUsers.FirstOrDefault(p => p.UserName == name);
                List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.DeviceToken == deviceToken).ToList();
                if (hubUser != null && listFcmConnection.Count == 0)
                {
                    FcmConnection oFcmConnection = new FcmConnection();
                    oFcmConnection.DeviceToken = deviceToken;
                    oFcmConnection.UserID      = hubUser.ID;
                    db.FcmConnection.Add(oFcmConnection);
                    db.SaveChanges();
                }
            }
        }
示例#3
0
        //Thêm tin nhắn vào group
        public async Task addMessageToGroup(int groupId, string groupName, string message)
        {
            var userId   = Context.User.Identity.GetUserId();
            var username = Context.User.Identity.Name;
            var fullname = Context.User.Identity.GetUserFullName();
            var avatar   = Context.User.Identity.GetUserAvatar();

            using (var _db = new OZChatDbContext())
            {
                // Tạo mới 1 tin nhắn
                string strDateTime = String.Format("{0:dd/MM/yyyy HH:mm}", DateTime.Now);
                var    newMessage  = new MessageGroup
                {
                    FromID       = userId,
                    GroupID      = groupId,
                    FromFullName = fullname,
                    FromAvatar   = avatar,
                    Content      = message,
                    CreatedDate  = DateTime.Now,
                    StrDateTime  = strDateTime,
                    IsFile       = false
                };

                // Gửi tin nhắn tới nhóm
                await Clients.OthersInGroup(groupName).groupMessage(newMessage, false);

                await Clients.Caller.groupMessage(newMessage, true);

                //Lấy ra các thành viên trong nhóm
                var     groupUsers = _db.HubUserGroups.Where(p => p.GroupID == groupId && p.UserID != userId).ToList();
                Boolean saveChange = false;
                foreach (var item in groupUsers)
                {
                    var onlineUser = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == item.UserID);
                    //Nếu user đang online
                    if (onlineUser != null)
                    {
                        // Nếu user đang không tương tác với nhóm
                        var listConnection = _db.Connection.Where(p => p.UserID == item.UserID).ToList();
                        if (CommonStatic.InteracGroups.FirstOrDefault(p => p.UserID == item.UserID && p.GroupID == groupId) == null)
                        {
                            //Lấy ra 1 NewMessageGroup thoa mãn điều kiện
                            var messGroup = _db.NewMessageGroups.FirstOrDefault(p => p.UserID == item.UserID && p.GroupID == groupId);
                            // Nếu đã tồn tại thì cộng thêm 1
                            if (messGroup != null)
                            {
                                messGroup.Count += 1;
                            }
                            else
                            {
                                // Chưa tồn tại thì thêm mới
                                _db.NewMessageGroups.Add(new NewMessageGroup {
                                    UserID = item.UserID, GroupID = groupId, Count = 1
                                });
                            }
                            saveChange = true;
                            _db.MessageGroups.Add(newMessage);
                            _db.SaveChanges();
                            // Cập nhật lại số tin nhắn chưa đọc
                            for (int i = 0; i < listConnection.Count(); i++)
                            {
                                Clients.Client(listConnection[i].ConnectionID).addCountMessageGroup(groupId);
                            }
                        }
                    }
                    var oInteracGroup = CommonStatic.InteracGroups.FirstOrDefault(p => p.UserID == item.UserID && p.GroupID == groupId);
                    if (oInteracGroup == null)
                    {
                        try
                        {
                            var listFcmConnection = _db.FcmConnection.Where(p => p.UserID == item.UserID).ToList();
                            for (var j = 0; j < listFcmConnection.Count; j++)
                            {
                                FcmConnection oFcmConnection = listFcmConnection[j];
                                fcmServer.pushNotificationToGroup(oFcmConnection.DeviceToken, fullname, message, groupId.ToString());
                            }
                        }
                        catch (Exception e)
                        {
                        }
                    }
                }
                if (saveChange == false)
                {
                    _db.MessageGroups.Add(newMessage);
                    _db.SaveChanges();
                }
            }
        }
示例#4
0
        public void addMessagePrivate(string userId, string message)
        {
            string id       = Context.User.Identity.GetUserId();
            string fullname = Context.User.Identity.GetUserFullName();
            string avatar   = Context.User.Identity.GetUserAvatar();

            using (var db = new OZChatDbContext())
            {
                string strDateTime    = String.Format("{0:dd/MM/yyyy HH:mm}", DateTime.Now);
                var    messagePrivate = new MessagePrivate()
                {
                    FromID       = id,
                    ReceiveID    = userId,
                    Content      = message,
                    FromFullName = fullname,
                    FromAvatar   = avatar,
                    CreatedDate  = DateTime.Now,
                    StrDateTime  = strDateTime,
                    IsFile       = false
                };

                //Lấy ra user trong list user đang online
                var onlineUser = CommonStatic.OnlineUsers.FirstOrDefault(p => p.ID == userId);
                //Nếu user đang online
                var listConnectionReceive = db.Connection.Where(p => p.UserID == userId).ToList();
                var listConnectionSend    = db.Connection.Where(p => p.UserID == id).ToList();
                if (onlineUser != null)
                {
                    // Nếu user đang online và đang tương tác với mình
                    if (CommonStatic.Interactives.FirstOrDefault(p => p.FromID == userId && p.ReceiveID == id) != null)
                    {
                        for (int i = 0; i < listConnectionSend.Count(); i++)
                        {
                            Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                        }

                        for (int i = 0; i < listConnectionReceive.Count; i++)
                        {
                            Clients.Client(listConnectionReceive[i].ConnectionID).messagePrivate(messagePrivate, false);
                        }
                        AddUserMessagePrivate(id, userId, false, listConnectionReceive);
                    }
                    // Nếu user đang online nhưng không tương tác với mình.
                    else
                    {
                        for (int i = 0; i < listConnectionSend.Count(); i++)
                        {
                            Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                        }
                        for (int i = 0; i < listConnectionReceive.Count; i++)
                        {
                            Clients.Client(listConnectionReceive[i].ConnectionID).notificationMessage(fullname, message);
                        }
                        List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.UserID == userId).ToList();
                        for (var i = 0; i < listFcmConnection.Count; i++)
                        {
                            FcmConnection oFcmConnection = listFcmConnection[i];
                            fcmServer.pushNotificationToUser(oFcmConnection.DeviceToken, fullname, message, id);
                        }
                        AddUserMessagePrivate(id, userId, true, listConnectionReceive);
                    }
                }
                // Người mình nhắn tin đang ko online.
                else
                {
                    for (int i = 0; i < listConnectionSend.Count(); i++)
                    {
                        Clients.Client(listConnectionSend[i].ConnectionID).messagePrivate(messagePrivate, true);
                    }

                    List <FcmConnection> listFcmConnection = db.FcmConnection.Where(p => p.UserID == userId).ToList();
                    for (var i = 0; i < listFcmConnection.Count; i++)
                    {
                        FcmConnection oFcmConnection = listFcmConnection[i];
                        fcmServer.pushNotificationToUser(oFcmConnection.DeviceToken, fullname, message, id);
                    }

                    var user = db.UserMessagePrivates.FirstOrDefault(p => p.FromUserID == id && p.RecieveUserID == userId);
                    if (user == null)
                    {
                        db.UserMessagePrivates.Add(new UserMessagePrivate {
                            FromUserID = id, RecieveUserID = userId, NewMessage = 0
                        });
                    }
                    else
                    {
                        user.NewMessage += 1;
                    }
                }

                db.MessagePrivates.Add(messagePrivate);
                db.SaveChanges();
                //GetAllMessageUser(userId,listConnectionReceive);
            }
        }