Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GetAttendanceByCourse([FromQuery] historyAttendanceRequest request)
        {
            var data = await _studentService.GetHistoryAttendanceVm(request);

            if (data.IsSuccessed == false)
            {
                return(BadRequest(data));
            }
            return(Ok(data));
        }