Вячеслав Терешенко 2 anos atrás
pai
commit
bbbb724675

+ 84 - 17
T FaceRecognizer/FormMain.Designer.cs

@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
             this.PbxFaces = new System.Windows.Forms.PictureBox();
             this.BtnAdd = new System.Windows.Forms.Button();
@@ -65,11 +66,15 @@
             this.BtnOut = new System.Windows.Forms.Button();
             this.PbxIdentification = new System.Windows.Forms.PictureBox();
             this.tabPage3 = new System.Windows.Forms.TabPage();
+            this.DgbJournal = new System.Windows.Forms.DataGridView();
+            this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.tabPage4 = new System.Windows.Forms.TabPage();
+            this.label7 = new System.Windows.Forms.Label();
             this.tabPage5 = new System.Windows.Forms.TabPage();
             this.label6 = new System.Windows.Forms.Label();
             this.SplitContainer = new System.Windows.Forms.SplitContainer();
-            this.label7 = new System.Windows.Forms.Label();
             ((System.ComponentModel.ISupportInitialize)(this.PbxFaces)).BeginInit();
             this.PanelMenu.SuspendLayout();
             this.PanSettings.SuspendLayout();
@@ -87,6 +92,8 @@
             this.tabPage1.SuspendLayout();
             this.tabPage2.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.PbxIdentification)).BeginInit();
+            this.tabPage3.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.DgbJournal)).BeginInit();
             this.tabPage4.SuspendLayout();
             this.tabPage5.SuspendLayout();
             ((System.ComponentModel.ISupportInitialize)(this.SplitContainer)).BeginInit();
@@ -199,6 +206,7 @@
             this.BtnJournal.TabIndex = 1;
             this.BtnJournal.Text = "Журнал";
             this.BtnJournal.UseVisualStyleBackColor = false;
+            this.BtnJournal.Click += new System.EventHandler(this.BtnJournal_Click);
             // 
             // pictureBox3
             // 
@@ -487,7 +495,7 @@
             this.BtnIn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
             this.BtnIn.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(166)))), ((int)(((byte)(64)))));
             this.BtnIn.ForeColor = System.Drawing.Color.White;
-            this.BtnIn.Location = new System.Drawing.Point(230, 313);
+            this.BtnIn.Location = new System.Drawing.Point(230, 297);
             this.BtnIn.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.BtnIn.Name = "BtnIn";
             this.BtnIn.Size = new System.Drawing.Size(190, 37);
@@ -501,7 +509,7 @@
             this.BtnOut.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
             this.BtnOut.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(166)))), ((int)(((byte)(64)))));
             this.BtnOut.ForeColor = System.Drawing.Color.White;
-            this.BtnOut.Location = new System.Drawing.Point(8, 313);
+            this.BtnOut.Location = new System.Drawing.Point(8, 297);
             this.BtnOut.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.BtnOut.Name = "BtnOut";
             this.BtnOut.Size = new System.Drawing.Size(190, 37);
@@ -519,13 +527,14 @@
             this.PbxIdentification.Location = new System.Drawing.Point(4, 5);
             this.PbxIdentification.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
             this.PbxIdentification.Name = "PbxIdentification";
-            this.PbxIdentification.Size = new System.Drawing.Size(421, 298);
+            this.PbxIdentification.Size = new System.Drawing.Size(421, 282);
             this.PbxIdentification.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
             this.PbxIdentification.TabIndex = 1;
             this.PbxIdentification.TabStop = false;
             // 
             // tabPage3
             // 
+            this.tabPage3.Controls.Add(this.DgbJournal);
             this.tabPage3.Location = new System.Drawing.Point(4, 30);
             this.tabPage3.Name = "tabPage3";
             this.tabPage3.Size = new System.Drawing.Size(429, 355);
@@ -533,22 +542,83 @@
             this.tabPage3.Text = "Journal";
             this.tabPage3.UseVisualStyleBackColor = true;
             // 
