private void NotifyListeners(MMM.Readers.CodelineData codeLineData)
 {
     log.Info("Notifying listeners of document scan");
     log.DebugFormat("Begin notification of CodeLineScanEvent listeners [{0}]", codeLineData);
     try { OnCodeLineScanEvent(this, new CodeLineScanEvent(codeLineData)); }
     catch { };
     log.DebugFormat("End notification of CodeLineScanEvent listeners [{0}]", codeLineData);
 }
示例#2
0
        public static bool IsConfigurationEvent(CodeLineScanEvent e)
        {
            MMM.Readers.CodelineData data = e.CodeLineData;
            bool result = (data.CodelineValidationResult == MMM.Readers.CheckDigitResult.CDR_Valid) &&
                          data.Line1.StartsWith("PZXXX");

            return(result);
        }
        private void DeviceDataHandler(MMM.Readers.Modules.Swipe.SwipeItem swipeItem, object swipeData)
        {
            log.DebugFormat("Device data: swipe item [{0}], swipe data [{1}]", swipeItem, swipeData);
            NotifyListeners(new ScanSourceEvent(swipeItem, swipeData));

            if (swipeItem == MMM.Readers.Modules.Swipe.SwipeItem.OCR_CODELINE)
            {
                MMM.Readers.CodelineData codeLineData = (MMM.Readers.CodelineData)swipeData;
                using (LogProvider.OpenNestedContext(codeLineData.Surname)) {
                    log.InfoFormat("CodeLineData ValidationResult [{0}]", codeLineData.CodelineValidationResult);
                    NotifyListeners(codeLineData);
                }
            }
        }
示例#4
0
        public String CodeLineDataPut(MMM.Readers.CodelineData codeLineData)
        {
            var request = new RestRequest(Method.POST);
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            request.AddJsonBody(new JsonRpcRequest()
            {
                Method = "ci_put",
                Params = new Dictionary <string, object>()
                {
                    { "sourceID", Settings.SourceId },
                    { "codeLineData", codeLineData }
                }
            });
            return(Execute <VOID>(request));
        }
示例#5
0
 private void DeviceDataHandler(MMM.Readers.Modules.Swipe.SwipeItem aDataItem, object aData)
 {
     if (aDataItem == MMM.Readers.Modules.Swipe.SwipeItem.OCR_CODELINE)
     {
         MMM.Readers.CodelineData codeLineData = (MMM.Readers.CodelineData)aData;
         if (codeLineData.CheckDigitDataListCount > 0 &&
             (codeLineData.CodelineValidationResult == MMM.Readers.CheckDigitResult.CDR_Valid ||
              codeLineData.CodelineValidationResult == MMM.Readers.CheckDigitResult.CDR_Warning)
             )
         {
             log.DebugFormat("CodeLineScanEvent invoke handlers [{0}]", codeLineData);
             OnCodeLineScanEvent(this, new CodeLineScanEvent(codeLineData));
             log.Debug("CodeLineScanEvent handler calls returned");
         }
         else
         {
             log.DebugFormat("CodeLineData Ignored [{0}]", codeLineData);
         }
     }
 }
示例#6
0
 public CodeLineScanEvent(MMM.Readers.CodelineData codeLineData)
 {
     CodeLineData = codeLineData;
 }
