public Result DetailList(MemberDetailListDto dto) { var result = _actionFactory.Action(dto.Action)?.Apply(dto.Ids) ?? new Result(); if (!result.Success) { return(result); } var query = _memberRepository.AsNoTracking; query = new MemberDetailListFilter(query, dto).FilteredQuery(); if (dto.CreatedSource != 0) { query = query.Where(w => w.CreatedSource == dto.CreatedSource); } query = new MemberListOrder(query, dto).OrderByQuery(); result.SetPaging(dto?.Page ?? 1, dto?.Size ?? 10, query.Count()); if (dto.SortColumn != "totalExam") { result.Data = query.Select(s => new MemberDetailListDto { Id = s.Id, Name = s.Name, Email = s.Email, College = s.College, IsActive = s.IsActive, CreatedAt = s.CreatedAt, CreatedSource = s.CreatedSource }) .ToPaged(result.Paging.Page, result.Paging.Size) .ToList() .Select(s => new { s.Id, s.Name, s.Email, s.College, s.CreatedAt, s.CreatedSource, CreatedSourceName = Enum.GetName(typeof(MemberCreatedSource), s.CreatedSource).Humanize(LetterCasing.Title), TotalExam = _memberResultRepository.AsNoTracking.Count(w => w.MemberId == s.Id) }); } else { if (dto.SortType == "desc") { result.Data = query.Select(s => new MemberDetailListDto { Id = s.Id, Name = s.Name, Email = s.Email, College = s.College, IsActive = s.IsActive, CreatedAt = s.CreatedAt, CreatedSource = s.CreatedSource }) .ToPaged(result.Paging.Page, result.Paging.Size) .ToList() .Select(s => new { s.Id, s.Name, s.Email, s.College, s.CreatedAt, s.CreatedSource, CreatedSourceName = Enum.GetName(typeof(MemberCreatedSource), s.CreatedSource).Humanize(LetterCasing.Title), TotalExam = _memberResultRepository.AsNoTracking.Count(w => w.MemberId == s.Id) }).OrderByDescending(o => o.TotalExam); } else { result.Data = query.Select(s => new MemberDetailListDto { Id = s.Id, Name = s.Name, Email = s.Email, College = s.College, IsActive = s.IsActive, CreatedAt = s.CreatedAt, CreatedSource = s.CreatedSource }) .ToPaged(result.Paging.Page, result.Paging.Size) .ToList() .Select(s => new { s.Id, s.Name, s.Email, s.College, s.CreatedAt, s.CreatedSource, CreatedSourceName = Enum.GetName(typeof(MemberCreatedSource), s.CreatedSource).Humanize(LetterCasing.Title), TotalExam = _memberResultRepository.AsNoTracking.Count(w => w.MemberId == s.Id) }).OrderBy(o => o.TotalExam); } } return(result); }
public IHttpActionResult Get([FromUri] MemberDetailListDto dto) { return(Result(_memberService.DetailList(dto))); }