Exemple #1
0
        /// <summary>
        /// Rangers the scanner_ transport item in pocket.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The e.</param>
        private void rangerScanner_TransportItemInPocket(object sender, AxRANGERLib._DRangerEvents_TransportItemInPocketEvent e)
        {
            BitmapImage bitImageFront = GetCheckImage(Sides.TransportFront);
            BitmapImage bitImageBack  = GetCheckImage(Sides.TransportRear);

            string checkMicr = rangerScanner.GetMicrText(1).Replace("-", string.Empty).Replace("!", string.Empty).Trim();
            string fileName  = checkMicr.Replace(" ", "_");

            string[] micrParts     = checkMicr.Split(new char[] { 'c', 'd', ' ' }, StringSplitOptions.RemoveEmptyEntries);
            string   routingNumber = micrParts.Length > 0 ? micrParts[0] : "??";
            string   accountNumber = micrParts.Length > 1 ? micrParts[1] : "??";
            string   checkNumber   = micrParts.Length > 2 ? micrParts[2] : "??";

            ScannedCheckInfo scannedCheck = new ScannedCheckInfo();

            scannedCheck.FrontImageData = (bitImageFront.StreamSource as MemoryStream).ToArray();
            scannedCheck.BackImageData  = (bitImageBack.StreamSource as MemoryStream).ToArray();
            scannedCheck.RoutingNumber  = routingNumber;
            scannedCheck.AccountNumber  = accountNumber;
            scannedCheck.CheckNumber    = checkNumber;

            ScanningPage.ShowCheckInformation(scannedCheck);

            if ((micrParts.Length < 3) || routingNumber.Length != 9)
            {
                ScanningPage.lblScanWarning.Visibility = Visibility.Visible;
                rangerScanner.StopFeeding();
            }
            else
            {
                ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed;
                ScannedCheckList.Enqueue(scannedCheck);
            }
        }
Exemple #2
0
        /// <summary>
        /// Shows the check information.
        /// </summary>
        /// <param name="scannedCheckInfo">The scanned check info.</param>
        public void ShowCheckInformation(ScannedCheckInfo scannedCheckInfo)
        {
            if (scannedCheckInfo.FrontImageData != null)
            {
                BitmapImage bitmapImageFront = new BitmapImage();
                bitmapImageFront.BeginInit();
                bitmapImageFront.StreamSource = new MemoryStream(scannedCheckInfo.FrontImageData);
                bitmapImageFront.EndInit();
                imgFront.Source = bitmapImageFront;
            }
            else
            {
                imgFront.Source = null;
            }

            if (scannedCheckInfo.BackImageData != null)
            {
                BitmapImage bitmapImageBack = new BitmapImage();
                bitmapImageBack.BeginInit();
                bitmapImageBack.StreamSource = new MemoryStream(scannedCheckInfo.BackImageData);
                bitmapImageBack.EndInit();
                imgBack.Source = bitmapImageBack;
            }
            else
            {
                imgBack.Source = null;
            }


            lblScanInstructions.Visibility = Visibility.Collapsed;
            ExpectingMagTekBackScan        = false;
            if ((imgFront.Source == null) && (imgBack.Source == null))
            {
                lblScanInstructions.Content    = "INFO: Insert the check into the scanner to begin.";
                lblScanInstructions.Visibility = Visibility.Visible;
            }

            // If we have the front image and valid routing number, but not the back (and it's a MagTek).  Inform them to scan the back;
            if (RockConfig.Load().ScannerInterfaceType == RockConfig.InterfaceType.MICRImageRS232)
            {
                if ((imgFront.Source != null) && (imgBack.Source == null))
                {
                    if (scannedCheckInfo.RoutingNumber.Length.Equals(9))
                    {
                        ExpectingMagTekBackScan        = true;
                        lblScanInstructions.Content    = "INFO: Insert the check again facing the other direction to get an image of the back of the check.";
                        lblScanInstructions.Visibility = Visibility.Visible;
                    }
                }
            }

            lblRoutingNumber.Content = scannedCheckInfo.RoutingNumber ?? "--";
            lblAccountNumber.Content = scannedCheckInfo.AccountNumber ?? "--";
            lblCheckNumber.Content   = scannedCheckInfo.CheckNumber ?? "--";
        }
