예제 #1
0
        public async Task <PagedResultDto <GetTeamMemberForViewDto> > GetAll(GetAllTeamMembersInput input)
        {
            var filteredTeamMembers = _teamMemberRepository.GetAll()
                                      .Include(e => e.TeamFk)
                                      .Include(e => e.UserFk)
                                      .Include(e => e.SysRefFk)
                                      .Include(e => e.SysStatusFk)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Remark.Contains(input.Filter))
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.RemarkFilter), e => e.Remark == input.RemarkFilter)
                                      .WhereIf(input.MinReportingTeamMemberIdFilter != null, e => e.ReportingTeamMemberId >= input.MinReportingTeamMemberIdFilter)
                                      .WhereIf(input.MaxReportingTeamMemberIdFilter != null, e => e.ReportingTeamMemberId <= input.MaxReportingTeamMemberIdFilter)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.TeamNameFilter), e => e.TeamFk != null && e.TeamFk.Name == input.TeamNameFilter)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.UserNameFilter), e => e.UserFk != null && e.UserFk.Name == input.UserNameFilter)
//						.WhereIf(!string.IsNullOrWhiteSpace(input.SysRefTenantIdFilter), e => e.SysRefFk != null && e.SysRefFk.TenantId == input.SysRefTenantIdFilter)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.SysStatusNameFilter), e => e.SysStatusFk != null && e.SysStatusFk.Name == input.SysStatusNameFilter);

            var pagedAndFilteredTeamMembers = filteredTeamMembers
                                              .OrderBy(input.Sorting ?? "id asc")
                                              .PageBy(input);

            var teamMembers = from o in pagedAndFilteredTeamMembers
                              join o1 in _lookup_teamRepository.GetAll() on o.TeamId equals o1.Id into j1
                              from s1 in j1.DefaultIfEmpty()

                              join o2 in _lookup_userRepository.GetAll() on o.UserId equals o2.Id into j2
                              from s2 in j2.DefaultIfEmpty()

                              join o3 in _lookup_sysRefRepository.GetAll() on o.SysRefId equals o3.Id into j3
                              from s3 in j3.DefaultIfEmpty()

                              join o4 in _lookup_sysStatusRepository.GetAll() on o.SysStatusId equals o4.Id into j4
                              from s4 in j4.DefaultIfEmpty()

                              select new GetTeamMemberForViewDto()
            {
                TeamMember = new TeamMemberDto
                {
                    Remark = o.Remark,
                    ReportingTeamMemberId = o.ReportingTeamMemberId,
                    Id = o.Id
                },
                TeamName = s1 == null ? "" : s1.Name.ToString(),
                UserName       = s2 == null ? "" : s2.Name.ToString(),
                SysRefTenantId = s3 == null ? "" : s3.TenantId.ToString(),
                SysStatusName  = s4 == null ? "" : s4.Name.ToString()
            };
            var totalCount = await filteredTeamMembers.CountAsync();

            return(new PagedResultDto <GetTeamMemberForViewDto>(
                       totalCount,
                       await teamMembers.ToListAsync()
                       ));
        }
예제 #2
0
        public async Task <PagedResultDto <GetTeamMemberForViewDto> > GetTeamMembers(GetAllTeamMembersInput input)
        {
            var filteredTeamMembers = _teamMemberRepository.GetAll()
                                      .Include(e => e.TeamFk)
                                      .Include(e => e.UserFk)
                                      .Include(e => e.SysRefFk)
                                      .Include(e => e.SysStatusFk)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Remark.Contains(input.Filter))
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.RemarkFilter), e => e.Remark == input.RemarkFilter)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.TeamNameFilter), e => e.TeamFk != null && e.TeamFk.Name == input.TeamNameFilter)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.UserNameFilter), e => e.UserFk != null && e.UserFk.Name == input.UserNameFilter)
                                      .WhereIf(input.ReportingTeamMemberIdFilter != null, e => e.ReportingTeamMemberId == input.ReportingTeamMemberIdFilter)
                                      .WhereIf(input.TeamIdFilter != null, e => e.TeamFk.Id == input.TeamIdFilter)
                                      .WhereIf(!string.IsNullOrWhiteSpace(input.SysStatusNameFilter), e => e.SysStatusFk != null && e.SysStatusFk.Name == input.SysStatusNameFilter);

            var pagedAndFilteredTeamMembers = filteredTeamMembers
                                              .OrderBy(input.Sorting ?? "id asc")
                                              .PageBy(input);

            var teamMembers = from o in pagedAndFilteredTeamMembers
                              join o1 in _lookup_teamRepository.GetAll() on o.TeamId equals o1.Id into j1
                              from s1 in j1.DefaultIfEmpty()

                              join o2 in _lookup_userRepository.GetAll() on o.UserId equals o2.Id into j2
                              from s2 in j2.DefaultIfEmpty()

                              join o3 in _lookup_sysRefRepository.GetAll() on o.SysRefId equals o3.Id into j3
                              from s3 in j3.DefaultIfEmpty()

                              join o4 in _lookup_sysStatusRepository.GetAll() on o.SysStatusId equals o4.Id into j4
                              from s4 in j4.DefaultIfEmpty()


                              orderby o.SysRefFk.OrderNumber

                              select new GetTeamMemberForViewDto()
            {
                TeamMember = new TeamMemberDto
                {
                    Remark = o.Remark,
                    ReportingTeamMemberId = o.ReportingTeamMemberId,
                    Id = o.Id
                },
                TeamName = s1 == null ? "" : s1.Name.ToString(),
                UserName         = s2 == null ? "" : s2.Name.ToString(),
                SysRefTenantId   = s3 == null ? "" : s3.TenantId.ToString(),
                SysStatusName    = s4 == null ? "" : s4.Name.ToString(),
                FullName         = s2 == null ? "" : s2.FullName.ToString(),
                EmailAddress     = s2 == null ? "" : s2.EmailAddress.ToString(),
                SelectedRoleName = s3 == null ? "" : s3.RefCode.ToString(),
                ProfilePictureId = s2 == null ? Guid.Empty : s2.ProfilePictureId,
                ProfilePicture   = ""
            };

            var teamMemberListDtos = await teamMembers.ToListAsync();

            foreach (var teamMember in teamMemberListDtos)
            {
                Guid profilePictureId = teamMember.ProfilePictureId.Value;
                teamMember.ProfilePicture = await _profileAppService.GetProfilePictureByIdString(profilePictureId);
            }

            var totalCount = await filteredTeamMembers.CountAsync();

            return(new PagedResultDto <GetTeamMemberForViewDto>(
                       totalCount,
                       teamMemberListDtos
                       ));
        }