public async Task <ApiResult <HistoryAttendanceVm> > GetHistoryAttendanceVm(historyAttendanceRequest request) { var queryStudentSchedule = from s in _context.Schedules join c in _context.Courses on s.Id_Course equals c.Id_Course join rc in _context.RegisterCourses on c.Id_Course equals rc.Id_Course join st in _context.Students on rc.Id_Student equals st.Id join cl in _context.Classes on s.Id_Class equals cl.Id_Class where s.Id_Course == request.Id_Cource && st.Id == request.Id_User select new { s, st, c, cl }; var dataStudentSchedule = await queryStudentSchedule.Select(x => new DayAttendance() { Date = x.s.Date, id_Schedule = x.s.Id_Schedule, Status = false }).ToListAsync(); var queryStudentAttdendace = from s in _context.Schedules join ha in _context.HistoryAttendances on s.Id_Schedule equals ha.Id_Schedule join d in _context.DetailHAs on ha.Id_HistoryAttendace equals d.Id_HistoryAttendance join st in _context.Students on d.Id_Student equals st.Id where s.Id_Course == request.Id_Cource && st.Id == request.Id_User select new { ha }; var dataStudentAttdendace = await queryStudentAttdendace.Select(x => x.ha.Id_Schedule).ToListAsync(); var data = new List <DayAttendance>(); foreach (var item in dataStudentSchedule) { int check = dataStudentAttdendace.IndexOf(item.id_Schedule); if (check == -1) { data.Add(item); } else { var user = new DayAttendance() { Date = item.Date, id_Schedule = item.id_Schedule, Status = true }; data.Add(user); } } var users = await _context.Students.FindAsync(request.Id_User); var course = await _context.Courses.FindAsync(request.Id_Cource); var result = new HistoryAttendanceVm() { NameUser = users.FullName, NameCourse = course.Name, DayAttendances = data }; return(new ApiSuccessResult <HistoryAttendanceVm>(result)); }
public async Task <IActionResult> GetAttendanceByCourse([FromQuery] historyAttendanceRequest request) { var data = await _studentService.GetHistoryAttendanceVm(request); if (data.IsSuccessed == false) { return(BadRequest(data)); } return(Ok(data)); }