public RecognizerTaskOutput GroupImageCapture([FromBody] RecognizerTaskInput input) { RecognizerTaskOutput output = new RecognizerTaskOutput(); if (input == null) { Response.StatusCode = 400; output.Result = "INPUT_IS_NULL"; } else { AspUserService aspUser = new AspUserService(_db, this); if (aspUser.IsAdmin) { Recognizer recognizer = _db.Recognizers.Where(e => e.Id.Equals(input.RecognizerId) && e.Deleted == false).FirstOrDefault(); Class thisClass = aspUser.User.List_Classes.Where(e => e.Id.Equals(input.ClassId) && e.Deleted == false).FirstOrDefault(); if (recognizer == null) { Response.StatusCode = 400; output.Result = "RECOGNIZER_NOT_FOUND"; } else if (thisClass == null) { Response.StatusCode = 400; output.Result = "CLASS_NOT_FOUND"; } else { List <GroupImage> groupImages = thisClass.List_GroupImages.Where(e => e.Deleted == false && e.Status != 0).ToList(); foreach (GroupImage item in groupImages) { item.Status = 0; } RecognizerTask task = new RecognizerTask() { Command = "CAPTURE_CLASS_IMAGE", Status = 1, Recognizer = recognizer, PrimaryValue = thisClass.Id, SecondaryValue = (int.Parse(_db.SiteConfigs.Where(e => e.Key.Equals("NUM_PHOTO_PER_CLASS")).FirstOrDefault().Value) + 5).ToString() }; _db.RecognizerTasks.Add(task); _db.SaveChanges(); output.RecognizerTaskId = task.Id; output.Result = "OK"; } } else { Response.StatusCode = 400; output.Result = "NO_PRIVILEGE"; } } return(output); }
public string GetDurationSince() { RecognizerTask task = Recognizer.List_RecognizerTask.Where(e => e.Deleted == false).OrderByDescending(e => e.DateModified).FirstOrDefault(); TimeSpan duration; if (task == null) { duration = DateTime.UtcNow.AddHours(8) - Recognizer.DateCreated; } else { duration = DateTime.UtcNow.AddHours(8) - task.DateModified; } if (duration.TotalMinutes < 1) { return(Math.Floor(duration.TotalSeconds) + " Second(s)"); } else if (duration.TotalHours < 1) { return(Math.Floor(duration.TotalMinutes) + " Minute(s), " + Math.Floor((duration.TotalSeconds - (Math.Floor(duration.TotalMinutes) * 60))) + " Second(s)"); } else if (duration.TotalDays < 1) { return(Math.Floor(duration.TotalHours) + " Hour(s), " + Math.Floor((duration.TotalMinutes - (Math.Floor(duration.TotalHours) * 60))) + " Minute(s)"); } else { return(Math.Floor(duration.TotalDays) + " Day(s)"); } }
public RecognizerTaskOutput StudentImageCapture([FromBody] RecognizerTaskInput input) { RecognizerTaskOutput output = new RecognizerTaskOutput(); if (input == null) { Response.StatusCode = 400; output.Result = "INPUT_IS_NULL"; } else { AspUserService aspUser = new AspUserService(_db, this); if (aspUser.IsAdmin) { Recognizer recognizer = _db.Recognizers.Where(e => e.Id.Equals(input.RecognizerId) && e.Deleted == false).FirstOrDefault(); BCPUser student = _db._BCPUsers.Where(e => e.Id.Equals(input.StudentId) && e.Deleted == false).FirstOrDefault(); if (recognizer == null) { Response.StatusCode = 400; output.Result = "RECOGNIZER_NOT_FOUND"; } else if (student == null) { Response.StatusCode = 400; output.Result = "STUDENT_NOT_FOUND"; } else { List <UserImage> studentImages = student.List_UserImage.Where(e => e.Deleted == false && e.Status != 0).ToList(); foreach (UserImage item in studentImages) { item.Status = 0; } RecognizerTask task = new RecognizerTask() { Command = "REGISTER_NEW_FACE", Status = 1, Recognizer = recognizer, PrimaryValue = student.Id, SecondaryValue = (int.Parse(_db.SiteConfigs.Where(e => e.Key.Equals("NUM_PHOTO_PER_STUDENT")).FirstOrDefault().Value) + 5).ToString() }; _db.RecognizerTasks.Add(task); _db.SaveChanges(); output.RecognizerTaskId = task.Id; output.Result = "OK"; } } else { Response.StatusCode = 400; output.Result = "NO_PRIVILEGE"; } } return(output); }
public string GetStatus() { if (IsExist) { RecognizerTask task = Recognizer.List_RecognizerTask.Where(e => e.Deleted == false).Where(e => e.Status == 1 || e.Status == 2).OrderBy(e => e.DateCreated).FirstOrDefault(); if (task == null) { return("Idle"); } else if (task.Command == "REGISTER_NEW_FACE") { CheckExpiry(); return("Registering face"); } else if (task.Command == "CAPTURE_CLASS_IMAGE") { CheckExpiry(); return("Capturing class image"); } else { CheckExpiry(); return("Unknown"); } } else { return(null); } }
public void CheckExpiry() { RecognizerTask task = Recognizer.List_RecognizerTask.Where(e => e.Deleted == false).OrderByDescending(e => e.DateModified).FirstOrDefault(); TimeSpan timeSpan = DateTime.UtcNow.AddHours(8) - task.DateModified; if (timeSpan.TotalMinutes > 5) { task.Status = 0; } _db.SaveChanges(); }
public RecognizerTaskOutput CheckStatusById([FromBody] RecognizerTaskInput input) { RecognizerTaskOutput output = new RecognizerTaskOutput(); if (input == null) { Response.StatusCode = 400; output.Result = "INPUT_IS_NULL"; } else { AspUserService aspUser = new AspUserService(_db, this); if (aspUser.IsAdmin) { RecognizerTask task = _db.RecognizerTasks.Where(e => e.Id.Equals(input.RecognizerTaskId) && e.Deleted == false).FirstOrDefault(); if (task == null) { Response.StatusCode = 400; output.Result = "TASK_NOT_EXIST"; } else { if (task.Status == 0) { output.Status = "CANCELLED"; } else if (task.Status == 1) { output.Status = "UNREAD"; } else if (task.Status == 2) { output.Status = "READ"; } else if (task.Status == 3) { output.Status = "DONE"; } output.Result = "OK"; } } else { Response.StatusCode = 400; output.Result = "NO_PRIVILEGE"; } } return(output); }
public RecognizerInfoOutput FetchInstruction([FromBody] RecognizerInfoInput input) { RecognizerInfoOutput output = new RecognizerInfoOutput(); if (input == null) { Response.StatusCode = 400; output.Result = "INPUT_IS_NULL"; } else { RecognizerService recogService = new RecognizerService(input.RecognizerId, input.RecognizerKey, _db); if (recogService.IsAuthentic) { RecognizerTask task = recogService.GetLastUnreadTask(); if (task == null) { output.Result = "NO_NEW_TASK"; } else { task.Status = 2; task.DateModified = DateTime.UtcNow.AddHours(8); _db.SaveChanges(); output.TaskId = task.Id; output.Command = task.Command; output.PrimaryValue = task.PrimaryValue; output.SecondaryValue = task.SecondaryValue; output.Result = "OK"; } } else { Response.StatusCode = 400; output.Result = "CREDENTIAL_ERROR"; } } return(output); }
public RecognizerInfoOutput MarkTaskComplete([FromBody] RecognizerInfoInput input) { RecognizerInfoOutput output = new RecognizerInfoOutput(); if (input == null) { Response.StatusCode = 400; output.Result = "INPUT_IS_NULL"; } else { RecognizerService recogService = new RecognizerService(input.RecognizerId, input.RecognizerKey, _db); if (recogService.IsAuthentic) { RecognizerTask task = recogService.Recognizer.List_RecognizerTask.Where(e => e.Id.Equals(input.RecognizerTaskId) && e.Deleted == false).FirstOrDefault(); if (task == null) { Response.StatusCode = 400; output.Result = "TASK_NOT_EXIST"; } else { task.DateModified = DateTime.UtcNow.AddHours(8); task.Status = 3; _db.SaveChanges(); output.Result = "OK"; } } else { Response.StatusCode = 400; output.Result = "CREDENTIAL_ERROR"; } } return(output); }