Exemplo n.º 1
0
        protected void Compare(Template template, Sample sample, string type)
        {
            DPFP.FeatureSet features = ExtractFeatures(sample, DPFP.Processing.DataPurpose.Verification);
            DPFP.Verification.Verification.Result result = new DPFP.Verification.Verification.Result();

            XmlSerial   serial = new XmlSerial();
            XmlDocument xmlDoc = new XmlDocument();

            string path = Path.GetFullPath("DB/StaffRepository.xml");

            xmlDoc.Load(path);
            StaffMemberList staffMembers = serial.DeserializeObject <StaffMemberList>(xmlDoc.InnerXml);

            foreach (DTO.StaffMember staffMember in staffMembers.staffMemberList)
            {
                MemoryStream ms = new MemoryStream(staffMember.fingerprintTemplateBytes);
                template = new DPFP.Template(ms);
                Verificator.Verify(features, template, ref result);

                XmlSerial   punchSerial = new XmlSerial();
                XmlDocument punchXmlDoc = new XmlDocument();
                Punch       punch       = new DTO.Punch();

                string newPunchType       = "";
                string punchXmlizedString = punchSerial.SerializeObject(punch);
                string punchPath          = Path.GetFullPath("DB/PunchRepository.xml");

                punchXmlDoc.Load(punchPath);

                PunchList punches = punchSerial.DeserializeObject <PunchList>(punchXmlDoc.InnerXml);

                List <Punch> punchList = punches.punchList.ToList();
                punch = new DTO.Punch();

                if (punchList.Where(p => p.documentNumber == staffMember.documentNumber).Count() > 0)
                {
                    var val = punches.punchList.Where(p => p.documentNumber == staffMember.documentNumber).Last();
                    if (val.type == "I")
                    {
                        newPunchType = "O";
                    }
                    else if (val.type == "O")
                    {
                        newPunchType = "I";
                    }
                }
                else
                {
                    newPunchType = "I";
                }

                punch.type           = newPunchType;
                punch.documentNumber = staffMember.documentNumber;
                punch.createdAt      = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                punchList.Add(punch);
                punches.punchList = punchList.ToArray();

                punchXmlizedString   = punchSerial.SerializeObject <PunchList>(punches);
                punchXmlDoc          = new XmlDocument();
                punchXmlDoc.InnerXml = punchXmlizedString;

                if (features != null)
                {
                    if (result.Verified)
                    {
                        if (lblStaffMemberNameResult.InvokeRequired)
                        {
                            lblStaffMemberNameResult.BeginInvoke((MethodInvoker) delegate
                            {
                                lblStaffMemberNameResult.Visible = true;
                                lblStaffMemberNameResult.Text    = staffMember.name;
                            });
                        }

                        if (lblPunchDateTimeResult.InvokeRequired)
                        {
                            lblPunchDateTimeResult.BeginInvoke((MethodInvoker) delegate
                            {
                                lblPunchDateTimeResult.Visible = true;
                                lblPunchDateTimeResult.Text    = DateTime.Now.ToString("HH:mm:ss");

                                if (punch.type == "I")
                                {
                                    lblPunchTypeResult.ForeColor = System.Drawing.Color.Blue;
                                    lblPunchTypeResult.Visible   = true;
                                    lblPunchTypeResult.Text      = "IN";
                                }
                                else if (punch.type == "O")
                                {
                                    lblPunchTypeResult.ForeColor = System.Drawing.Color.Red;
                                    lblPunchTypeResult.Visible   = true;
                                    lblPunchTypeResult.Text      = "OUT";
                                }
                                else
                                {
                                    lblPunchTypeResult.ForeColor = System.Drawing.Color.Blue;
                                    lblPunchTypeResult.Text      = "IN";
                                }
                            });
                        }

                        if (picCheck.InvokeRequired)
                        {
                            picCheck.BeginInvoke((MethodInvoker) delegate
                            {
                                picCheck.Visible = true;
                                picCheck.Image   = (Image)Resources.ResourceManager.GetObject("check");
                            });
                        }
                        System.Media.SystemSounds.Beep.Play();

                        punchXmlDoc.Save(punchPath);
                        SavePunch(punch);
                    }
                }
            }
            Thread.Sleep(1000);
            ClearFields();
        }