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); } }
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); } }