private void AddUserToMainWall(string userId) { var mainWall = _wallsDbSet .Include(x => x.Members) .FirstOrDefault(x => x.Type == WallType.Main && x.Members.All(m => m.UserId != userId)); if (mainWall == null) { return; } var timestamps = DateTime.UtcNow; var userMainWall = new WallMember { UserId = userId, Wall = mainWall, CreatedBy = userId, ModifiedBy = userId, Created = timestamps, Modified = timestamps, AppNotificationsEnabled = true, EmailNotificationsEnabled = true }; _wallUsersDbSet.Add(userMainWall); }
public void ReplaceMembersInWall(IEnumerable <ApplicationUser> newMembers, int wallId, string currentUserId) { var wallModerators = _moderatorsDbSet .Where(x => x.WallId == wallId) .ToList(); var currentWallMembers = _wallUsersDbSet.Where(x => x.WallId == wallId).ToList(); var membersToRemove = currentWallMembers.Where(x => !newMembers.Select(y => y.Id).Contains(x.UserId) && !wallModerators.Select(y => y.UserId).Contains(x.UserId)); foreach (var member in membersToRemove) { _wallUsersDbSet.Remove(member); } var membersToAdd = newMembers.Where(x => !currentWallMembers.Select(y => y.UserId).Contains(x.Id)); foreach (var member in membersToAdd) { var newMember = new WallMember { UserId = member.Id, WallId = wallId, AppNotificationsEnabled = true, EmailNotificationsEnabled = true }; _wallUsersDbSet.Add(newMember); } _uow.SaveChanges(currentUserId); }
public void AddMemberToWalls(string userId, List <int> wallIds) { if (wallIds.Any()) { var wallMembers = _wallUsersDbSet .Where(x => wallIds.Contains(x.WallId) && x.UserId == userId) .ToList(); foreach (var wallId in wallIds) { if (wallMembers.Any(x => x.WallId == wallId)) { continue; } var wallMember = new WallMember() { AppNotificationsEnabled = true, EmailNotificationsEnabled = true, UserId = userId, WallId = wallId, }; _wallUsersDbSet.Add(wallMember); } } }
public async Task AddMemberToWallsAsync(string userId, List <int> wallIds) { if (!wallIds.Any()) { return; } var wallMembers = await _wallUsersDbSet .Where(x => wallIds.Contains(x.WallId) && x.UserId == userId) .ToListAsync(); foreach (var wallId in wallIds) { if (wallMembers.Any(x => x.WallId == wallId)) { continue; } var wallMember = new WallMember { AppNotificationsEnabled = true, EmailNotificationsEnabled = true, UserId = userId, WallId = wallId }; _wallUsersDbSet.Add(wallMember); } }
private async Task AddUserToWallsForNewUsers(UserAndOrganizationDto userOrg) { var walls = await GetWallsForNewUsersAsync(userOrg); if (!walls.Any()) { return; } var timestamp = DateTime.UtcNow; foreach (var wall in walls) { var wallMember = new WallMember { UserId = userOrg.UserId, Wall = wall, CreatedBy = userOrg.UserId, ModifiedBy = userOrg.UserId, Created = timestamp, Modified = timestamp, AppNotificationsEnabled = true, EmailNotificationsEnabled = true }; _wallUsersDbSet.Add(wallMember); } }
private void JoinWall(string userId, DataLayer.EntityModels.Models.Multiwall.Wall wall) { var newMember = new WallMember { UserId = userId, WallId = wall.Id, AppNotificationsEnabled = true, EmailNotificationsEnabled = true }; wall.Members.Add(newMember); }
private static void JoinWall(string userId, MultiwallWall wall) { var newMember = new WallMember { UserId = userId, WallId = wall.Id, AppNotificationsEnabled = true, EmailNotificationsEnabled = true }; wall.Members.Add(newMember); }
public void User_Can_Follow_Wall() { // Arrange var member = new WallMember { Id = 2, UserId = "user1", WallId = 2 }; var jobPosition = new JobPosition() { Title = "jobpos" }; var walls = new List <Wall> { new Wall { Id = 2, Members = new List <WallMember> { member }, OrganizationId = 1, Type = WallType.UserCreated, Moderators = new List <WallModerator>() } }; var users = new List <ApplicationUser> { new ApplicationUser { Id = "user2", FirstName = "fname", LastName = "lname", PictureId = "pic", OrganizationId = 1, JobPosition = jobPosition } }; _usersDbSet.SetDbSetData(users); _wallsDbSet.SetDbSetData(walls); var tenantId = 1; var userId = "user2"; // Act _wallService.JoinLeaveWall(2, userId, userId, tenantId, false); // Assert Assert.True(_wallsDbSet.First(x => x.Id == 2).Members.Any(m => m.UserId == userId)); }
public void User_Can_Leave_Event_Wall() { // Arrange var member4 = new WallMember { Id = 3, UserId = "user2", WallId = 4 }; var jobPosition = new JobPosition { Title = "jobpos" }; var walls = new List <Wall> { new Wall { Id = 4, Members = new List <WallMember> { member4 }, OrganizationId = 2, Type = WallType.Events, Moderators = new List <WallModerator>() } }; var users = new List <ApplicationUser> { new ApplicationUser { Id = "user2", FirstName = "fname", LastName = "lname", PictureId = "pic", OrganizationId = 2, JobPosition = jobPosition } }; _usersDbSet.SetDbSetData(users); _wallsDbSet.SetDbSetData(walls); var tenantId = 2; var userId = "user2"; // Act _wallService.JoinLeaveWall(4, userId, userId, tenantId, true); // Assert _wallUsersDbSet.Received(1).Remove(Arg.Is <WallMember>(u => u.WallId == 4)); }
private void MockWallsForJoinLeave() { var member1 = new WallMember { Id = 1, UserId = "user1", WallId = 1 }; var member2 = new WallMember { Id = 2, UserId = "user1", WallId = 2 }; var member3 = new WallMember { Id = 3, UserId = "user1", WallId = 3 }; var member4 = new WallMember { Id = 3, UserId = "user2", WallId = 4 }; var walls = new List <Wall> { new Wall { Name = "defaultWall", Id = 1, Members = new List <WallMember> { member1 }, OrganizationId = 2, Type = WallType.Main, Moderators = new List <WallModerator>() }, new Wall { Name = "wall1", Id = 2, Members = new List <WallMember> { member2 }, OrganizationId = 1, Type = WallType.UserCreated, Moderators = new List <WallModerator>() }, new Wall { Name = "wall2", Id = 3, Members = new List <WallMember> { member3 }, OrganizationId = 2, Type = WallType.UserCreated, Moderators = new List <WallModerator>() { new WallModerator { UserId = "user1", WallId = 3 } } }, new Wall { Name = "EventWall", Id = 4, Members = new List <WallMember> { member4 }, OrganizationId = 2, Type = WallType.Events, Moderators = new List <WallModerator>() } }; var users = new List <ApplicationUser> { new ApplicationUser { Id = "user2", FirstName = "fname", LastName = "lname", PictureId = "pic", OrganizationId = 1 } }; _usersDbSet.SetDbSetData(users); _wallsDbSet.SetDbSetData(walls); }