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