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