+            // DgbJournal
+            // 
+            this.DgbJournal.AllowUserToAddRows = false;
+            this.DgbJournal.AllowUserToDeleteRows = false;
+            this.DgbJournal.AllowUserToResizeColumns = false;
+            this.DgbJournal.AllowUserToResizeRows = false;
+            this.DgbJournal.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.DgbJournal.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(228)))), ((int)(((byte)(255)))), ((int)(((byte)(225)))));
+            this.DgbJournal.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.DgbJournal.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleHorizontal;
+            this.DgbJournal.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.DgbJournal.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Column1,
+            this.Column2,
+            this.Column3});
+            this.DgbJournal.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
+            this.DgbJournal.Location = new System.Drawing.Point(3, 3);
+            this.DgbJournal.MultiSelect = false;
+            this.DgbJournal.Name = "DgbJournal";
+            this.DgbJournal.ReadOnly = true;
+            this.DgbJournal.RowHeadersVisible = false;
+            this.DgbJournal.RowTemplate.DividerHeight = 5;
+            this.DgbJournal.RowTemplate.Height = 35;
+            this.DgbJournal.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+            this.DgbJournal.Size = new System.Drawing.Size(423, 341);
+            this.DgbJournal.TabIndex = 0;
+            this.DgbJournal.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DgbJournal_CellDoubleClick);
+            // 
+            // Column1
+            // 
+            this.Column1.HeaderText = "ID";
+            this.Column1.Name = "Column1";
+            this.Column1.ReadOnly = true;
+            this.Column1.Visible = false;
+            // 
+            // Column2
+            // 
+            this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            this.Column2.DefaultCellStyle = dataGridViewCellStyle1;
+            this.Column2.HeaderText = "Пользователь";
+            this.Column2.Name = "Column2";
+            this.Column2.ReadOnly = true;
+            // 
+            // Column3
+            // 
+            this.Column3.HeaderText = "Дата последнего посещения";
+            this.Column3.Name = "Column3";
+            this.Column3.ReadOnly = true;
+            // 
             // tabPage4
             // 
             this.tabPage4.Controls.Add(this.label7);
-            this.tabPage4.Location = new System.Drawing.Point(4, 30);
+            this.tabPage4.Location = new System.Drawing.Point(4, 22);
             this.tabPage4.Name = "tabPage4";
-            this.tabPage4.Size = new System.Drawing.Size(429, 355);
+            this.tabPage4.Size = new System.Drawing.Size(429, 363);
             this.tabPage4.TabIndex = 3;
             this.tabPage4.Text = "Settings";
             this.tabPage4.UseVisualStyleBackColor = true;
             // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Location = new System.Drawing.Point(3, 11);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(282, 21);
+            this.label7.TabIndex = 0;
+            this.label7.Text = "Настроить выбор активной камеры";
+            // 
             // tabPage5
             // 
             this.tabPage5.Controls.Add(this.label6);
-            this.tabPage5.Location = new System.Drawing.Point(4, 30);
+            this.tabPage5.Location = new System.Drawing.Point(4, 22);
             this.tabPage5.Name = "tabPage5";
-            this.tabPage5.Size = new System.Drawing.Size(429, 355);
+            this.tabPage5.Size = new System.Drawing.Size(429, 363);
             this.tabPage5.TabIndex = 4;
             this.tabPage5.Text = "Main";
             this.tabPage5.UseVisualStyleBackColor = true;
@@ -580,15 +650,6 @@
             this.SplitContainer.SplitterDistance = 248;
             this.SplitContainer.TabIndex = 5;
             // 
-            // label7
-            // 
-            this.label7.AutoSize = true;
-            this.label7.Location = new System.Drawing.Point(3, 11);
-            this.label7.Name = "label7";
-            this.label7.Size = new System.Drawing.Size(282, 21);
-            this.label7.TabIndex = 0;
-            this.label7.Text = "Настроить выбор активной камеры";
-            // 
             // FormMain
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 21F);
@@ -623,6 +684,8 @@
             this.tabPage1.PerformLayout();
             this.tabPage2.ResumeLayout(false);
             ((System.ComponentModel.ISupportInitialize)(this.PbxIdentification)).EndInit();
