Ejemplo n.º 1
0
        public static async Task <PersonOperationStatus> CreatePerson(string strPersonGroupId, string strPersonName)
        {
            PersonOperationStatus status = new PersonOperationStatus();
            ////////////////////////////////////////////////////////////////////////////////////
            string strUserData = "";

            try
            {
                ////////////////////////////////////////////////////////////////////////////////////
                status.AttemptedDatabaseOperation = true;
                MyPerson person = new MyPerson();
                using (var db = new Facial_Recognition_Library.Data.LiveEduFaceModel())
                {
                    status.CompletedDatabaseOperation = MyPerson.AddPerson(db, ref person);
                }
                ////////////////////////////////////////////////////////////////////////////////////
                status.AttemptedAPIOperation = true;
                await ProjectOxfordAPI.CreatePerson(strPersonGroupId, strPersonName, strUserData);

                status.CompletedAPIOperation = true;
                ////////////////////////////////////////////////////////////////////////////////////
            }
            catch (Exception e)
            {
                status.ReasonForFailure = $"Attempts made to update database and api failed : {e.Message}";
            }
            return(status);
        }
Ejemplo n.º 2
0
        public static async Task <PersonGroupOperationStatus> CreatePersonGroup(string PersonGroupName, string PersonGroupId)
        {
            bool rtnStatus = false;
            PersonGroupOperationStatus status = new PersonGroupOperationStatus();
            ////////////////////////////////////////////////////////////////////////////////////
            string uuidSystemID = "";

            try
            {
                ////////////////////////////////////////////////////////////////////////////////////
                status.AttemptedDatabaseOperation = true;
                using (var db = new Facial_Recognition_Library.Data.LiveEduFaceModel())
                {
                    MyPersonGroup PersonGroup = new MyPersonGroup
                    {
                        Name  = PersonGroupName,
                        IDApi = PersonGroupId
                    };
                    status.CompletedDatabaseOperation = MyPersonGroup.AddPersonGroup(db, ref PersonGroup);
                    uuidSystemID = PersonGroup.IDApi;
                }
                status.CompletedDatabaseOperation = true;
                ////////////////////////////////////////////////////////////////////////////////////
                status.AttemptedAPIOperation = true;
                await ProjectOxfordAPI.CreatePersonGroup(PersonGroupId, PersonGroupName, uuidSystemID);

                status.CompletedAPIOperation = true;
                ////////////////////////////////////////////////////////////////////////////////////
            }
            catch (Exception e)
            {
                status.ReasonForFailure = $"Attempts made to update database and api failed : {e.Message}";
            }
            return(status);
        }
        public async Task AddPersonTest()
        {
            var PersonGroups = await ProjectOxfordAPI.GetAllPersonGroups();

            Assert.IsTrue(PersonGroups.Count > 0, "PersonGroups.Count !> 0");
            foreach (var personGroup in PersonGroups)
            {
                System.Diagnostics.Debug.WriteLine($"Person Group Name : {personGroup.Name} | Person Group ID : {personGroup.PersonGroupId}");


                PersonResult = await ProjectOxfordAPI.CreatePerson(personGroup.PersonGroupId, "MyOxfardFaceTest", "");

                if (PersonResult != null)
                {
                    //Considered successful test.

                    //if (PersonResult.PersonId != Guid.Empty)
                    //{
                    //    await DeletePerson();
                    //}
                    //else
                    //{
                    //    Assert.Fail("Person ID was null");
                    //}
                }
                else
                {
                    Assert.Fail("Person Result was null");
                }
            }
        }
 public async Task DeleteFaceFromPersonByPersistantFaceId()
 {
     if (persistedFaceResult == null)
     {
         await AddFaceToPerson();
     }
     await ProjectOxfordAPI.DeletePersonFaceAsync(cstPersonGroupIDforTest, PersonResult.PersonId, persistedFaceResult.PersistedFaceId);
 }
