示例#1
0
        public bool RemoveUserToChatGroupContact(int chatGroupId, int participantId)
        {
            try
            {
                using (var userContext = new UserContext())
                {
                    var contacts = userContext.Contacts.Where(contact => contact is UserToGroupContact).ToList();

                    var dbChatGroup = userContext.ChatGroups.Where(cg => cg.Id == chatGroupId).FirstOrDefault();
                    var ownedFromDb = userContext.Users.Where(u => u.Id == participantId).FirstOrDefault();

                    UserToGroupContact uToGContact = null;
                    foreach (var contact in contacts)
                    {
                        uToGContact = contact as UserToGroupContact;

                        if (uToGContact.UserOwnerId == ownedFromDb.Id && uToGContact.ChatGroupId == chatGroupId)
                        {
                            userContext.Contacts.Remove(contact);
                            userContext.SaveChanges();
                            break;
                        }
                    }

                    return(true);
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }
示例#2
0
        public bool AddUserToChatGroupContact(int chatGroupId, int participantId)
        {
            try
            {
                using (UserContext userContext = new UserContext())
                {
                    UserToGroupContact contact = new UserToGroupContact();

                    ChatGroup dbChatGroup = userContext.ChatGroups.Include("Participants").FirstOrDefault(chatGroup => chatGroup.Id == chatGroupId);
                    User      ownedFromDb = userContext.Users.FirstOrDefault(dbUser => dbUser.Id == participantId);

                    contact.ChatGroup = dbChatGroup;
                    contact.UserOwner = ownedFromDb;

                    if (userContext.Contacts.FirstOrDefault(c => ((c.UserOwnerId == participantId) && ((c as UserToGroupContact).ChatGroupId == chatGroupId))) != null)
                    {
                        return(false);
                    }

                    userContext.Contacts.Add(contact);
                    userContext.SaveChanges();

                    ChatGroupUiInfo groupInfo      = new ChatGroupUiInfo(dbChatGroup);
                    List <int>      userIds        = dbChatGroup.Participants.Select(c => c.UserOwnerId).ToList();
                    List <User>     usersFromGroup = userContext.Users.Where(u => userIds.Contains(u.Id)).ToList();

                    foreach (User userToNotify in usersFromGroup)
                    {
                        AddNewContactCallback(groupInfo, userToNotify);
                    }

                    return(true);
                }
            }
            catch (Exception)
            {
                return(false);
            }
        }