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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }