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