예제 #1
0
        public ActionResult Attendance()
        {
            var userId = User.Identity.GetUserId();

            if (userId == null || userId == "")
            {
                return(View());
            }

            var student  = _studentDataService.GetByUserId(userId);
            var group    = _groupDataService.GetByStudent(student.Id);
            var lectures = _lectureDataService.GetByGroupId(group.Id);

            var attendanceStats = new List <StudentAttendanceViewModel>();

            var generalStats = new StudentAttendanceViewModel
            {
                Subject               = "General",
                LectureCount          = _getOccurencesCount(lectures),
                AttendedLecturesCount = _getAttendedLecturesCount(lectures, student)
            };

            attendanceStats.Add(generalStats);

            foreach (var lecture in lectures)
            {
                var attended = _attendanceDataService.GetStudentAttendance(student.Id, lecture.Id);

                if (attendanceStats.Any(x => x.Subject == lecture.Subject.Name))
                {
                    attendanceStats.FirstOrDefault(x => x.Subject == lecture.Subject.Name).LectureCount          += lecture.Occurences.Count;
                    attendanceStats.FirstOrDefault(x => x.Subject == lecture.Subject.Name).AttendedLecturesCount +=
                        attended.AttendedLectures == "" ? 0 : attended.AttendedLectures.Split(',').Count();
                }
                else
                {
                    var stats = new StudentAttendanceViewModel
                    {
                        Subject               = lecture.Subject.Name,
                        LectureCount          = lecture.Occurences.Count,
                        AttendedLecturesCount = attended.AttendedLectures == "" ? 0 : attended.AttendedLectures.Split(',').Count()
                    };
                    attendanceStats.Add(stats);
                }
            }

            return(View(attendanceStats));
        }
예제 #2
0
        private void UpdateAttendance(DateTime date, string cardNumber)
        {
            var currentTime = new DateTime(2018, 4, 16, 14, 27, 52);

            var studentDataService = new StudentDataService();
            var student            = studentDataService.GetByCardNumber(cardNumber);

            var groupDataService = new GroupDataService();
            var group            = groupDataService.GetByStudent(student.Id);

            var lectureDataService = new LectureDataService();
            var lectures           = lectureDataService.GetByGroupId(group.Id);

            var lectureId = -1;

            foreach (var lecture in lectures)
            {
                if (lecture.Occurences.FirstOrDefault(x => x.Date.ToShortDateString() == currentTime.ToShortDateString()) != null &&
                    lecture.LectureTime.LectureStart.AddMinutes(-5).TimeOfDay <= currentTime.TimeOfDay &&
                    lecture.LectureTime.LectureEnd.AddMinutes(5).TimeOfDay >= currentTime.TimeOfDay)
                {
                    lectureId = lecture.Id;
                    break;
                }
            }

            if (lectureId != -1)
            {
                var attendanceDataService = new AttendanceDataService();
                var attendance            = attendanceDataService.GetStudentAttendance(student.Id, lectureId);
                var dateString            = currentTime.ToString("yyyy-MM-dd");

                if (!attendance.AttendedLectures.Contains(dateString))
                {
                    attendance.AttendedLectures += dateString + ",";
                }

                attendanceDataService.UpdateLectures(attendance);
            }
        }