+            this.tabPage3.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.DgbJournal)).EndInit();
             this.tabPage4.ResumeLayout(false);
             this.tabPage4.PerformLayout();
             this.tabPage5.ResumeLayout(false);
@@ -678,6 +741,10 @@
         private System.Windows.Forms.TabPage tabPage5;
         private System.Windows.Forms.Label label6;
         private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.DataGridView DgbJournal;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
     }
 }
 

+ 83 - 23
T FaceRecognizer/FormMain.cs

@@ -25,12 +25,6 @@ namespace T_FaceRecognizer
         public FormMain()
         {
             InitializeComponent();
-            CaptureTimer = new Timer()
-            {
-                Interval = Config.TimerResponseValue
-
-            };
-            CaptureTimer.Tick += CaptureTimer_Tick;
         }
 
         private void CaptureTimer_Tick(object sender, EventArgs e)
@@ -339,14 +333,7 @@ values (@last,@first,@patr,@phone,@snils,@photo)
             TabPages.ItemSize = new Size(0, 1);
             TabPages.SizeMode = TabSizeMode.Fixed;
 
-            TabPages.SelectTab(0);
-
-            GetFacesList();
-            Capture = new VideoCapture(Config.ActiveCameraIndex);
-            Capture.SetCaptureProperty(CapProp.Fps, 30);
-            Capture.SetCaptureProperty(CapProp.FrameHeight, 450);
-            Capture.SetCaptureProperty(CapProp.FrameWidth, 370);
-            CaptureTimer.Start();
+            TabPages.SelectTab(4);
         }
 
         private void PbxMenu_Click(object sender, EventArgs e)
@@ -389,6 +376,21 @@ values (@last,@first,@patr,@phone,@snils,@photo)
 
         private void BtnAddUser_Click(object sender, EventArgs e)
         {
+            //RecognizeOff();
+
+            CaptureTimer = new Timer()
+            {
+                Interval = Config.TimerResponseValue
+            };
+            CaptureTimer.Tick += CaptureTimer_Tick;
+
+            GetFacesList();
+            Capture = new VideoCapture(Config.ActiveCameraIndex);
+            Capture.SetCaptureProperty(CapProp.Fps, 30);
+            Capture.SetCaptureProperty(CapProp.FrameHeight, 450);
+            Capture.SetCaptureProperty(CapProp.FrameWidth, 370);
+            CaptureTimer.Start();
+
             TabPages.SelectTab(0);
         }
 
@@ -397,18 +399,12 @@ values (@last,@first,@patr,@phone,@snils,@photo)
             CaptureTimerIdent = new Timer()
             {
                 Interval = Config.TimerResponseValue
-
             };
             CaptureTimerIdent.Tick += CaptureTimerIdent_Tick;
 
             try
             {
-                if (BgrFrame != null)
-                {
-                    BgrFrame = null;
-                    Capture.Dispose();
-                    CaptureTimer.Tick -= CaptureTimer_Tick;
-                }
+                RecognizeOff();
             }
             catch (Exception ex)
             {
@@ -427,6 +423,21 @@ values (@last,@first,@patr,@phone,@snils,@photo)
 
             TabPages.SelectTab(1);
         }
