예제 #1
0
        async Task addPresenceAsync(int userId, int eventId)
        {
            var presenceInsertRequest = new PresenceInsertRequest()
            {
                PresenceCreatingDateTime  = DateTime.Now,
                PresenceAttendingDateTime = null,
                PresenceLeavingDateTime   = null,
                Notes = null,
                AttendedWholeEvent = null,
                UserId             = userId,
                EventId            = eventId,
            };

            await apiService_presence.Insert <Model.Presence>(presenceInsertRequest);
        }
예제 #2
0
        private async void dgvPresence_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (setup == false)
            {
                //checkbox AttendedEvent
                if (e.ColumnIndex == dgvPresence.Columns[6].Index && e.RowIndex != -1)
                {
                    var row = dgvPresence.Rows[e.RowIndex];
                    var userId = Convert.ToInt32(row.Cells[0].Value);
                    var presenceId = Convert.ToInt32(row.Cells[1].Value);
                    var attendedEvent = Convert.ToBoolean(row.Cells[6].Value);
                    if (attendedEvent == false)
                    {
                        //row.Cells[7].Value = false;
                        row.Cells[7].ReadOnly = true;
                    }
                    else
                    {
                        row.Cells[7].ReadOnly = false;
                    }
                    var presence = await apiService_presence.GetById<Model.Presence>(presenceId);

                    var presenceInsertRequest = new PresenceInsertRequest()
                    {
                        EventId = presence.EventId,
                        UserId = presence.UserId,
                        FaceDetected = presence.FaceDetected,
                        Image = presence.Image,
                        Notes = presence.Notes,
                        FaceRecognized = presence.FaceRecognized,
                        //PresenceAttendingDateTime=presence.PresenceAttendingDateTime,
                        PresenceCreatingDateTime = presence.PresenceCreatingDateTime,
                        //PresenceLeavingDateTime=presence.PresenceLeavingDateTime,
                    };
                    if (attendedEvent == false)
                    {
                        presenceInsertRequest.AttendedWholeEvent = false;
                        presenceInsertRequest.PresenceAttendingDateTime = null;
                        presenceInsertRequest.PresenceLeavingDateTime = null;
                    }
                    else
                    {
                        presenceInsertRequest.AttendedWholeEvent = true;
                        presenceInsertRequest.PresenceAttendingDateTime = presence.PresenceAttendingDateTime;
                        presenceInsertRequest.PresenceLeavingDateTime = null;
                    }
                    await apiService_presence.Update<Model.Presence>(presenceId, presenceInsertRequest);

                    dgvPresence.EndEdit();
                }
                //checkbox attended whole event
                if (e.ColumnIndex == dgvPresence.Columns[7].Index && e.RowIndex != -1)
                {
                    var row = dgvPresence.Rows[e.RowIndex];
                    var userId = Convert.ToInt32(row.Cells[0].Value);
                    var presenceId = Convert.ToInt32(row.Cells[1].Value);
                    var attendedEvent = Convert.ToBoolean(row.Cells[6].Value);
                    var attendedWholeEvent = Convert.ToBoolean(row.Cells[7].Value);


                    var presence = await apiService_presence.GetById<Model.Presence>(presenceId);

                    var presenceInsertRequest = new PresenceInsertRequest()
                    {
                        EventId = presence.EventId,
                        UserId = presence.UserId,
                        FaceDetected = presence.FaceDetected,
                        Image = presence.Image,
                        Notes = presence.Notes,
                        FaceRecognized = presence.FaceRecognized,
                        //PresenceAttendingDateTime=presence.PresenceAttendingDateTime,
                        PresenceCreatingDateTime = presence.PresenceCreatingDateTime,
                        //PresenceLeavingDateTime=presence.PresenceLeavingDateTime,
                    };
                    if (attendedEvent == false)
                    {
                        presenceInsertRequest.AttendedWholeEvent = false;
                        presenceInsertRequest.PresenceAttendingDateTime = null;
                        presenceInsertRequest.PresenceLeavingDateTime = null;
                    }
                    else
                    {
                        presenceInsertRequest.AttendedWholeEvent = true;
                        presenceInsertRequest.PresenceAttendingDateTime = (DateTime)presence.PresenceAttendingDateTime;
                        presenceInsertRequest.PresenceLeavingDateTime = DateTime.Now;
                    }
                    await apiService_presence.Update<Model.Presence>(presenceId, presenceInsertRequest);
                    dgvPresence.EndEdit();
                }
                //checkbox face recognized
                if (e.ColumnIndex == dgvPresence.Columns[10].Index && e.RowIndex != -1)
                {
                    var row = dgvPresence.Rows[e.RowIndex];
                    var userId = Convert.ToInt32(row.Cells[0].Value);
                    var presenceId = Convert.ToInt32(row.Cells[1].Value);
                    var faceRecognized = Convert.ToBoolean(row.Cells[10].Value);

                    var presence = await apiService_presence.GetById<Model.Presence>(presenceId);

                    var presenceInsertRequest = new PresenceInsertRequest()
                    {
                        EventId = presence.EventId,
                        UserId = presence.UserId,
                        FaceDetected = presence.FaceDetected,
                        Image = presence.Image,
                        Notes = presence.Notes,
                        FaceRecognized = faceRecognized,
                        PresenceAttendingDateTime = presence.PresenceAttendingDateTime,
                        PresenceCreatingDateTime = presence.PresenceCreatingDateTime,
                        PresenceLeavingDateTime = presence.PresenceLeavingDateTime,
                        AttendedWholeEvent = presence.AttendedWholeEvent,
                        AttendedEvent = Convert.ToBoolean(row.Cells[6].Value)
                    };
                    await apiService_presence.Update<Model.Presence>(presenceId, presenceInsertRequest);

                    if (faceRecognized == true)
                        row.Cells[13].ReadOnly = true;
                    else
                        row.Cells[13].ReadOnly = false;



                    dgvPresence.EndEdit();
                }
                //checkbox use as training data
                if (e.ColumnIndex == dgvPresence.Columns[13].Index && e.RowIndex != -1)
                {
                    var row = dgvPresence.Rows[e.RowIndex];
                    var userId = Convert.ToInt32(row.Cells[0].Value);
                    var presenceId = Convert.ToInt32(row.Cells[1].Value);
                    var presence = await apiService_presence.GetById<Model.Presence>(presenceId);
                    var useAsTrainingData = Convert.ToBoolean(row.Cells[13].Value);

                    if (useAsTrainingData == true)
                    {
                        Model.AuthUserFace trainingData = new Model.AuthUserFace()
                        {
                            AuthUserId = userId,
                            PresenceId = presenceId,
                            Face = presence.Image
                        };
                        await apiService_authUserFace.Insert<Model.AuthUserFace>(trainingData);
                    }
                    else
                    {
                        //await apiService_authUserFace.Delete<bool>(1);
                    }
                    //



                    dgvPresence.EndEdit();
                }

                if (e.ColumnIndex == dgvPresence.Columns[14].Index && e.RowIndex != -1)
                {
                }
            }
        }
