public async Task <PageResultDto <BusDto> > GetAllPagingAsync(GetBusPagingRequestDto request) { // Select and Join var query = from b in _context.Buses where b.IsDeleted == false from dr in _context.Drivers.Where(dr => dr.Id == b.DriverId).DefaultIfEmpty() from m in _context.AppUsers.Where(m => b.MonitorId == m.Id).DefaultIfEmpty() from r in _context.Routes.Where(r => b.RouteId == r.Id).DefaultIfEmpty() select new { b, dr, m, r }; // Filter if (request.LicenseCode != null) { query = query.Where(x => x.b.LicenseCode.Contains(request.LicenseCode)); } if (request.Status != null) { query = query.Where(x => (int)x.b.Status == request.Status); } if (request.DriverName != null) { query = query.Where(x => x.dr.Name.Contains(request.DriverName)); } if (request.RouteName != null) { query = query.Where(x => x.r.Name.Contains(request.RouteName)); } // Paging int totalRow = await query.CountAsync(); var data = await query.Skip((request.PageIndex - 1) *request.PageSize) .Take(request.PageSize) .Select(x => new BusDto() { Id = x.b.Id, LicenseCode = x.b.LicenseCode, Name = x.b.Name, MaxSize = x.b.MaxSize, MaxSpeed = x.b.MaxSpeed, Description = x.b.Description, Status = (int)x.b.Status, DriverId = x.dr == null ? -1 : x.dr.Id, DriverName = x.dr == null ? null : x.dr.Name, MonitorId = x.m == null ? Guid.Empty : x.m.Id, MonitorName = x.m == null ? null : x.m.FullName, RouteId = x.r == null ? -1 : x.r.Id, RouteName = x.r == null ? null : x.r.Name }) .ToListAsync(); // Return var pageResutlDto = new PageResultDto <BusDto>() { StatusCode = ResponseCode.Success, Items = data, TotalRecord = totalRow }; return(pageResutlDto); }
public async Task <PageResultDto <BusDto> > GetAllPaging([FromQuery] GetBusPagingRequestDto request) { var result = await _busService.GetAllPagingAsync(request); if (result.StatusCode == ResponseCode.Success) { result.Message = "Thành công"; } return(result); }