+        /// <summary>
+        /// отключение камеры и распознавания
+        /// </summary>
+        private void RecognizeOff()
+        {
+            if (BgrFrame != null)
+            {
+                BgrFrame = null;
+                Capture.Dispose();
+                if (CaptureTimer != null)
+                {
+                    CaptureTimer.Tick -= CaptureTimer_Tick;
+                }
+            }
+        }
 
         private void CaptureTimerIdent_Tick(object sender, EventArgs e)
         {
@@ -583,7 +594,7 @@ values ('{CurrentUserID}',CAST(GETDATE() as date),'{DateTime.Now.ToString("HH:mm
                 string QueryCheckRecord = $@"set dateformat dmy
 select *
 from Visits
-where UsersID = '1' and [Date] = cast(GETDATE() as date) and TimeExit is null
+where UsersID = '{CurrentUserID}' and [Date] = cast(GETDATE() as date) and TimeExit is null
 ";
                 SqlCommand CmdCheck = new SqlCommand(QueryCheckRecord, SCon);
                 SqlDataReader Res = CmdCheck.ExecuteReader();
@@ -598,7 +609,7 @@ where UsersID = '1' and [Date] = cast(GETDATE() as date) and TimeExit is null
                 SCon.Open();
                 string QueryTimeExit = $@"update Visits
 set TimeExit = '{DateTime.Now.ToString("HH:mm:ss")}'
-where UsersID = '1' and [Date] = cast(GETDATE() as date)";
+where UsersID = '{CurrentUserID}' and [Date] = cast(GETDATE() as date)";
                 SqlCommand Cmd = new SqlCommand(QueryTimeExit, SCon);
                 Cmd.ExecuteNonQuery();
                 SCon.Close();
@@ -612,5 +623,54 @@ where UsersID = '1' and [Date] = cast(GETDATE() as date)";
             TypeOperation = 0;
             RegisterVisit(TypeOperation);
         }
+
+        private void BtnJournal_Click(object sender, EventArgs e)
+        {
+            RecognizeOff();
+            GetInformationAboutVisiting();
+            TabPages.SelectTab(2);
+        }
+        /// <summary>
+        /// получение списка пользователей для журнала посещений
+        /// </summary>
+        private void GetInformationAboutVisiting()
+        {
+            DgbJournal.Rows.Clear();
+            SCon.Open();
+            string QueryGetVisits = $@"select UserID,Lastname +' '+Firstname+' '+Patronymic as FIO,(select MAX([Date])
+from Visits
+where UsersID = Users.UserID) as LastDateVisit
+from Users";
+            SqlCommand CommandGetVisits = new SqlCommand(QueryGetVisits, SCon);
+            SqlDataReader Res = CommandGetVisits.ExecuteReader();
+            if(Res.HasRows)
+            {
+                string DateTemplate = string.Empty;
+                while(Res.Read())
+                {
+                    DateTemplate = DateTime.Parse(Res["LastDateVisit"].ToString()).ToString("dd.MM.yyyy");
+
+                    DgbJournal.Rows.Add(Res["UserID"].ToString(), Res["FIO"].ToString(), DateTemplate);
+                }
+            }
+            else
+            {
+                MessageBox.Show("Посещения пользователей отсутствуют!", "FaceTrack", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                SCon.Close();
+                return;
+            }
+            SCon.Close();
+        }
+
+        private void DgbJournal_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
+        {
+            int RowIndex = e.RowIndex;
+            int SelectedUserID = int.Parse(DgbJournal.Rows[RowIndex].Cells[0].Value.ToString());
+            string SelectedUserName = DgbJournal.Rows[RowIndex].Cells[1].Value.ToString();
+            FormVisiting FVisiting = new FormVisiting(SelectedUserID, SelectedUserName);
+            this.Hide();
+            FVisiting.ShowDialog();
+            this.Show();
+        }
     }
 }

+ 9 - 0
T FaceRecognizer/FormMain.resx

@@ -117,6 +117,15 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>

+ 218 - 0
T FaceRecognizer/FormVisiting.Designer.cs

