public async Task <dynamic> GetTieuChiThamDinhCustom(TieuChiThamDinhInputDto input) { try { var query = (from noiDung in _tieuChiThamDinhRepos.GetAll() select new { noiDung.Id, noiDung.PId, noiDung.Level, noiDung.ThuTucId, noiDung.LoaiBienBanThamDinhId, noiDung.TieuBanEnum, noiDung.RoleLevel, noiDung.MaNoiDung, noiDung.STT, noiDung.TieuDeThamDinh, noiDung.IsValidate, noiDung.IsTieuDe }) .WhereIf(input.ThuTucId != null, x => x.ThuTucId == input.ThuTucId) .WhereIf(input.RoleLevel != null, x => x.RoleLevel == input.RoleLevel) .WhereIf(input.TieuBanEnum != null, x => x.TieuBanEnum == input.TieuBanEnum) .WhereIf(input.LoaiBienBanThamDinhId != null, x => x.LoaiBienBanThamDinhId == input.LoaiBienBanThamDinhId); var dataGrids = await query .OrderBy(p => p.STT) .ToListAsync(); return(dataGrids); } catch (Exception ex) { throw ex; } }
public async Task <PagedResultDto <dynamic> > GetAllServerPaging(TieuChiThamDinhInputDto input) { try { var query = (from noiDung in _tieuChiThamDinhRepos.GetAll() join t_loaiBienBan in _loaiBienBanRepos.GetAll() on noiDung.LoaiBienBanThamDinhId equals t_loaiBienBan.Id into tb_loaiBienBan //Left Join from loaiBienBan in tb_loaiBienBan.DefaultIfEmpty() select new { noiDung.Id, noiDung.PId, noiDung.Level, noiDung.ThuTucId, noiDung.LoaiBienBanThamDinhId, noiDung.TieuBanEnum, noiDung.RoleLevel, noiDung.MaNoiDung, noiDung.STT, noiDung.TieuDeThamDinh, noiDung.IsValidate, noiDung.IsTieuDe, StrLoaiBienBanThamDinh = loaiBienBan.Name, }) .WhereIf(input.ThuTucId != null, x => x.ThuTucId == input.ThuTucId) .WhereIf(input.RoleLevel != null, x => x.RoleLevel == input.RoleLevel) .WhereIf(input.TieuBanEnum != null, x => x.TieuBanEnum == input.TieuBanEnum) .WhereIf(input.LoaiBienBanThamDinhId != null, x => x.LoaiBienBanThamDinhId == input.LoaiBienBanThamDinhId); var queryNoiDung = query.GroupBy(x => new { x.ThuTucId, x.RoleLevel, x.LoaiBienBanThamDinhId, x.TieuBanEnum }).Select(x => new { x.Key.ThuTucId, x.Key.RoleLevel, x.Key.TieuBanEnum, x.Key.LoaiBienBanThamDinhId, x.FirstOrDefault().StrLoaiBienBanThamDinh, ListNoiDung = x.Select(g => new { g.Id, g.PId, g.Level, g.ThuTucId, g.TieuBanEnum, g.RoleLevel, g.LoaiBienBanThamDinhId, g.MaNoiDung, g.STT, g.TieuDeThamDinh, g.IsValidate, g.IsTieuDe, }) }); var count = await queryNoiDung.CountAsync(); var dataGrids = await queryNoiDung .OrderBy(p => p.ThuTucId).ThenBy(x => x.TieuBanEnum) .PageBy(input) .ToListAsync(); return(new PagedResultDto <dynamic>(count, dataGrids)); } catch (Exception ex) { throw ex; } }