Exemple #3
0
        /// <summary>
        /// Shows the check information.
        /// </summary>
        /// <param name="scannedCheckInfo">The scanned check info.</param>
        public void ShowCheckInformation( ScannedCheckInfo scannedCheckInfo )
        {
            if ( scannedCheckInfo.FrontImageData != null )
            {
                BitmapImage bitmapImageFront = new BitmapImage();
                bitmapImageFront.BeginInit();
                bitmapImageFront.StreamSource = new MemoryStream( scannedCheckInfo.FrontImageData );
                bitmapImageFront.EndInit();
                imgFront.Source = bitmapImageFront;
            }
            else
            {
                imgFront.Source = null;
            }

            if ( scannedCheckInfo.BackImageData != null )
            {
                BitmapImage bitmapImageBack = new BitmapImage();
                bitmapImageBack.BeginInit();
                bitmapImageBack.StreamSource = new MemoryStream( scannedCheckInfo.BackImageData );
                bitmapImageBack.EndInit();
                imgBack.Source = bitmapImageBack;
            }
            else
            {
                imgBack.Source = null;
            }


            lblScanInstructions.Visibility = Visibility.Collapsed;
            ExpectingMagTekBackScan = false;
            if ((imgFront.Source == null) && (imgBack.Source == null))
            {
                lblScanInstructions.Content = "INFO: Insert the check into the scanner to begin.";
                lblScanInstructions.Visibility = Visibility.Visible;
            }

            // If we have the front image and valid routing number, but not the back (and it's a MagTek).  Inform them to scan the back;
            if ( RockConfig.Load().ScannerInterfaceType == RockConfig.InterfaceType.MICRImageRS232 )
            {
                if ( ( imgFront.Source != null ) && ( imgBack.Source == null ) )
                {
                    if ( scannedCheckInfo.RoutingNumber.Length.Equals(9) )
                    {
                        ExpectingMagTekBackScan = true;
                        lblScanInstructions.Content = "INFO: Insert the check again facing the other direction to get an image of the back of the check.";
                        lblScanInstructions.Visibility = Visibility.Visible;
                    }
                }
            }

            lblRoutingNumber.Content = scannedCheckInfo.RoutingNumber ?? "--";
            lblAccountNumber.Content = scannedCheckInfo.AccountNumber ?? "--";
            lblCheckNumber.Content = scannedCheckInfo.CheckNumber ?? "--";
        }
Exemple #4
0
        /// <summary>
        /// Handles the MicrDataReceived event of the micrImage control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void micrImage_MicrDataReceived( object sender, System.EventArgs e )
        {
            object dummy = null;

            string imagePath = string.Empty;
            string imageIndex = string.Empty;
            string statusMsg = string.Empty;

            ScannedCheckInfo scannedCheck = null;
            if ( ScanningPage.ExpectingMagTekBackScan )
            {
                scannedCheck = ScannedCheckList.Last();
            }
            else
            {
                scannedCheck = new ScannedCheckInfo();

                // from MagTek Sample Code
                scannedCheck.RoutingNumber = micrImage.FindElement( 0, "T", 0, "TT", ref dummy );
                scannedCheck.AccountNumber = micrImage.FindElement( 0, "TT", 0, "A", ref dummy );
                scannedCheck.CheckNumber = micrImage.FindElement( 0, "A", 0, "12", ref dummy );
            }

            imagePath = Path.GetTempPath();
            string checkImageFileName = Path.Combine( imagePath, string.Format( "check_{0}_{1}_{2}.tif", scannedCheck.RoutingNumber, scannedCheck.AccountNumber, scannedCheck.CheckNumber ).Replace('?', 'X'));

            if ( File.Exists( checkImageFileName ) )
            {
                File.Delete( checkImageFileName );
            }

            try
            {
                micrImage.TransmitCurrentImage( checkImageFileName, ref statusMsg );
                if ( !File.Exists( checkImageFileName ) )
                {
                    throw new Exception( "Unable to retrieve image" );
                }
                else
                {
                    if ( ScanningPage.ExpectingMagTekBackScan )
                    {
                        scannedCheck.BackImageData = File.ReadAllBytes( checkImageFileName );
                    }
                    else
                    {
                        scannedCheck.FrontImageData = File.ReadAllBytes( checkImageFileName );
                    }

                    ScanningPage.ShowCheckInformation( scannedCheck );

                    if ( scannedCheck.RoutingNumber.Length != 9 )
                    {
                        ScanningPage.lblScanWarning.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed;
                        ScannedCheckList.Enqueue( scannedCheck );
                    }

                    File.Delete( checkImageFileName );
                }
            }
            finally
            {
                micrImage.ClearBuffer();
            }
        }
