Пример #1
0
        public void AddProjectsToUser(string userId, IEnumerable <int> newProjectIds, UserAndOrganizationDTO userOrg)
        {
            var user = _usersDbSet
                       .Include(x => x.Projects)
                       .First(x => x.Id == userId &&
                              x.OrganizationId == userOrg.OrganizationId);

            var wallsThatShouldBeRemovedFromUser = user.Projects
                                                   .Where(x => !newProjectIds.Contains(x.Id))
                                                   .Select(x => x.WallId)
                                                   .ToList();

            var wallsThatShouldBeAddedToUser = _projectsDbSet.Where(x => newProjectIds.Contains(x.Id)).Select(x => x.WallId).ToList();

            _wallService.AddMemberToWalls(userId, wallsThatShouldBeAddedToUser);
            _wallService.RemoveMemberFromWalls(userId, wallsThatShouldBeRemovedFromUser);

            user.Projects = _projectsDbSet.Where(p => newProjectIds.Contains(p.Id)).ToList();

            _uow.SaveChanges(userOrg.UserId);
        }