示例#7
0
        private void ProcessData(MMM.Readers.Modules.Swipe.SwipeItem aDataItem, object aData)
        {
            string dataStr = string.Empty;

            if (aData is int || aData is bool || aData is float || aData is string)
            {
                dataStr = aData.ToString();
                InsertRow((int)aDataItem, aDataItem.ToString(), 0, dataStr, RowType.Data);
            }
            else if (aData is MMM.Readers.CodelineData)
            {
                MMM.Readers.CodelineData codeline = (MMM.Readers.CodelineData)aData;
                InsertRow((int)aDataItem, aDataItem.ToString(), codeline.Data.Length, codeline.Data, RowType.Data);
                InsertRow((int)aDataItem, "OCR_LINE_1", codeline.Line1.Length, codeline.Line1, RowType.Data);
                InsertRow((int)aDataItem, "OCR_LINE_2", codeline.Line2.Length, codeline.Line2, RowType.Data);
                InsertRow((int)aDataItem, "OCR_LINE_3", codeline.Line3.Length, codeline.Line3, RowType.Data);
                InsertRow((int)aDataItem, "OCR_DOC_ID", codeline.DocId.Length, codeline.DocId, RowType.Data);
                InsertRow((int)aDataItem, "OCR_DOC_TYPE", codeline.DocType.Length, codeline.DocType, RowType.Data);
                InsertRow((int)aDataItem, "OCR_SURNAME", codeline.Surname.Length, codeline.Surname, RowType.Data);
                InsertRow((int)aDataItem, "OCR_FORENAME", codeline.Forename.Length, codeline.Forename, RowType.Data);
                InsertRow((int)aDataItem, "OCR_SECOND_NAME", codeline.SecondName.Length, codeline.SecondName, RowType.Data);
                InsertRow((int)aDataItem, "OCR_FORENAMES", codeline.Forenames.Length, codeline.Forenames, RowType.Data);

                if (codeline.DateOfBirth.Day == -1 &&
                    codeline.DateOfBirth.Month == -1 &&
                    codeline.DateOfBirth.Year == -1)
                {
                    InsertRow((int)aDataItem, "OCR_DATE_OF_BIRTH", 0, "", RowType.Data);
                }
                else
                {
                    string lD, lM, lY;

                    if (codeline.DateOfBirth.Day == -1)
                    {
                        lD = "??-";
                    }
                    else
                    {
                        lD = string.Format("{0:00}-", codeline.DateOfBirth.Day);
                    }

                    if (codeline.DateOfBirth.Month == -1)
                    {
                        lM = "??-";
                    }
                    else
                    {
                        lM = string.Format("{0:00}-", codeline.DateOfBirth.Month);
                    }

                    if (codeline.DateOfBirth.Year == -1)
                    {
                        lY = "??";
                    }
                    else
                    {
                        lY = string.Format("{0:00}", codeline.DateOfBirth.Year);
                    }


                    InsertRow((int)aDataItem, "OCR_DATE_OF_BIRTH", 0, (lD + lM + lY), RowType.Data);
                }


                if (codeline.ExpiryDate.Day == -1 &&
                    codeline.ExpiryDate.Month == -1 &&
                    codeline.ExpiryDate.Year == -1)
                {
                    InsertRow((int)aDataItem, "OCR_EXPIRY_DATE", 0, "", RowType.Data);
                }
                else
                {
                    string lD, lM, lY;

                    if (codeline.ExpiryDate.Day == -1)
                    {
                        lD = "??-";
                    }
                    else
                    {
                        lD = string.Format("{0:00}-", codeline.ExpiryDate.Day);
                    }

                    if (codeline.ExpiryDate.Month == -1)
                    {
                        lM = "??-";
                    }
                    else
                    {
                        lM = string.Format("{0:00}-", codeline.ExpiryDate.Month);
                    }

                    if (codeline.ExpiryDate.Year == -1)
                    {
                        lY = "??";
                    }
                    else
                    {
                        lY = string.Format("{0:00}", codeline.ExpiryDate.Year);
                    }


                    InsertRow((int)aDataItem, "OCR_EXPIRY_DATE", 0, (lD + lM + lY), RowType.Data);
                }

                InsertRow((int)aDataItem, "OCR_ISSUING_STATE", codeline.IssuingState.Length, codeline.IssuingState, RowType.Data);
                InsertRow((int)aDataItem, "OCR_NATIONALITY", codeline.Nationality.Length, codeline.Nationality, RowType.Data);
                InsertRow((int)aDataItem, "OCR_DOC_NUMBER", codeline.DocNumber.Length, codeline.DocNumber, RowType.Data);
                InsertRow((int)aDataItem, "OCR_SEX", codeline.Sex.Length, codeline.Sex, RowType.Data);
                InsertRow((int)aDataItem, "OCR_SHORT_SEX", 1, Convert.ToChar(codeline.ShortSex).ToString(), RowType.Data);
#if !DOTNET_11
                InsertRow((int)aDataItem, "OCR_OPTIONALDATA1", codeline.OptionalData1.Length, codeline.OptionalData1, RowType.Data);
                InsertRow((int)aDataItem, "OCR_OPTIONALDATA2", codeline.OptionalData2.Length, codeline.OptionalData2, RowType.Data);
#endif
            }
            else if (aData is MMM.Readers.Modules.Swipe.MsrData)
            {
                MMM.Readers.Modules.Swipe.MsrData msrData = (MMM.Readers.Modules.Swipe.MsrData)aData;
                InsertRow((int)aDataItem, "MSR_TRACK_1", msrData.Track1.Length, msrData.Track1, RowType.Data);
                InsertRow((int)aDataItem, "MSR_TRACK_2", msrData.Track2.Length, msrData.Track2, RowType.Data);
                InsertRow((int)aDataItem, "MSR_TRACK_3", msrData.Track3.Length, msrData.Track3, RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.SwipeBarcodePDF417Data)
            {
                MMM.Readers.Modules.Swipe.SwipeBarcodePDF417Data swipeBarcodeData = (MMM.Readers.Modules.Swipe.SwipeBarcodePDF417Data)aData;
                InsertRow((int)aDataItem, "BARCODE PDF417", swipeBarcodeData.DataField.Length, swipeBarcodeData.DataField, RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.SwipeBarcodeCode128Data)
            {
                MMM.Readers.Modules.Swipe.SwipeBarcodeCode128Data swipeBarcodeData = (MMM.Readers.Modules.Swipe.SwipeBarcodeCode128Data)aData;
                InsertRow((int)aDataItem, "BARCODE CODE 128", swipeBarcodeData.DataField.Length, swipeBarcodeData.DataField, RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.SwipeBarcodeCode39Data)
            {
                MMM.Readers.Modules.Swipe.SwipeBarcodeCode39Data swipeBarcodeData = (MMM.Readers.Modules.Swipe.SwipeBarcodeCode39Data)aData;
                InsertRow((int)aDataItem, "BARCODE CODE 39", swipeBarcodeData.DataField.Length, swipeBarcodeData.DataField, RowType.Data);
            }
            else if (aData is MMM.Readers.AAMVAData)
            {
                MMM.Readers.AAMVAData AAMVAData = (MMM.Readers.AAMVAData)aData;
                InsertRow((int)aDataItem, "AAMVA_FULLNAME", AAMVAData.Parsed.FullName.Length, AAMVAData.Parsed.FullName, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_FORENAME", AAMVAData.Parsed.Forename.Length, AAMVAData.Parsed.Forename, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_SURNAME", AAMVAData.Parsed.Surname.Length, AAMVAData.Parsed.Surname, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_LICENCE_NUMBER", AAMVAData.Parsed.LicenceNumber.Length, AAMVAData.Parsed.LicenceNumber, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_ADDRESS_STREET", AAMVAData.Parsed.AddressStreet.Length, AAMVAData.Parsed.AddressStreet, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_ADDRESS_CITY", AAMVAData.Parsed.AddressCity.Length, AAMVAData.Parsed.AddressCity, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_ADDRESS_POSTALCODE", AAMVAData.Parsed.AddressPostalCode.Length, AAMVAData.Parsed.AddressPostalCode, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_ADDRESS_STATE", AAMVAData.Parsed.AddressState.Length, AAMVAData.Parsed.AddressState, RowType.Data);
                InsertRow((int)aDataItem, "AAMVA_ADDRESS_COUNTRY", AAMVAData.Parsed.AddressCountry.Length, AAMVAData.Parsed.AddressCountry, RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.AtbData)
            {
                MMM.Readers.Modules.Swipe.AtbData atbData = (MMM.Readers.Modules.Swipe.AtbData)aData;
                InsertRow((int)aDataItem, "ATB_TRACK_1_BLOCK_1", atbData.Track1.Block1.Length, atbData.Track1.Block1, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_1_BLOCK_2", atbData.Track1.Block2.Length, atbData.Track1.Block2, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_1_BLOCK_3", atbData.Track1.Block3.Length, atbData.Track1.Block3, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_2_BLOCK_1", atbData.Track2.Block1.Length, atbData.Track2.Block1, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_2_BLOCK_2", atbData.Track2.Block2.Length, atbData.Track2.Block2, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_2_BLOCK_3", atbData.Track2.Block3.Length, atbData.Track2.Block3, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_3_BLOCK_1", atbData.Track3.Block1.Length, atbData.Track3.Block1, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_3_BLOCK_2", atbData.Track3.Block2.Length, atbData.Track3.Block2, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_3_BLOCK_3", atbData.Track3.Block3.Length, atbData.Track3.Block3, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_4_BLOCK_1", atbData.Track4.Block1.Length, atbData.Track4.Block1, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_4_BLOCK_2", atbData.Track4.Block2.Length, atbData.Track4.Block2, RowType.Data);
                InsertRow((int)aDataItem, "ATB_TRACK_4_BLOCK_3", atbData.Track4.Block3.Length, atbData.Track4.Block3, RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.RTEQAData)
            {
                MMM.Readers.Modules.Swipe.RTEQAData qaData = (MMM.Readers.Modules.Swipe.RTEQAData)aData;
                InsertRow((int)aDataItem, "QA_CODELINE_COUNT", 0, qaData.CodelineCount.ToString(), RowType.Data);
                InsertRow((int)aDataItem, "QA_COLUMN_COUNT", 0, qaData.ColumnCount.ToString(), RowType.Data);
                InsertRow((int)aDataItem, "QA_CLEAR_AREA_PRESENT", 0, Convert.ToBoolean(qaData.ClearAreaPresent).ToString(), RowType.Data);
                InsertRow((int)aDataItem, "QA_SPOT_COUNT", 0, qaData.SpotCount.ToString(), RowType.Data);
                ShowQALineData((int)aDataItem, 1, qaData.Line1);
                ShowQALineData((int)aDataItem, 2, qaData.Line2);
                ShowQALineData((int)aDataItem, 3, qaData.Line3);
            }
            else if (aData is MMM.Readers.Modules.Swipe.RTESwipeData)
            {
                MMM.Readers.Modules.Swipe.RTESwipeData rteData = (MMM.Readers.Modules.Swipe.RTESwipeData)aData;
                InsertRow((int)aDataItem, "RTE_DEVICE_TYPE", 0, rteData.DeviceType.ToString(), RowType.Data);
                InsertRow((int)aDataItem, "RTE_MESSAGE_TYPE", 0, rteData.MessageType.ToString(), RowType.Data);
                InsertRow((int)aDataItem, "RTE_BCC", 0, rteData.BCC.ToString(), RowType.Data);
                InsertRow((int)aDataItem, "RTE_OCR_FLAG_BYTE", 0, rteData.OCRFlagByte.ToString(), RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.MuseSwipeData)
            {
                MMM.Readers.Modules.Swipe.MuseSwipeData museData = (MMM.Readers.Modules.Swipe.MuseSwipeData)aData;
                InsertRow((int)aDataItem, "MUSE_DEVICE_TYPE", 0, museData.DeviceType.ToString(), RowType.Data);
                InsertRow((int)aDataItem, "MUSE_CRC_HIGH", 0, museData.CrcHigh.ToString(), RowType.Data);
                InsertRow((int)aDataItem, "MUSE_CRC_LOW", 0, museData.CrcLow.ToString(), RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.CuteSwipeData)
            {
                MMM.Readers.Modules.Swipe.CuteSwipeData cuteData = (MMM.Readers.Modules.Swipe.CuteSwipeData)aData;
                InsertRow((int)aDataItem, "CUTE_DEVICE_TYPE", 0, cuteData.DeviceType.ToString(), RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.MagtekMsrSwipeData)
            {
                MMM.Readers.Modules.Swipe.MagtekMsrSwipeData magtekData = (MMM.Readers.Modules.Swipe.MagtekMsrSwipeData)aData;
                InsertRow((int)aDataItem, "MAGTEK_MSR_CARD_TYPE", 0, magtekData.CardEncodeType.ToString(), RowType.Data);
            }
            else if (aData is MMM.Readers.Modules.Swipe.TecsSwipeData)
            {
                MMM.Readers.Modules.Swipe.TecsSwipeData tecsData = (MMM.Readers.Modules.Swipe.TecsSwipeData)aData;
                InsertRow((int)aDataItem, "TECS_DEVICE_TYPE", 0, tecsData.DeviceType.ToString(), RowType.Data);
            }
            else if (aData is byte)
            {
                byte dataValue = (byte)aData;
                dataStr = dataValue.ToString("X2");
                InsertRow((int)aDataItem, aDataItem.ToString(), 0, dataStr, RowType.Data);
            }
            else if (aData is byte[])
            {
                byte[] dataArray = aData as byte[];
                if (aDataItem == MMM.Readers.Modules.Swipe.SwipeItem.WHOLE_DATA)
                {
                    dataStr = ConvertSwipeDataByteArray(dataArray);
                }
                else
                {
                    foreach (byte byteVal in dataArray)
                    {
                        dataStr = string.Concat(dataStr, byteVal.ToString("X2"), " ");
                    }
                }
                InsertRow((int)aDataItem, aDataItem.ToString(), 0, dataStr, RowType.Data);
            }
        }
示例#8
0
        void DataCallback(MMM.Readers.FullPage.DataType aDataType, object aData)
        {
            pic_scan.Focus();
            bool ok = false;

            try
            {
                if (aData != null)
                {
                    switch (aDataType)
                    {
                    case MMM.Readers.FullPage.DataType.CD_CODELINE_DATA:
                    {
                        MMM.Readers.CodelineData codeline = (MMM.Readers.CodelineData)aData;
                        if (codeline.Surname != "")
                        {
                            identificadorDoc = codeline.DocType.Substring(0, 1);
                            datok            = true;
                            apellido         = codeline.Surname;
                            if (apellido.Contains(" "))
                            {
                                int endIndexDos = apellido.IndexOf(" ", 0);
                                apellido = apellido.Substring(0, endIndexDos);
                            }
                            nombre       = codeline.Forename;
                            codPais      = codeline.Nationality;
                            numPasaporte = codeline.DocNumber;

                            // obtengo el año actual
                            DateTime Hoy2       = DateTime.Today;
                            string   anioActual = Hoy2.ToString("yy");
                            int      anioA      = Convert.ToInt16(anioActual);
                            DateTime dt         = new DateTime(codeline.DateOfBirth.Year, codeline.DateOfBirth.Month, codeline.DateOfBirth.Day);
                            fecha_nac = dt.ToString("dd-MMM-yyyy", CultureInfo.CreateSpecificCulture("en-US"));
                            edad      = DateTime.Today.AddTicks(-dt.Ticks).Year - 1;
                            if (codeline.DateOfBirth.Year > anioA)
                            {
                                edad = edad - 1900;
                            }
                            else
                            {
                                edad = edad + 2000;
                            }
                            // fin fecha nacimiento
                        }

                        break;
                    }

                    case MMM.Readers.FullPage.DataType.CD_IMAGEVIS:
                    {
                        pic_scan.Image = aData as Bitmap;
                        imagenReal     = aData as Bitmap;
                        // reduzco la imagen en 150 ppp para guardarla
                        imagenReal = ScaleByPercent(imagenReal, 50);
                        if (datok && tipoMov != 1)
                        {
                            busca_reserva(); datok = false;
                        }
                        else if (datok && tipoMov == 1)
                        {
                            guarda_datos(); datok = false;
                        }
                        else if (!datok)
                        {
                            // WinAPI.SiempreEncima(this.Handle.ToInt32());
                            //WinAPI.NoSiempreEncima(this.Handle.ToInt32());
                            if (MessageBox.Show("DESEA GUARDAR COMO IDENTIFICACIÓN U OTRO TIPO LA IMAGEN?", "!ALERTA¡", MessageBoxButtons.YesNo) == DialogResult.Yes)
                            {
                                int filasI = 0;
                                foreach (DataGridViewRow row in dgvHuespedes.Rows)
                                {
                                    if (ToStringNullSafe(row.Cells["ESCANEAR"].Value) == "Y")
                                    {
                                        // obtengo la secuencia seleccionada en el grid
                                        string secuencia = row.Cells[1].Value.ToString();
                                        // marco el registro en freserno con "ID" para que no sobreescriba la información
                                        UConnection DB2         = new UConnection(Properties.Settings.Default.ipBD, Properties.Settings.Default.serverBD, Properties.Settings.Default.usuarioBD, Properties.Settings.Default.passBD);
                                        string      comandoSql3 = string.Format("update freserno set vn_pasaporte = 'ID' where vn_reserva = '{0}' and vn_secuencia = {1}", Program.Reserva, secuencia);
                                        ok = DB2.EjecutaSQL(comandoSql3, ref filasI);
                                    }
                                }
                                // si no inserto el identificador, quiere decir que ya existe una imagen
                                if (filasI == 1)
                                {
                                    // creo un numero aleatorio para que no se repita
                                    Random randomID       = new Random();
                                    int    randomNumberID = randomID.Next(0, 100);
                                    // Obtengo la ruta para la imagen final y la guardo
                                    var    image_name = nombreImagen + Program.Reserva + "ID" + Convert.ToString(randomNumberID) + ".jpg";
                                    byte[] imgb       = ImageToByte(imagenReal);
                                    wsimg.Img_save(carpeta, imgb, image_name);
                                    MessageBox.Show("SE GUARDÓ LA IMAGEN SATISFACTORIAMENTE.", "¡ÉXITO!");
                                }
                                else
                                {
                                    guarda_imagen();
                                }
                            }
                        }

                        msgsplash.Text = "Coloque el siguiente documento o cierre para continuar con el Check-in...";

                        break;
                    }

                        /* case MMM.Readers.FullPage.DataType.CD_IMAGEUV:
                         *   {
                         *       uvImage.Image = aData as Bitmap;
                         *       break;
                         *   }*/
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(
                    e.ToString(),
                    "Error",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error
                    );
            }
        }
示例#9
0
 public static MrzBasedConfigurationData ConfigurationData(CodeLineScanEvent e)
 {
     MMM.Readers.CodelineData data = e.CodeLineData;
     return(new MrzBasedConfigurationData(data.Line1, data.Line2));
 }