Exemplo n.º 1
0
 public IEnumerable <MrzInfo> InsertMrzInfo(MrzInfo mrzInfo)
 {
     mrzInfo.CreatedDate = DateTime.Now;
     _dbContext.Add(mrzInfo);
     Save();
     return(_dbContext.MrzInfos.ToList());
 }
        public async Task <IActionResult> Post(IFormFile file)
        {
            List <string> restURL = new List <string>();

            #region SavingFile
            _logger.LogInfo("Uploading file success - Started");
            var filePath = string.Empty;

            var    strActualFileName = Path.GetFileNameWithoutExtension(file.FileName);
            var    fileExt           = Path.GetExtension(file.FileName);
            var    appendString      = DateTime.Now.ToString("yyyyddmmHHssmmm");
            string strUniquename     = strActualFileName + "_" + appendString + "" + fileExt;
            var    uploads           = @"C:/AzaKawSampleKYC/KYCUploads";
            if (!Directory.Exists(uploads))
            {
                _logger.LogInfo("Creating Upload Directory - Start");
                Directory.CreateDirectory(uploads);
                _logger.LogInfo("Creating Upload Directory - Done");
            }
            if (file.Length > 0)
            {
                filePath = Path.Combine(uploads, strUniquename);

                using (var fileStream = new FileStream(filePath, FileMode.Create))
                {
                    await file.CopyToAsync(fileStream);
                }
            }
            strActualFileName = strActualFileName + "" + fileExt;
            _logger.LogInfo("Uploading file success - Done");
            #endregion

            #region ReadingMRZWithAbbyOCR
            _logger.LogInfo("Reading MRZ Inforation with Abby Cloud OCR - Started");
            if (System.IO.File.Exists(@filePath))
            {
                using (var ocrClient = OCRHelper.GetOcrClientWithRetryPolicy())
                {
                    restURL = await OCRHelper.ProcessImageAsync(ocrClient, @filePath);

                    //new List<string>() { "https://ocrsdk.blob.core.windows.net/files/8ebe4855-1071-4ed0-95b6-de2334536a85.result?sv=2012-02-12&se=2019-11-02T21%3A00%3A00Z&sr=b&si=downloadResults&sig=VFoM9QfONhmpc4GjokEIEDDtIIDd9fRDY8t%2Bkvdu%2Fuo%3D" };
                    //await OCRHelper.ProcessImageAsync(ocrClient, @filePath);
                }
            }
            else
            {
                _logger.LogWarn("Could not find the uploaded file");
                throw new ArgumentException($"Some thing went wrong, Please contact administrator (view logs)");
            }
            _logger.LogInfo("Reading MRZ Inforation with Abby Cloud OCR - Done");
            #endregion

            #region ReadingMRZOutput
            _logger.LogInfo("Reading MRZ Resulted Output - Start");
            DataSet    ds         = new DataSet();
            WebRequest request    = WebRequest.Create(restURL[0].ToString());
            Encoding   encoding   = Encoding.GetEncoding("iso-8859-1");
            WebRequest requestXML = WebRequest.Create(restURL[0].ToString());
            request.Method = "GET";
            using (var response = (System.Net.HttpWebResponse)request.GetResponse())
            {
                // get correct charset and encoding from the server's header
                Encoding encodingXML;
                try
                {
                    encodingXML = Encoding.GetEncoding(response.CharacterSet);
                }
                catch
                {
                    encodingXML = Encoding.UTF8;
                }

                using (var rdr = new StreamReader(response.GetResponseStream(), encoding))
                {
                    ds.ReadXml(rdr);
                }
            }

            MrzInfo objMRZ = OCRHelper.DeserializeMRZInfo(ds.Tables[1]);
            objMRZ.CustomerId     = int.Parse(User.Claims.FirstOrDefault().Value);
            objMRZ.FileName       = strActualFileName;
            objMRZ.FileNameUnique = strUniquename;
            _logger.LogInfo("Reading MRZ Resulted Output - Done");
            #endregion

            #region KYCVerification
            _logger.LogInfo("Verifying User KYC Details with Trulioo - Start");
            //Example Username: JoeNapoli_API_Demo, Example Password: 05uZuPRCyPi!6
            bool isKYCVerified = await IsKYCVerified();

            _logger.LogInfo("Verifying User KYC Details with Trulioo - End");
            #endregion
            #region SavingMRZInfo
            _logger.LogInfo("Saving MRZ Info - Start");
            objMRZ.isKYCVerified  = isKYCVerified;
            objMRZ.AdditionalInfo = JsonConvert.SerializeObject(objMRZ);
            _uploadRepository.InsertMrzInfo(objMRZ);
            var allMRzInfo = _uploadRepository.GetMrzInfos();
            _logger.LogInfo("Saving MRZ Info - End");
            #endregion
            return(Ok(allMRzInfo));
        }
Exemplo n.º 3
0
        public static MrzInfo DeserializeMRZInfo(DataTable dtMRZ)
        {
            var retList = new MrzInfo();

            for (int i = 0; i < dtMRZ.Rows.Count; i++)
            {
                var row = dtMRZ.Rows[i];
                switch (row["type"])
                {
                case "MRZType":
                    retList.MrzType = row["value"].ToString();
                    break;

                case "MrzType":
                    retList.MrzType = row["value"].ToString();
                    break;

                case "Line1":
                    retList.Line1 = row["value"].ToString();
                    break;

                case "Line2":
                    retList.Line2 = row["value"].ToString();
                    break;

                case "Checksum":
                    retList.Checksum = row["value"].ToString();
                    break;

                case "ChecksumVerified":
                    retList.ChecksumVerified = row["value"].ToString();
                    break;

                case "DocumentType":
                    retList.DocumentType = row["value"].ToString();
                    break;

                case "DocumentSubtype":
                    retList.DocumentSubtype = row["value"].ToString();
                    break;

                case "IssuingCountry":
                    retList.IssuingCountry = row["value"].ToString();
                    break;

                case "DocumentNumber":
                    retList.DocumentNumber = row["value"].ToString();
                    break;

                case "DocumentNumberVerified":
                    retList.DocumentNumberVerified = row["value"].ToString();
                    break;

                case "DocumentNumberCheck":
                    retList.DocumentNumberCheck = row["value"].ToString();
                    break;

                case "Nationality":
                    retList.Nationality = row["value"].ToString();
                    break;

                case "BirthDate":
                    retList.BirthDate = row["value"].ToString();
                    break;

                case "BirthDateVerified":
                    retList.BirthDateVerified = row["value"].ToString();
                    break;

                case "BirthDateCheck":
                    retList.BirthDateCheck = row["value"].ToString();
                    break;

                case "Sex":
                    retList.Sex = row["value"].ToString();
                    break;

                case "ExpiryDate":
                    retList.ExpiryDate = row["value"].ToString();
                    break;

                case "ExpiryDateVerified":
                    retList.ExpiryDateVerified = row["value"].ToString();
                    break;

                case "ExpiryDateCheck":
                    retList.ExpiryDateCheck = row["value"].ToString();
                    break;
                }
            }
            return(retList);
        }