Ejemplo n.º 1
0
 private static IEnumerable <Enrollments> GetEnrollmentsForUserId(int userId, attWebApiContext context)
 {
     return(from e in context.Enrollments
            join c in context.Courses on e.CourseId equals c.Id
            join ca in context.CoursesAssignments on new { e.CourseId, e.AcademicTermId } equals new { ca.CourseId, ca.AcademicTermId }
            join u in context.Users on e.StudentId equals u.Id
            where u.Id == userId
            select e);
 }
Ejemplo n.º 2
0
 public static bool ValidateNewAttendanceLog(AttendanceLog log, attWebApiContext context)
 {
     if (
         log.Id != 0 && context.AttendanceLog.Any(x => x.Id == log.Id) ||
         !context.Users.Any(x => x.Id == log.StudentId) ||
         !context.Courses.Any(x => x.Id == log.CourseId) ||
         !context.AcademicTerms.Any(x => x.Id == log.AcademicTermId) ||
         !context.AttendanceTypes.Any(x => x.Id == log.AttendanceTypeId)
         )
     {
         return(false);
     }
     return(true);
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Get specific user's roles
 /// </summary>
 /// <param name="userId"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public static List <int> GetUserRoles(int userId, attWebApiContext context) => (from u in context.Users
                                                                                 join ur in context.UserRoles on u.Id equals ur.UserId
                                                                                     where u.Id == userId
                                                                                 select ur.RoleId).ToList();
Ejemplo n.º 4
0
 public UsersController(attWebApiContext context, IConfiguration configuration)
 {
     _context       = context;
     _configuration = configuration;
     _connString    = _configuration.GetSection("ConnectionStrings").GetSection(_configuration.GetSection("ConnectionStringName").Value).Value;
 }
Ejemplo n.º 5
0
 public TokenController(attWebApiContext context, IConfiguration configuration)
 {
     _context = context;
     _configuration = configuration;
 }
Ejemplo n.º 6
0
        public static AttendanceRegistrationDataValidationObject ValidateRegistrationData(AttendanceRegistrationData data, attWebApiContext context, IConfiguration configuration)
        {
            var valid = true;
            var error = string.Empty;

            if (!LogHelper.ValidateNewAttendanceLog(data.Attendance, context))
            {
                valid = false;
            }
            else
            {
                // Validate location and timestamp
                if (data.CoursesAssignmentID != null)
                {
                    // Classroom's coordinates
                    var classRoom = (from c in context.ClassRooms
                                     join ca in context.CoursesAssignments on c.Id equals ca.ClassRoomId
                                     where ca.Id == data.CoursesAssignmentID
                                     select c).SingleOrDefault();

                    if (classRoom != default(ClassRooms) && classRoom.Longitude != null && classRoom.Latitude != null && classRoom.RangeInMeters != null)
                    {
                        double thisLon        = (double)classRoom.Longitude;
                        double thisLat        = (double)classRoom.Latitude;
                        var    distanceBuffer = (double)classRoom.RangeInMeters;

                        var minutesBuffer = configuration.GetSection("App").GetSection("RegisterAttendance").GetSection("TimeBufferInMinutes").Value;
                        var distance      = LogHelper.DistanceInMeters(thisLat, thisLon, data.GeoLat, data.GeoLon);

                        var enrollments = GetEnrollmentsForUserId(data.Attendance.StudentId, context);

                        if (distance > distanceBuffer)
                        {
                            valid = false;
                            error = "Your device is detected too far from the classroom!";
                        }
                        else if (TimeSpan.FromTicks(DateTime.Now.Ticks - data.SessionStartTimestamp).TotalMinutes > Convert.ToInt32(minutesBuffer))
                        {
                            valid = false;
                            error = $"It's been over {minutesBuffer} minutes since the beginning of the course";
                        }
                        else if (!enrollments.Any(e => e.CourseId == data.Attendance.CourseId))
                        {
                            valid = false;
                            error = $"You are not enrolled to {context.Courses.SingleOrDefault(c=>c.Id == data.Attendance.CourseId).Title}";
                        }
                    }
                    else
                    {
                        valid = false;
                    }
                }
                else
                {
                    valid = false;
                }
            }
            return(new AttendanceRegistrationDataValidationObject {
                valid = valid,
                error = error
            });
        }
Ejemplo n.º 7
0
        public static EnrollmentAttendanceLogs GetAttendanceLogsForEnrollment(int enrollmentId, attWebApiContext context)
        {
            var logs = (from l in context.AttendanceLog
                        join e in context.Enrollments on new { l.StudentId, l.CourseId, l.AcademicTermId } equals new { e.StudentId, e.CourseId, e.AcademicTermId }
                        where e.Id == enrollmentId
                        select l).ToList();
            var courseAssignment = (from ca in context.CoursesAssignments
                                    join c in context.Courses on ca.CourseId equals c.Id
                                    join e in context.Enrollments on new { ca.CourseId, ca.AcademicTermId } equals new { e.CourseId, e.AcademicTermId }
                                    where e.Id == enrollmentId
                                    select new {
                ca.Id,
                ca.LecturesMinNum,
                ca.LecturesTargetNum,
                CourseTitle = c.Title
            }).SingleOrDefault();
            var enrollmentLogs = new EnrollmentAttendanceLogs
            {
                Logs              = logs,
                CourseTitle       = courseAssignment.CourseTitle,
                LecturesMinNum    = courseAssignment.LecturesMinNum,
                LecturesTargetNum = courseAssignment.LecturesTargetNum,
                LecturesActualNum = context.LecturesLog.Where(l => l.CourseAssignmentId == courseAssignment.Id).Count(),
                Date              = DateTime.Now
            };

            return(enrollmentLogs);
        }
Ejemplo n.º 8
0
 public static IEnumerable <AttendanceLog> GetDuplicatedLog(AttendanceLog newLog, attWebApiContext context)
 {
     return(context.AttendanceLog.Where(a => a.StudentId == newLog.StudentId && a.CourseId == newLog.CourseId && a.AcademicTermId == newLog.AcademicTermId && a.Date == newLog.Date));
 }
Ejemplo n.º 9
0
 public AttendanceTypesController(attWebApiContext context)
 {
     _context = context;
 }
 public AcademicTermTypesController(attWebApiContext context)
 {
     _context = context;
 }