private void OnResultsObtained(RGLDocReaderAction action, RGLDocumentReaderResults result, NSError error)
        {
            DocReaderScannerEvent readerScannerEvent = null;

            if (action == RGLDocReaderAction.Complete)
            {
                if (result == null)
                {
                    readerScannerEvent = new DocReaderScannerEvent()
                    {
                        IsSuccess = false, Error = "Document Reader results is empty"
                    };
                }
                else
                {
                    if (IsReadRfid)
                    {
                        ReadRfid();
                    }
                    else
                    {
                        readerScannerEvent = GenerateDocReaderScannerEvent(result);
                    }
                }
            }

            if (readerScannerEvent != null)
            {
                ResultsObtained(this, readerScannerEvent);
            }
        }
        private DocReaderScannerEvent GenerateDocReaderScannerEvent(RGLDocumentReaderResults result)
        {
            DocReaderScannerEvent readerScannerEvent = new DocReaderScannerEvent()
            {
                IsSuccess = true
            };
            var name = result.GetTextFieldValueByType(RGLFieldType.Surname_And_Given_Names);

            if (!System.String.IsNullOrEmpty(name))
            {
                readerScannerEvent.SurnameAndGivenNames = name;
            }

            // through all available text fields
            foreach (var textField in result.TextResult.Fields)
            {
                var value = result.GetTextFieldValueByType(textField.FieldType, textField.Lcid);
                if (value != null)
                {
                    Console.WriteLine("Field type name: {0}, value: {1}", textField.FieldName, value);
                }
            }

            using (var portraitImage = result.GetGraphicFieldImageByType(RGLGraphicFieldType.Portrait))
            {
                if (portraitImage != null)
                {
                    readerScannerEvent.PortraitField = ConvertImage(portraitImage);
                }
            }

            using (var documentImage = result.GetGraphicFieldImageByType(RGLGraphicFieldType.DocumentImage, RGLResultType.RawImage))
            {
                if (documentImage != null)
                {
                    readerScannerEvent.DocumentField = ConvertImage(documentImage);
                }
            }

            return(readerScannerEvent);
        }