예제 #3
0
        private async void face_recognition_Tick(object sender, EventArgs e)
        {
            Bitmap frame = pbCamera.Image.Clone() as Bitmap;

            Image <Gray, Byte> frameGray = new Image <Gray, Byte>(frame);
            //detecting face
            var rect = detectFace(frameGray);

            //face not found
            if (rect == null)
            {
                return;
            }
            else
            {
                //face found
                var userImage = cutImage(frameGray, (Rectangle)rect);
                //replacing pbImage
                var bitmapUserImage = userImage.Bitmap;
                pbUser.Image = bitmapUserImage;
                //scaling image to 100x100 so face can be recognized
                Image <Gray, byte> result = userImage.Copy().Convert <Gray, byte>().Resize(100, 100, Emgu.CV.CvEnum.Inter.Cubic);
                //predicting user based on picture...
                var predictResult = FaceRecognition.Predict(result.Mat);
                var id            = (int)predictResult.Label;
                if ((int)id > 0)
                {
                    FaceRecognitionTicks      = 0;
                    FaceRecognitionTotalTicks = 0;
                    act            = action.idle;
                    lblAction.Text = act.ToString();
                    face_recognition.Dispose();


                    var presenceInsertRequest = new PresenceInsertRequest()
                    {
                        AttendedWholeEvent = true,
                        EventId            = Event.Id,
                        UserId             = user.Id,
                        Image = ImageToByte2(result.Bitmap),
                        Notes = "",
                        PresenceAttendingDateTime = DateTime.Now,
                        PresenceCreatingDateTime  = presence.PresenceCreatingDateTime,
                        PresenceLeavingDateTime   = null,
                        FaceDetected   = true,
                        FaceRecognized = true
                    };
                    await apiService_Presence.Update <Model.Presence>(presence.Id, presenceInsertRequest);
                }
                else
                {
                    FaceRecognitionTicks += 1;
                    if (FaceRecognitionTicks >= 10)
                    {
                        //save user to prisustvo...
                        FaceRecognitionTicks      = 0;
                        FaceRecognitionTotalTicks = 0;
                        act            = action.idle;
                        lblAction.Text = act.ToString();
                        face_recognition.Dispose();
                        face_recognition.Stop();
                        var presenceInsertRequest = new PresenceInsertRequest()
                        {
                            AttendedWholeEvent = true,
                            EventId            = Event.Id,
                            UserId             = user.Id,
                            Image = ImageToByte2(result.Bitmap),
                            Notes = "",
                            PresenceAttendingDateTime = DateTime.Now,
                            PresenceCreatingDateTime  = presence.PresenceCreatingDateTime,
                            PresenceLeavingDateTime   = null,
                            FaceDetected   = true,
                            FaceRecognized = false
                        };
                        await apiService_Presence.Update <Model.Presence>(presence.Id, presenceInsertRequest);
                    }
                }
            }
            FaceRecognitionTotalTicks += 1;
            if (FaceRecognitionTotalTicks >= 20)
            {
                FaceRecognitionTicks      = 0;
                FaceRecognitionTotalTicks = 0;
                act            = action.idle;
                lblAction.Text = act.ToString();
                face_recognition.Dispose();

                var presenceInsertRequest = new PresenceInsertRequest()
                {
                    AttendedWholeEvent = null,
                    EventId            = Event.Id,
                    UserId             = user.Id,
                    Image = null,
                    Notes = "",
                    PresenceAttendingDateTime = DateTime.Now,
                    PresenceCreatingDateTime  = presence.PresenceCreatingDateTime,
                    PresenceLeavingDateTime   = null,
                    FaceDetected   = false,
                    FaceRecognized = false
                };
                await apiService_Presence.Update <Model.Presence>(presence.Id, presenceInsertRequest);
            }
        }