public static MemberLinksDTO FromMemberEntity(Member member) { var dto = new MemberLinksDTO { FullName = member.UserFullName(), BlogUrl = member.BlogUrl, GitHubUrl = member.GitHubUrl, LinkedInUrl = member.LinkedInUrl, OtherUrl = member.OtherUrl, TwitchUrl = member.TwitchUrl, YouTubeUrl = member.YouTubeUrl, TwitterUrl = member.TwitterUrl, UserId = member.UserId, PEUsername = member.PEUsername, PEBadgeURL = $"https://projecteuler.net/profile/{member.PEUsername}.png", Address = member.Address, CodinGameUrl = member.CodinGameUrl, SubscribedDays = member.TotalSubscribedDays() }; if (!(string.IsNullOrEmpty(dto.YouTubeUrl)) && !(dto.YouTubeUrl.Contains("?"))) { dto.YouTubeUrl = dto.YouTubeUrl + "?sub_confirmation=1"; } return(dto); }
public async Task OnGet() { var usersInMemberRole = await _userManager.GetUsersInRoleAsync(AuthConstants.Roles.MEMBERS); var usersInAlumniRole = await _userManager.GetUsersInRoleAsync(AuthConstants.Roles.ALUMNI); var memberUserIds = usersInMemberRole.Select(x => x.Id).ToList(); var alumniUserIds = usersInAlumniRole.Select(x => x.Id).ToList(); var memberSpec = new MembersHavingUserIdsWithBooksSpec(memberUserIds); var members = await _repository.ListAsync(memberSpec); var alumniSpec = new MembersHavingUserIdsWithBooksSpec(alumniUserIds); var alumni = await _repository.ListAsync(alumniSpec); Members = members .Where(m => (m.BooksRead?.Count ?? 0) > 0 && !alumni.Any(alumni => alumni.Id == m.Id)) .Select(member => MemberLinksDTO.FromMemberEntity(member)) .ToList(); Alumni = alumni.Select(alumni => MemberLinksDTO.FromMemberEntity(alumni)) .Where(m => (m.BooksRead?.Count ?? 0) > 0) .ToList(); var bookSpec = new BooksByMemberReadCountWithMembersWhoHaveReadSpec(); Books = await _repository.ListAsync(bookSpec); }
public void ReturnsInputYouTubeUrlIfContainsQuestionMark() { var member = MemberHelpers.CreateWithDefaultConstructor(); string youtubeInput = "https://www.youtube.com/ardalis?"; member.UpdateLinks(null, null, null, null, null, null, youtubeInput, null); MemberLinksDTO dto = MemberLinksDTO.FromMemberEntity(member); var result = dto.YouTubeUrl; Assert.Equal(youtubeInput, result); }
public static MemberLinksDTO FromMemberEntity(Member member) { var dto = new MemberLinksDTO { FullName = member.UserFullName(), BooksRead = member.BooksRead, UserId = member.UserId }; if (dto.BooksRead == null) { dto.BooksRead = new List <Book>(); } return(dto); }
public async Task OnGet() { var usersInMemberRole = await _userManager.GetUsersInRoleAsync(AuthConstants.Roles.MEMBERS); var usersInAlumniRole = await _userManager.GetUsersInRoleAsync(AuthConstants.Roles.ALUMNI); var memberUserIds = usersInMemberRole.Select(x => x.Id).ToList(); var alumniUserIds = usersInAlumniRole.Select(x => x.Id).ToList(); var memberSpec = new MembersHavingUserIdsWithBooksSpec(memberUserIds); var members = await _memberRepository.ListAsync(memberSpec); var alumniSpec = new MembersHavingUserIdsWithBooksSpec(alumniUserIds); var alumni = await _memberRepository.ListAsync(alumniSpec); Members = members .Where(m => (m.BooksRead?.Count ?? 0) > 0 && !alumni.Any(alumni => alumni.Id == m.Id)) .Select(member => MemberLinksDTO.FromMemberEntity(member)) .ToList(); var memberRanks = _rankingService.Rank(Members.Select(m => m.BooksRead !.Count)); Members.ForEach(m => m.Rank = memberRanks[m.BooksRead !.Count]);