public async Task <ReportToTeacherByScheduleIdResponse> ReportToTeacherByScheduleId(ReportToTeacherByScheduleIdRequest request) { int scheduleId = Convert.ToInt32(request.ScheduleId); var reportedSchedule = _context.Schedules .Where(s => s.ScheduleId == scheduleId) .FirstOrDefault(); if (reportedSchedule != null) { // Change attendance report status to Reported reportedSchedule.ReportStatus = "Reported"; _context.SaveChanges(); FirebaseNotificationModel firebaseNotiModel = new FirebaseNotificationModel() { To = "/topics/teacher_" + reportedSchedule.TeacherId, Notification = new NotificationModel() { Title = "Attendance Report Date " + reportedSchedule.Date, Body = "Student with ID " + reportedSchedule.StudentId + " has reported attendance on slot " + reportedSchedule.SlotId } }; // Send notification to the responsible teacher and return response return(await FirebaseNotificationPusher.Send(firebaseNotiModel)); } return(null); }
public void SaveNewDetectedFace(string name, Image <Gray, byte> detectedFace) { using (var context = new FaceRecognitionContext()) { byte[] pixelData; using (var ms = new MemoryStream()) { detectedFace.Bitmap.Save(ms, ImageFormat.Bmp); pixelData = ms.ToArray(); } var recognizedFace = new RecognizedFace { Height = detectedFace.Height, Width = detectedFace.Width, PixelData = pixelData }; var user = new User { Face = recognizedFace, NickName = name }; context.Users.Add(user); context.SaveChanges(); } }
public void Add(ImageLabel image) { using (var context = new FaceRecognitionContext()) { context.ImageLabels.Add(image); context.SaveChanges(); } }
public void Add(IEnumerable <ImageLabel> images) { using (var context = new FaceRecognitionContext()) { context.ImageLabels.AddRange(images); context.SaveChanges(); } }
public void SetLabel(int imageLabelId, string label) { using (var context = new FaceRecognitionContext()) { var imageLabelToSetLabel = context.ImageLabels.FirstOrDefault(e => e.ImageLabelId == imageLabelId); if (imageLabelToSetLabel != null) { imageLabelToSetLabel.Label = label; context.SaveChanges(); } } }
public void Delete(int id) { using (var context = new FaceRecognitionContext()) { var imageLabelToDelete = context.ImageLabels.FirstOrDefault(e => e.ImageLabelId == id); if (imageLabelToDelete != null) { context.ImageLabels.Remove(imageLabelToDelete); context.SaveChanges(); } } }
public async Task <TakeAttendanceByImageResponse> TakeAttendanceByImage(TakeAttendanceByImageRequest request) { TakeAttendanceByImageResponse response = new TakeAttendanceByImageResponse(); var rootImages = new List <RootImage>(); var locationImagePath = Path.Combine(HttpRuntime.AppDomainAppPath, Constants.Config.AttendanceImagePath, request.Date.ToString("yyyyMMdd"), request.ClassId, request.SlotId.ToString()); ImageConverter.CreateDirectory(locationImagePath); int numberOfImage = 1; await Task.Run(async() => { foreach (var imageUrl in request.ImageUrls) { var image = await GetImages(imageUrl); rootImages.Add(image); //save image to folder ImageConverter.Base64ToImage(Path.Combine(locationImagePath, numberOfImage + ".jpg"), imageUrl); numberOfImage++; } }); var listCandidateId = new List <string>(); try { foreach (var rootImage in rootImages) { foreach (var image in rootImage.Images) { if (image.Candidates != null && image.Transaction.Status.Equals(Constants.KairosApi.TransactionSuccess)) { var firstCandidate = image.Candidates.OrderByDescending(c => c.Confidence).First(); listCandidateId.Add(firstCandidate.SubjectId); } } } } catch (Exception e) { Console.WriteLine(e.Message); } listCandidateId = listCandidateId.Distinct().ToList(); var studentList = (from sd in _context.Schedules where sd.TeacherId == request.UserId && sd.Date == request.Date && sd.SlotId == request.SlotId select sd).ToList(); List <StudentAttendance> students = new List <StudentAttendance>(); foreach (var student in studentList) { if (listCandidateId.Any(x => x.Equals(student.StudentId))) { student.AttendanceStatus = Constants.AttendanceStatus.Presented; } else { student.AttendanceStatus = Constants.AttendanceStatus.Absent; } var studentAttendance = (from st in _context.Students where st.StudentId == student.StudentId select new StudentAttendance() { StudentId = st.StudentId, FullName = st.FullName, Email = st.Email, AttendanceStatus = student.AttendanceStatus }).First(); students.Add(studentAttendance); } _context.SaveChanges(); response.Students = students; return(response); }