Ejemplo n.º 5
0
        public static ToolStripMenuProcessResult OpenImgFromFileSystem(ref object sender, EventArgs e)
        {
            ToolStripMenuProcessResult methodResult = new ToolStripMenuProcessResult();

            //TODO: Move this to the libary. : openToolStripMenuItem_Click
            string fileLocation = @"W:\Example Pictures\imgNov82017.png";

            var MyCurrentImage = Image.FromFile(fileLocation);

            using (MemoryStream ms = new MemoryStream())
            {
                MyCurrentImage.Save(ms, ImageFormat.Png);
                try
                {
                    Microsoft.ProjectOxford.Face.Contract.Face face;
                    try
                    {
                        var faces = AsyncHelpers.RunSync(() => ProjectOxfordAPI.DetectFace(ms));
                        face = faces.First();
                    }
                    catch (Exception f)
                    {
                        face = new Face();
                    }

                    if (face.FaceId != Guid.Empty)
                    {
                        MyFace newface = new MyFace
                        {
                            FaceID         = face.FaceId,
                            FaceAttributes = Newtonsoft.Json.JsonConvert.SerializeObject(face.FaceAttributes),
                            FaceLandmarks  = Newtonsoft.Json.JsonConvert.SerializeObject(face.FaceLandmarks),
                            FaceRectangle  = Newtonsoft.Json.JsonConvert.SerializeObject(face.FaceRectangle),
                            ImageBytes     = ms.ToArray()
                        };

                        using (var db = new Facial_Recognition_Library.Data.LiveEduFaceModel())
                        {
                            db.MyFaces.Add(newface);
                            db.SaveChanges();

                            foreach (var faceItem in db.MyFaces)
                            {
                                System.Diagnostics.Debug.WriteLine($"{faceItem.FaceID.ToString()} - {faceItem.FaceRectangle}");
                            }
                        }
                    }
                }
                catch (Exception s)
                {
                    //MessageBox.Show(e.Message);
                    //throw e;
                }
            }

            return(methodResult);
        }
 public async Task DeletePerson()
 {
     if (PersonResult != null)
     {
         await ProjectOxfordAPI.DeletePersonAsync(cstPersonGroupIDforTest, PersonResult.PersonId);
     }
     else
     {
         Assert.Inconclusive("Person Result is null so there's nothing to delete.");
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Event handlers for the Data Grid View "FaceAPI - FaceList"
        /// </summary>
        /// <param name="sender">dgvFaceAPIFaceLists</param>
        /// <param name="e"></param>
        /// <param name="Column">Column of the event thats being fired</param>
        /// <returns></returns>
        /// <remarks>
        /// There's two ways to go about handling these events, one you can take the column and look it up.
        ///                     OR
        /// you can use the <see cref="System.Windows.Forms.DataGridViewCellEventArgs"/> Column Index to lookup the control <seealso cref="Facial_Recognition_Library.Controls.DataGridViewMethods"/>
        /// </remarks>
        public static DataGridViewsProcessResult DgvFaceApiFaceLists(ref object sender, DataGridViewCellEventArgs e, DataGridViewColumn Column)
        {
            DataGridViewsProcessResult methodResult = new DataGridViewsProcessResult();

            if (sender is DataGridView dgvFaceApiFaceLists)
            {
                if (Column != null)
                {
                    if (e.RowIndex < 0)
                    {
                        methodResult.Success = false;
                        methodResult.Reason  = $"the Select Row is < 0 [No Row Selected]";
                        return(methodResult);
                    }
                    //NAME: Delete Face List By Face List ID
                    if (e.ColumnIndex == dgvFaceApiFaceLists.Columns[Column.Name]?.Index)
                    {
                        //TODO: Fix this becasue it doesn't lookup the value by column Index properly we want it to mimic the index lookup from the line above.
                        string FaceListID = (string)dgvFaceApiFaceLists[0, e.RowIndex].Value;
                        var    concent    = MessageBox.Show($@"Are you sure you want to delete {FaceListID.ToString()} from the DB and API?", $@"Remove Face List", MessageBoxButtons.OKCancel);
                        if (concent == DialogResult.OK)
                        {
                            bool Success = ProjectOxfordAPI.DeleteFaceListByFaceListID(FaceListID).Result;
                            if (Success)
                            {
                                //LoadAPIFaceList();
                                methodResult.Success = true;
                                methodResult.ShouldRefreshAPIDataGrids      = false;
                                methodResult.ShouldRefreshDatabaseDataGrids = true;
                                throw new NotImplementedException();
                            }
                        }
                    }
                    //NAME: Show Face Details
                    else if (e.ColumnIndex == dgvFaceApiFaceLists.Columns[Column.Name]?.Index)
                    {
                        throw new NotImplementedException();
                        //frmShowFaceListDetails frmShowFaceList = new frmShowFaceListDetails();
                        //frmShowFaceList.FaceListGuid = dgvFaceAPIFaceLists[0, e.RowIndex].Value.ToString();
                        //frmShowFaceList.ShowDialog();
                    }
                    //NAME: Catch all for : FaceAPI - Face Lists
                    else
                    {
                        //do nothing:)
                        System.Diagnostics.Debug.WriteLine($"Data Grid View Handler : Face API Face List was called but the click was not handled.");
                    }
                }
            }

            return(methodResult);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Event handlers for the Data Grid View "Face Lists In DB"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <param name="column"></param>
        /// <returns></returns>
        public static DataGridViewsProcessResult DgvFaceListDb(ref object sender, DataGridViewCellEventArgs e, DataGridViewColumn column)
        {
            DataGridViewsProcessResult methodResult = new DataGridViewsProcessResult();

            if (sender is DataGridView dgvFaceListInDB)
            {
                if (e.RowIndex < 0)
                {
                    return(null);
                }
                //NAME: Delete Face List
                if (e.ColumnIndex == dgvFaceListInDB.Columns[column.Name]?.Index)
                {
                    //NAME: DELETE FACE LIST
                    //TODO: The Cell Reference needs to be exact so that users can move the Columns.
                    Guid faceListDbid = (Guid)dgvFaceListInDB[0, e.RowIndex].Value;
                    var  concent      = MessageBox.Show($@"Are you sure you want to delete {faceListDbid.ToString()} from the DB and API?", $@"Remove Face List", MessageBoxButtons.OKCancel);
                    if (concent == DialogResult.OK)
                    {
                        string faceListId = "";
                        using (var db = new LiveEduFaceModel())
                        {
                            var myFaceList = db.MyFaceLists.Single(x => x.ID == faceListDbid);
                            faceListId = myFaceList.FaceListId;
                            db.MyFaceLists.Remove(myFaceList);
                            db.SaveChanges();
                        }
                        bool Success = ProjectOxfordAPI.DeleteFaceListByFaceListID(faceListId).Result;
                        if (Success)
                        {
                            MessageBox.Show($@"Item Removed: Refreshing Data");
                            //LoadAPIFaceList();
                        }
                    }
                    else
                    {
                    }
                }
                else if (e.ColumnIndex == dgvFaceListInDB.Columns[column.Name]?.Index)
                {
                    //SHOW FACE LIST DETAILS
                }
                else
                {
                }
            }

            return(methodResult);
        }
        public async Task AddPersonGroup()
        {
            await ProjectOxfordAPI.CreatePersonGroup(cstPersonGroupIDforTest, cstPersonGroupNameforTest, "TEST DATA: DELETE ME IF YOU CAN");

            //
            var PersonGroups = await ProjectOxfordAPI.GetAllPersonGroups();

            Assert.IsTrue(PersonGroups.Count > 0, "PersonGroups.Count !> 0");
            var TestGroup = PersonGroups.Where(pg => pg.PersonGroupId == cstPersonGroupIDforTest);

            if (!TestGroup.Any())
            {
                Assert.Fail("Couldn't Find Test group after addition.");
            }
        }
        public async Task AddFaceToPerson()
        {
            if (PersonResult == null)
            {
                await AddPersonTest();
            }
            string TestPictureLocation = $@"W:\Example Pictures\imgNov82017.png";

            using (Stream stream = File.OpenRead(TestPictureLocation))
            {
                persistedFaceResult = await ProjectOxfordAPI.AddPersonFaceAsync(cstPersonGroupIDforTest, PersonResult.PersonId, stream);

                Assert.IsTrue(persistedFaceResult != null, "item == null");
            }
        }
        public async Task DeletePersonGroup()
        {
            var PersonGroups = await ProjectOxfordAPI.GetAllPersonGroups();

            if (PersonGroups.Any())
            {
                var TestGroup = PersonGroups.Where(pg => pg.PersonGroupId == cstPersonGroupIDforTest);
                if (TestGroup.Any())
                {
                    await ProjectOxfordAPI.DeletePersonGroup(cstPersonGroupIDforTest);
                }
            }
            else
            {
                Assert.Inconclusive($"Test not run due to missing data at api endpoint. Test Initialization should include PersonGroup ID:  {cstPersonGroupIDforTest}");
            }
        }
Ejemplo n.º 12
0
        public static async Task <PersonGroupOperationStatus> DeletePersonGroup(string PersonGroupId)
        {
            bool rtnStatus = false;
            PersonGroupOperationStatus status = new PersonGroupOperationStatus();
            ////////////////////////////////////////////////////////////////////////////////////
            Guid uuidSystemID = Guid.Empty;

            ////////////////////////////////////////////////////////////////////////////////////
            status.AttemptedDatabaseOperation = true;
            try
            {
                using (var db = new Facial_Recognition_Library.Data.LiveEduFaceModel())
                {
                    status.CompletedDatabaseOperation = MyPersonGroup.DeletePersonGroupById(db, PersonGroupId);
                }
                status.CompletedDatabaseOperation = true;
            }
            catch (Exception e)
            {
                status.ReasonForFailure += $"Failed to remove from database {e.Message} |";
            }

            ////////////////////////////////////////////////////////////////////////////////////
            status.AttemptedAPIOperation = true;
            try
            {
                await ProjectOxfordAPI.DeletePersonGroup(PersonGroupId);

                status.CompletedAPIOperation = true;
            }
            catch (Exception e)
            {
                status.ReasonForFailure += $"Failed to remove from api {e.Message} |";
            }
            ////////////////////////////////////////////////////////////////////////////////////
            return(status);
        }
Ejemplo n.º 13
0
        private async Task LoadAPIPersons()
        {
            var loPersons = await ProjectOxfordAPI.GetAllPersonsFromAllPersonGroups();

            this.APIPersonBindingSource.DataSource = loPersons.ToList();
        }
Ejemplo n.º 14
0
 private async Task LoadAPIFaceList()
 {
     //Example of inline await calling. IL is the same as LoadAPIPersonGroup
     this.APIFaceListMetadataBindingSource.DataSource = (await ProjectOxfordAPI.GetAllFaceLists()).ToList();
 }