示例#1
0
        public List <ProfileProjectMemberView> GetProjectMembers(int projectId)
        {
            var user = Uow.UserRepository.LinkedCacheGetByName(InpersonatedUserName);

            if (user == null || !user.IsActive)
            {
                throw new CoralTimeEntityNotFoundException($"The user with userName {InpersonatedUserName} not found or is not active");
            }

            var member = Uow.MemberRepository.LinkedCacheGetByName(InpersonatedUserName);

            if (member == null)
            {
                throw new CoralTimeEntityNotFoundException($"The member with userName {InpersonatedUserName} not found");
            }

            var project = Uow.ProjectRepository.LinkedCacheGetById(projectId);

            if (project == null || !project.IsActive)
            {
                throw new CoralTimeEntityNotFoundException($"The project with id {projectId} not found or is not active");
            }

            var userHaveAccess = user.IsAdmin ||
                                 !project.IsPrivate ||
                                 Uow.MemberProjectRoleRepository.LinkedCacheGetList().Exists(r => r.ProjectId == projectId && r.MemberId == member.Id);

            if (!userHaveAccess)
            {
                throw new CoralTimeForbiddenException($"User with userName {InpersonatedUserName} has no access to project with id {projectId}");
            }

            IEnumerable <Member> projectMembers;

            if (project.IsPrivate)
            {
                projectMembers = Uow.MemberProjectRoleRepository.LinkedCacheGetList()
                                 .Where(r => r.ProjectId == projectId && r.Member.User.IsActive)
                                 .Select(r => r.Member);
            }
            else
            {
                projectMembers = Uow.MemberRepository.LinkedCacheGetList()
                                 .Where(m => m.User.IsActive);
            }

            var list = projectMembers.Select(m => new ProfileProjectMemberView
            {
                MemberId   = m.Id,
                MemberName = m.FullName
            }).ToList();

            foreach (var item in list)
            {
                _avatarService.AddIconUrlInViewModel(item);
            }

            return(list);
        }
 private void AddIconUrl(MemberProjectRoleView item)
 {
     _avatarService.AddIconUrlInViewModel(item);
 }