Exemple #5
0
        /// <summary>
        /// Rangers the scanner_ transport item in pocket.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The e.</param>
        private void rangerScanner_TransportItemInPocket( object sender, AxRANGERLib._DRangerEvents_TransportItemInPocketEvent e )
        {
            BitmapImage bitImageFront = GetCheckImage( Sides.TransportFront );
            BitmapImage bitImageBack = GetCheckImage( Sides.TransportRear );

            string checkMicr = rangerScanner.GetMicrText( 1 ).Replace( "-", string.Empty ).Replace( "!", string.Empty ).Trim();
            string fileName = checkMicr.Replace( " ", "_" );

            string[] micrParts = checkMicr.Split( new char[] { 'c', 'd', ' ' }, StringSplitOptions.RemoveEmptyEntries );
            string routingNumber = micrParts.Length > 0 ? micrParts[0] : "??";
            string accountNumber = micrParts.Length > 1 ? micrParts[1] : "??";
            string checkNumber = micrParts.Length > 2 ? micrParts[2] : "??";

            ScannedCheckInfo scannedCheck = new ScannedCheckInfo();
            scannedCheck.FrontImageData = ( bitImageFront.StreamSource as MemoryStream ).ToArray();
            scannedCheck.BackImageData = ( bitImageBack.StreamSource as MemoryStream ).ToArray();
            scannedCheck.RoutingNumber = routingNumber;
            scannedCheck.AccountNumber = accountNumber;
            scannedCheck.CheckNumber = checkNumber;

            ScanningPage.ShowCheckInformation( scannedCheck );

            if ( ( micrParts.Length < 3 ) || routingNumber.Length != 9 )
            {
                ScanningPage.lblScanWarning.Visibility = Visibility.Visible;
                rangerScanner.StopFeeding();
            }
            else
            {
                ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed;
                ScannedCheckList.Enqueue( scannedCheck );
            }
        }
Exemple #6
0
        /// <summary>
        /// Handles the MicrDataReceived event of the micrImage control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
        private void micrImage_MicrDataReceived(object sender, System.EventArgs e)
        {
            object dummy = null;

            string imagePath  = string.Empty;
            string imageIndex = string.Empty;
            string statusMsg  = string.Empty;

            ScannedCheckInfo scannedCheck = null;

            if (ScanningPage.ExpectingMagTekBackScan)
            {
                scannedCheck = ScannedCheckList.Last();
            }
            else
            {
                scannedCheck = new ScannedCheckInfo();

                // from MagTek Sample Code
                scannedCheck.RoutingNumber = micrImage.FindElement(0, "T", 0, "TT", ref dummy);
                scannedCheck.AccountNumber = micrImage.FindElement(0, "TT", 0, "A", ref dummy);
                scannedCheck.CheckNumber   = micrImage.FindElement(0, "A", 0, "12", ref dummy);
            }

            imagePath = Path.GetTempPath();
            string checkImageFileName = Path.Combine(imagePath, string.Format("check_{0}_{1}_{2}.tif", scannedCheck.RoutingNumber, scannedCheck.AccountNumber, scannedCheck.CheckNumber).Replace('?', 'X'));

            if (File.Exists(checkImageFileName))
            {
                File.Delete(checkImageFileName);
            }

            try
            {
                micrImage.TransmitCurrentImage(checkImageFileName, ref statusMsg);
                if (!File.Exists(checkImageFileName))
                {
                    throw new Exception("Unable to retrieve image");
                }
                else
                {
                    if (ScanningPage.ExpectingMagTekBackScan)
                    {
                        scannedCheck.BackImageData = File.ReadAllBytes(checkImageFileName);
                    }
                    else
                    {
                        scannedCheck.FrontImageData = File.ReadAllBytes(checkImageFileName);
                    }

                    ScanningPage.ShowCheckInformation(scannedCheck);

                    if (scannedCheck.RoutingNumber.Length != 9)
                    {
                        ScanningPage.lblScanWarning.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        ScanningPage.lblScanWarning.Visibility = Visibility.Collapsed;
                        ScannedCheckList.Enqueue(scannedCheck);
                    }

                    File.Delete(checkImageFileName);
                }
            }
            finally
            {
                micrImage.ClearBuffer();
            }
        }