@@ -0,0 +1,218 @@
+namespace T_FaceRecognizer
+{
+    partial class FormVisiting
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormVisiting));
+            this.PanelTitle = new System.Windows.Forms.Panel();
+            this.label1 = new System.Windows.Forms.Label();
+            this.LblUserName = new System.Windows.Forms.Label();
+            this.DgbVisitingForSelectedUser = new System.Windows.Forms.DataGridView();
+            this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.BtnOK = new System.Windows.Forms.Button();
+            this.label2 = new System.Windows.Forms.Label();
+            this.DtpVisitDate = new System.Windows.Forms.DateTimePicker();
+            this.CbxFilterDate = new System.Windows.Forms.CheckBox();
+            this.PanelTitle.SuspendLayout();
+            ((System.ComponentModel.ISupportInitialize)(this.DgbVisitingForSelectedUser)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // PanelTitle
+            // 
+            this.PanelTitle.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(166)))), ((int)(((byte)(64)))));
+            this.PanelTitle.Controls.Add(this.LblUserName);
+            this.PanelTitle.Controls.Add(this.label1);
+            this.PanelTitle.Dock = System.Windows.Forms.DockStyle.Top;
+            this.PanelTitle.Location = new System.Drawing.Point(0, 0);
+            this.PanelTitle.Name = "PanelTitle";
+            this.PanelTitle.Size = new System.Drawing.Size(643, 84);
+            this.PanelTitle.TabIndex = 0;
+            // 
+            // label1
+            // 
+            this.label1.Dock = System.Windows.Forms.DockStyle.Top;
+            this.label1.Font = new System.Drawing.Font("Segoe UI Semibold", 16F, System.Drawing.FontStyle.Bold);
+            this.label1.ForeColor = System.Drawing.Color.White;
+            this.label1.Location = new System.Drawing.Point(0, 0);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(643, 47);
+            this.label1.TabIndex = 0;
+            this.label1.Text = "Сводка посещений для пользователя: ";
+            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // LblUserName
+            // 
+            this.LblUserName.Dock = System.Windows.Forms.DockStyle.Bottom;
+            this.LblUserName.Font = new System.Drawing.Font("Segoe UI Semibold", 14F, System.Drawing.FontStyle.Bold);
+            this.LblUserName.ForeColor = System.Drawing.Color.White;
+            this.LblUserName.Location = new System.Drawing.Point(0, 39);
+            this.LblUserName.Name = "LblUserName";
+            this.LblUserName.Size = new System.Drawing.Size(643, 45);
+            this.LblUserName.TabIndex = 1;
+            this.LblUserName.Text = "Lastname Firstname Patronymic";
+            this.LblUserName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // DgbVisitingForSelectedUser
+            // 
+            this.DgbVisitingForSelectedUser.AllowUserToAddRows = false;
+            this.DgbVisitingForSelectedUser.AllowUserToDeleteRows = false;
+            this.DgbVisitingForSelectedUser.AllowUserToResizeColumns = false;
+            this.DgbVisitingForSelectedUser.AllowUserToResizeRows = false;
+            this.DgbVisitingForSelectedUser.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.DgbVisitingForSelectedUser.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(228)))), ((int)(((byte)(255)))), ((int)(((byte)(225)))));
+            this.DgbVisitingForSelectedUser.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.DgbVisitingForSelectedUser.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleHorizontal;
+            this.DgbVisitingForSelectedUser.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.DgbVisitingForSelectedUser.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Column1,
+            this.Column2,
+            this.Column3});
+            this.DgbVisitingForSelectedUser.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
+            this.DgbVisitingForSelectedUser.Location = new System.Drawing.Point(0, 125);
+            this.DgbVisitingForSelectedUser.Name = "DgbVisitingForSelectedUser";
+            this.DgbVisitingForSelectedUser.ReadOnly = true;
+            this.DgbVisitingForSelectedUser.RowHeadersVisible = false;
+            this.DgbVisitingForSelectedUser.RowTemplate.DividerHeight = 5;
+            this.DgbVisitingForSelectedUser.RowTemplate.Height = 35;
+            this.DgbVisitingForSelectedUser.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+            this.DgbVisitingForSelectedUser.Size = new System.Drawing.Size(643, 187);
+            this.DgbVisitingForSelectedUser.TabIndex = 1;
+            // 
+            // Column1
+            // 
+            this.Column1.HeaderText = "Дата";
+            this.Column1.Name = "Column1";
+            this.Column1.ReadOnly = true;
+            // 
+            // Column2
+            // 
+            this.Column2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Column2.HeaderText = "Время входа";
+            this.Column2.Name = "Column2";
+            this.Column2.ReadOnly = true;
+            // 
+            // Column3
+            // 
+            this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
+            this.Column3.HeaderText = "Время выхода";
+            this.Column3.Name = "Column3";
+            this.Column3.ReadOnly = true;
+            // 
+            // BtnOK
+            // 
+            this.BtnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+            this.BtnOK.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(58)))), ((int)(((byte)(166)))), ((int)(((byte)(64)))));
+            this.BtnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
+            this.BtnOK.ForeColor = System.Drawing.Color.White;
+            this.BtnOK.Location = new System.Drawing.Point(474, 320);
+            this.BtnOK.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.BtnOK.Name = "BtnOK";
+            this.BtnOK.Size = new System.Drawing.Size(156, 37);
+            this.BtnOK.TabIndex = 4;
+            this.BtnOK.Text = "OK";
+            this.BtnOK.UseVisualStyleBackColor = false;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(1, 96);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(49, 21);
+            this.label2.TabIndex = 5;
+            this.label2.Text = "Дата:";
+            // 
+            // DtpVisitDate
+            // 
+            this.DtpVisitDate.Location = new System.Drawing.Point(56, 90);
+            this.DtpVisitDate.Name = "DtpVisitDate";
+            this.DtpVisitDate.Size = new System.Drawing.Size(200, 29);
+            this.DtpVisitDate.TabIndex = 6;
+            this.DtpVisitDate.ValueChanged += new System.EventHandler(this.DtpVisitDate_ValueChanged);
+            // 
+            // CbxFilterDate
+            // 
+            this.CbxFilterDate.AutoSize = true;
+            this.CbxFilterDate.Checked = true;
+            this.CbxFilterDate.CheckState = System.Windows.Forms.CheckState.Checked;
+            this.CbxFilterDate.Location = new System.Drawing.Point(262, 92);
+            this.CbxFilterDate.Name = "CbxFilterDate";
+            this.CbxFilterDate.Size = new System.Drawing.Size(181, 25);
+            this.CbxFilterDate.TabIndex = 7;
+            this.CbxFilterDate.Text = "Сортировка по дате";
+            this.CbxFilterDate.UseVisualStyleBackColor = true;
+            this.CbxFilterDate.CheckedChanged += new System.EventHandler(this.CbxFilterDate_CheckedChanged);
+            // 
+            // FormVisiting
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 21F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(243)))), ((int)(((byte)(243)))), ((int)(((byte)(243)))));
+            this.ClientSize = new System.Drawing.Size(643, 371);
+            this.Controls.Add(this.CbxFilterDate);
+            this.Controls.Add(this.DtpVisitDate);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.BtnOK);
+            this.Controls.Add(this.DgbVisitingForSelectedUser);
+            this.Controls.Add(this.PanelTitle);
+            this.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Bold);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+            this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
+            this.MaximizeBox = false;
+            this.MinimizeBox = false;
+            this.MinimumSize = new System.Drawing.Size(659, 410);
+            this.Name = "FormVisiting";
+            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+            this.Text = "FaceTrack профессиональный";
+            this.Load += new System.EventHandler(this.FormVisiting_Load);
+            this.PanelTitle.ResumeLayout(false);
+            ((System.ComponentModel.ISupportInitialize)(this.DgbVisitingForSelectedUser)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.Panel PanelTitle;
+        private System.Windows.Forms.Label label1;
+        public System.Windows.Forms.Label LblUserName;
+        private System.Windows.Forms.DataGridView DgbVisitingForSelectedUser;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
+        private System.Windows.Forms.DataGridViewTextBoxColumn Column3;
+        private System.Windows.Forms.Button BtnOK;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.DateTimePicker DtpVisitDate;
+        private System.Windows.Forms.CheckBox CbxFilterDate;
+    }
+}

