private void Initialize(bool isToReloadBiometrics) { _student = new Data.Student(); _biometric = new Biometric(); _relBiometric = new RelBiometric(); _attendance = new Attendance(); _IsFingerEnrolled = false; _Verificator = new DPFP.Verification.Verification(); // Create a fingerprint template verificator if (isToReloadBiometrics) { _Biometrics = _biometricsRepository.GetBiometrics(); //Load all FingerPrintTemplate (fpt); Remarks = (_Biometrics.Count == 0) ? "No fingerprint template available in our records." : ""; } Student.ImageData = null; if (smsTimer == null) { smsTimer = new Timer(1000 * 60 * 60); smsTimer.Elapsed += new ElapsedEventHandler(OnSMSTimerEvent); smsTimer.Start(); } }
public RelBiometric AddRelBiometric(RelBiometric relBiometric) { using (_context = ConnectionHelper.CreateConnection()) { _context.RelBiometrics.Add(relBiometric); _context.SaveChanges(); return(relBiometric); } }
public RelBiometric UpdateRelBiometric(RelBiometric RelBiometric) { using (_context = ConnectionHelper.CreateConnection()) { if (!_context.RelBiometrics.Local.Any(r => r.RelBiometricID == RelBiometric.RelBiometricID)) { _context.RelBiometrics.Attach(RelBiometric); } _context.Entry(RelBiometric).State = EntityState.Modified; _context.SaveChanges(); return(RelBiometric); } }
public void OnEnrollBiometric(Biometric biometric) { Biometric = biometric; RelBiometric relBiometric = new RelBiometric { RelBiometricID = Guid.NewGuid() }; relBiometric.FingerID = Biometric.FingerID; relBiometric.StudentID = Student.StudentGuid; if (Student.RelBiometrics == null) { Student.RelBiometrics = new ObservableCollection <RelBiometric>(); } if (Student.RelBiometrics.FirstOrDefault() == null) { Biometric.FingerName = "Finger 1"; } else { Biometric temp = Student.Biometrics.FirstOrDefault(); if (temp == null) { Biometric.FingerName = "Finger 1"; } else if (temp.FingerName == "Finger 1") { Biometric.FingerName = "Finger 2"; } else { Biometric.FingerName = "Finger 1"; } } Student.RelBiometrics.Add(relBiometric); Student.Biometrics.Add(Biometric); _biometricsRepository.AddBiometric(Biometric); AddedBiometrics.Add(Biometric); AddedRelBiometrics.Add(relBiometric); }
private bool ValidateFinger(FeatureSet FeatureSet) { MemoryStream fingerprintData = null; Result result = null; foreach (Biometric biometric in _Biometrics) // Loop on the FPT List from DB to Compare the feature set with the DB templates { fingerprintData = new MemoryStream(biometric.FingerPrintTemplate); _Template = new Template(fingerprintData); result = new Result(); _Verificator.Verify(FeatureSet, _Template, ref result); if (result.Verified) { _Verificator = new DPFP.Verification.Verification(); _relBiometric = _relBiometricsRepository.GetRelBiometric(biometric.FingerID); if (_relBiometric != null) //Check if finger is enrolled. { _student = _studentsRepository.GetStudent(_relBiometric.StudentID); Student = _student; _attendance = _attendancesRepository.GetAttendanceByStudentID(_student.StudentGuid); if (_attendance != null) //Check if student has already logged in for the day. { if (_attendance.TimeOut == null) //Check if student already logged out for the day { DateTime login = _attendance.TimeIn; DateTime logout = DateTime.Now; logout = new DateTime(logout.Year, logout.Month, logout.Day, logout.Hour, logout.Minute, 0); if (logout > login.Add(new TimeSpan(1, 0, 0))) //Check if TimeSpan between login and logout is greater than allowed threshold { _attendance.IsOverstay = false; _attendance.IsEarlyOut = false; //Update student logout _attendance.TimeOut = logout; //Check if student is overstay or undertime; TimeSpan timeOut = logout.TimeOfDay; timeOut = new TimeSpan(timeOut.Hours, timeOut.Minutes, 0); TimeSpan endTime = _student.Section.EndTime; if (timeOut >= endTime.Add(new TimeSpan(1, 0, 0))) { _attendance.IsOverstay = true; } if (timeOut < endTime) { _attendance.IsEarlyOut = true; } _attendancesRepository.UpdateAttendance(_attendance); //Updated attendance record Application.Current.Dispatcher.Invoke(delegate { _attendanceLogs.Insert(0, new AttendanceLog(_student.ImageData, _student.FirstName, _student.LastName, "logged out.", _attendance.TimeOut)); //Add action to attendance log }); ProcessSMSIntegration(_attendance.AttendanceID.ToString(), false, (DateTime)_attendance.TimeOut, _student); Remarks = "Student logged out."; } else { Remarks = "Student is not allowed to logout 1 hour after logging in."; } } else { Remarks = "Student is not allowed to logout twice a day."; } } else { DateTime login = DateTime.Now; login = new DateTime(login.Year, login.Month, login.Day, login.Hour, login.Minute, 0); //Create new attendance record for the student. _attendance = new Attendance { AttendanceID = Guid.NewGuid(), StudentID = _student.StudentGuid, TimeIn = login }; TimeSpan timeIn = _attendance.TimeIn.TimeOfDay; TimeSpan startTime = _student.Section.StartTime; if (timeIn > startTime) { _attendance.IsLate = true; } else { _attendance.IsLate = false; } _attendancesRepository.AddAttendance(_attendance); //Add Record Application.Current.Dispatcher.Invoke(delegate { _attendanceLogs.Insert(0, new AttendanceLog(_student.ImageData, _student.FirstName, _student.LastName, "logged in.", _attendance.TimeIn)); }); ProcessSMSIntegration(_attendance.AttendanceID.ToString(), true, _attendance.TimeIn, _student); Remarks = "Student logged in."; } return(true); } else { Remarks = "Fingerprint in system but not linked to any student."; break; } } } return(false); }