Пример #1
0
        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);
        }
Пример #2
0
        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);
        }