/// <summary> /// Tra cứu lịch sử điểm danh /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <PageResultDto <StudentCheckInDto> > TraceLogCheckIn(GetStudentCheckInRequestDto request) { var query = from ck in _context.StudentCheckIns from m in _context.AppUsers.Where(m => m.Id == ck.MonitorId).DefaultIfEmpty() join s in _context.Students on ck.StudentId equals s.Id join b in _context.Buses on s.BusId equals b.Id select new { ck, m, s, b }; if (request.BusId != null) { query = query.Where(x => x.b.Id == request.BusId); } if (request.StudentName != null) { query = query.Where(x => x.s.Name.Contains(request.StudentName)); } if (request.FromDate != null) { query = query.Where(x => x.ck.CheckInTime > request.FromDate); } if (request.ToDate != null) { query = query.Where(x => x.ck.CheckInTime < request.ToDate); } if (request.CheckInType != null) { query = query.Where(x => x.ck.CheckInType == (CheckInType)request.CheckInType); } if (request.CheckInResult != null) { query = query.Where(x => x.ck.CheckInResult == (StudentStatus)request.CheckInResult); } var listStudent = await query.OrderByDescending(x => x.ck.CheckInTime).Select(x => new StudentCheckInDto() { Id = x.ck.Id, BusName = x.b.Name, CheckInResult = (int)x.ck.CheckInResult, CheckInTime = x.ck.CheckInTime, CheckInType = (int)x.ck.CheckInType, MonitorName = x.m.FullName, StudentName = x.s.Name, StudentId = x.s.Id, Longitude = x.ck.Longitude, Latitude = x.ck.Latitude }).ToListAsync(); return(new PageResultDto <StudentCheckInDto>() { StatusCode = ResponseCode.Success, Message = "Thành công", Items = listStudent }); }
public async Task <PageResultDto <StudentCheckInDto> > GetLogsCheckIn([FromQuery] GetStudentCheckInRequestDto request) { var result = await _studentService.TraceLogCheckIn(request); return(result); }