示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            }
        }
示例#6
0
        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);
        }
示例#8
0
        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));
        }
示例#9
0
        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));
        }
示例#10
0
        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);
        }