Esempio n. 1
0
        public async Task <IActionResult> BySchedule([FromQuery] GetByScheduleRequest request)
        {
            var data = await _studentService.GetBySchedule(request);

            if (data.IsSuccessed == false)
            {
                return(BadRequest(data));
            }
            return(Ok(data));
        }
        public async Task <ApiResult <StudentSchedule> > GetBySchedule(GetByScheduleRequest request)
        {
            var student = await _context.Students.FindAsync(request.Id_Student);

            var schedule = await _context.Schedules.FindAsync(request.Id_Schedule);

            if (student == null || schedule == null)
            {
                return(new ApiErrorResult <StudentSchedule>("Không tìm thấy dữ liệu"));
            }

            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_Schedule == request.Id_Schedule
                                         select new { s, d, st };

            var dataStudentAttdendace = await queryStudentAttdendace.Select(x => x.st.Id).ToListAsync();

            int check = dataStudentAttdendace.IndexOf(request.Id_Student);
            var user  = new StudentSchedule();

            if (check > -1)
            {
                user = new StudentSchedule()
                {
                    Id_Student = student.Id,
                    Name       = student.FullName,
                    Date       = schedule.Date,
                    Status     = true
                };
            }
            else
            {
                user = new StudentSchedule()
                {
                    Id_Student = student.Id,
                    Name       = student.FullName,
                    Date       = schedule.Date,
                    Status     = false
                };
            }

            return(new ApiSuccessResult <StudentSchedule>(user));
        }