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 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 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);
        }