+ 74 - 0
T FaceRecognizer/FormVisiting.cs

@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Data.SqlClient;
+
+namespace T_FaceRecognizer
+{
+    public partial class FormVisiting : Form
+    {
+        public FormVisiting(int selectedUserID,string UserName)
+        {
+            InitializeComponent();
+            SelectedUserID = selectedUserID;
+            LblUserName.Text = UserName;
+        }
+        #region <Переменные>
+        int SelectedUserID = -1;
+
+        SqlConnection SCon = new SqlConnection("Data Source=213.155.192.79,3002;Initial Catalog=FaceTrackApp;Persist Security Info=True;User ID=u20teresh;Password=bfg2");
+        #endregion
+        private void FormVisiting_Load(object sender, EventArgs e)
+        {
+            GetVisitingForSelectedUser(SelectedUserID);
+        }
+        /// <summary>
+        /// получение списка посещений для выбранного пользователя
+        /// </summary>
+        /// <param name="UserID">Идентификатор пользователя</param>
+        private void GetVisitingForSelectedUser(int UserID)
+        {
+            DgbVisitingForSelectedUser.Rows.Clear();
+            SCon.Open();
+            string QueryOnGetVisitsForSelectedUser = $@"set dateformat dmy
+select UsersID,FORMAT(cast([Date] as date),N'dd\.MM\.yyyy') as VisitDate,FORMAT(cast(TimeEntrance as time), N'hh\:mm\:ss') as timeIn,FORMAT(cast(TimeExit as time),N'hh\:mm\:ss')as timeEx
+from Visits
+where UsersID = '{UserID}' ";
+            if(CbxFilterDate.Checked)
+            {
+                QueryOnGetVisitsForSelectedUser += $@"  and [Date] = '{DtpVisitDate.Value.Date}'";
+            }
+
+            SqlCommand Cmd = new SqlCommand(QueryOnGetVisitsForSelectedUser, SCon);
+            SqlDataReader Res = Cmd.ExecuteReader();
+            if(!Res.HasRows)
+            {
+                MessageBox.Show("При выбранных параметрых сортировки посещения отсутствуют!", "FaceTrack", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                SCon.Close();
+                return;
+            }
+
+            while (Res.Read())
+            {
+                DgbVisitingForSelectedUser.Rows.Add(Res["VisitDate"].ToString(), Res["timeIn"].ToString(), Res["timeEx"].ToString());
+            }
+            SCon.Close();
+        }
+
+        private void CbxFilterDate_CheckedChanged(object sender, EventArgs e)
+        {
+            GetVisitingForSelectedUser(SelectedUserID);
+        }
+
+        private void DtpVisitDate_ValueChanged(object sender, EventArgs e)
+        {
+            GetVisitingForSelectedUser(SelectedUserID);
+        }
+    }
+}

+ 315 - 0
T FaceRecognizer/FormVisiting.resx

@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="Column3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+</root>

+ 9 - 0
T FaceRecognizer/T FaceRecognizer.csproj

@@ -102,11 +102,20 @@
     <Compile Include="FormMain.Designer.cs">
       <DependentUpon>FormMain.cs</DependentUpon>
     </Compile>
+    <Compile Include="FormVisiting.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="FormVisiting.Designer.cs">
+      <DependentUpon>FormVisiting.cs</DependentUpon>
+    </Compile>
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <EmbeddedResource Include="FormMain.resx">
       <DependentUpon>FormMain.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="FormVisiting.resx">
+      <DependentUpon>FormVisiting.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="Properties\Resources.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>

BIN
T FaceRecognizer/bin/Debug/Source/Faces/Петр85596496879.bmp


BIN
T FaceRecognizer/bin/Debug/T FaceRecognizer.exe