Esempio n. 1
0
        /// <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
            });
        }
Esempio n. 2
0
        public async Task <PageResultDto <StudentCheckInDto> > GetLogsCheckIn([FromQuery] GetStudentCheckInRequestDto request)
        {
            var result = await _studentService.TraceLogCheckIn(request);

            return(result);
        }