async private void LoadJson() { // ReadData IdCard using (System.IO.StreamReader r = new System.IO.StreamReader("mockData\\passport_mock.json")) { passportModelJson = new PassportModel(); var json = r.ReadToEnd(); var jsonModel = JsonConvert.DeserializeObject <PassportModel>(json); if (jsonModel != null) { jsonModelEncode = encodeData(JsonConvert.SerializeObject(jsonModel)); passportModelJson = jsonModel; } } using (System.IO.StreamReader r = new System.IO.StreamReader("mockData\\passport_mock_image.json")) { jsonPassportImage = new PassportImage(); var image = r.ReadToEnd(); var jsonConvert = JsonConvert.DeserializeObject <PassportImage>(image); Debug.WriteLine(jsonConvert); jsonPassportImage = jsonConvert; } await WaitFormAsync(2000); ReturnMessageToClient(); await WaitFormAsync(1000); CloseForm(); }
public PassportModel GetPassportData(string passportNumber) { var passportModel = new PassportModel(); using (var con = new SqlConnection(Helper.GetConnectionString())) { con.Open(); var query = "SELECT * FROM PassportData WHERE PassportNumber = @passportNumber"; using (var cmd = new SqlCommand(query, con)) { cmd.Parameters.Add("@passportNumber", System.Data.SqlDbType.VarChar).Value = passportNumber; var reader = cmd.ExecuteReader(); while (reader.Read()) { passportModel.Id = (long)reader[nameof(PassportModel.Id)]; passportModel.FirstName = reader[nameof(PassportModel.FirstName)].ToString(); passportModel.LastName = reader[nameof(PassportModel.LastName)].ToString(); passportModel.DateOfBirth = (DateTime)reader[nameof(PassportModel.DateOfBirth)]; passportModel.PassportNumber = reader[nameof(PassportModel.PassportNumber)].ToString(); passportModel.Sex = (bool)reader[nameof(PassportModel.Sex)]; } } } return(passportModel); }
public async Task <Message <PassportModel> > ValidatePassport(PassportModel model, string endPoint) { var requestUrl = CreateRequestUri(string.Format(System.Globalization.CultureInfo.InvariantCulture, endPoint)); return(await PostAsync <PassportModel>(requestUrl, model)); }
private void TriggerHandleMrzResult(PassportModel result) { if (OnHandleMrzResult != null && result != null) { OnHandleMrzResult(result); } }
public Guid Register(PassportModel model) { var passport = _passportSearchRepository.GetPassportByName(model.UserName); if (passport != null) { return(Guid.Empty); } SubscriberEntity subscriber = new SubscriberEntity { Id = Guid.NewGuid(), CreateTime = DateTime.Now, Name = model.UserName }; var addSubscriber = _subscriberRepository.AddSubscriber(subscriber); if (!addSubscriber) { return(Guid.Empty); } passport = new PassportEntity { UserName = model.UserName, Password = _encrypt.Encrypt(model.Password), SubscriberId = subscriber.Id }; return(_passportRepository.AddPassport(passport) ? subscriber.Id : Guid.Empty); }
public async Task <PassportModel> ScanPassportAsync(byte[] frontImage, byte[] backImage = null, string fileName = null) { var passport = new PassportModel(); try { var formContent = new MultipartFormDataContent { { new StringContent("9c5c3b7c9c88957"), "apikey" }, { new StringContent("eng"), "language" }, { new StringContent("false"), "isOverlayRequired" }, { new StreamContent(new MemoryStream(frontImage)), "file", fileName }, { new StringContent(fileName.Split('.')[1]), "filetype" } }; var myHttpClient = new HttpClient(); var response = await myHttpClient.PostAsync("https://api.ocr.space/parse/image", formContent); string stringContent = await response.Content.ReadAsStringAsync(); JObject imageData = JObject.Parse(stringContent); string[] imageText = imageData["ParsedResults"][0]["ParsedText"].ToString().Split("\r\n"); passport.Number = imageText[2]; passport.LastName = imageText[3]; passport.FirstName = imageText[4]; } catch (Exception ex) { } return(passport); }
public async Task <ActionResult> Register(PassportModel model) { if (_subscriberService.Register(model)) { return(await this.SignIn(model)); } return(Fail(-1, "注册失败")); }
public bool CreatePassport(PassportModel model) { var subscriber = _subscriberSearchRepository.GetSubscriberById(model.SubscriberId); var passport = subscriber.CreatePassport(model); passport.Password = _encrypt.Encrypt(passport.Password); return(_passportRepository.AddPassport(passport)); }
public async Task <IActionResult> Validate(PassportViewModel model) { if (ModelState.IsValid) { var endPoint = string.Concat(_apiSettings.Value.ValidationEndPoint, "ValidateMZR"); var passportModel = new PassportModel( model.PassportNo, model.Nationality, model.Gender, model.DateOfBirth.ToString("yyMMdd"), model.DateOfExpiration.ToString("yyMMdd"), AlphaNumericChevronOnly(model.PassportNumber), NumericOnly(model.PassportNumberChecksum), AlphaChevronOnly(model.NationalityCode), NumericOnly(model.DateOfBirthMzr), NumericOnly(model.DOBChecksum), GenderString(model.Sex), NumericOnly(model.PassportExpiration), NumericOnly(model.ExpirationChecksum), AlphaNumericChevronOnly(model.PersonalNumber), NumericChevronOnly(model.PersonalNumberChecksum), NumericOnly(model.FinalChecksum), false, false, false, false, false, false, false, false, false, false); var response = await ApiClientFactory.Instance.ValidatePassport(passportModel, endPoint); var results = new ValidationResultViewModel(); results.PassportNumberChecksumValid = response.Data.PassportNumberChecksumValid; results.DOBChecksumValid = response.Data.DateOfBirthChecksumValid; results.ExpirationChecksumValid = response.Data.PassportExpirationChecksumValid; results.PersonalNumberChecksumValid = response.Data.PersonalNumberChecksumValid; results.FinalChecksumValid = response.Data.FinalChecksumValid; results.GenderCCValid = response.Data.GenderCrossCheckValid; results.DOBCCValid = response.Data.DateOfBirthCrossCheckValid; results.ExpirationDateCCValid = response.Data.PassportExpCrossCheckValid; results.NationalityCCValid = response.Data.NationalityCrossCheckValid; results.PassportNoCCValid = response.Data.PassportNoCrossCheckValid; ModelState.Clear(); return(View(results)); } return(await Index()); }
public async Task <ActionResult> PassportValidation(PassportModel model) { using (CancellationTokenSource source = new CancellationTokenSource(TimeSpan.FromMinutes(1))) { var result = await this.client.ValidatePassportAsync(model, source.Token).ConfigureAwait(false); return(View("Validate", result)); } }
static PassportModel ParsePassportType2(string[] lines) { var result = new PassportModel(); var line0 = lines[0]; var line1 = lines[1]; try { /*DocumentType*/ var documentType = PassportParserHelper.StripPadding(line0.Substring(0, 2)); /*CountryOfIssue*/ var countryOfIssue = PassportParserHelper.GetRegion(line0.Substring(2, 3)); /*Names*/ var names = PassportParserHelper.GetNames(line0.Substring(5)); /*DocumentNr*/ var documentNrRaw = line1.Substring(0, 9); var documentCheckDigit = line1.Substring(9, 1); var checkDigitVerifyDocumentNr = PassportParserHelper.CheckDigitVerify(documentNrRaw, int.Parse(documentCheckDigit)); /*Nationality*/ var nationality = PassportParserHelper.GetRegion(line1.Substring(10, 3)); /*DateOfBirth*/ var dobRaw = line1.Substring(13, 6); var dobCheckDigit = line1.Substring(19, 1); var checkDigitVerifyDob = PassportParserHelper.CheckDigitVerify(dobRaw, int.Parse(dobCheckDigit)); var dateOfBirth = PassportParserHelper.GetFullDate(dobRaw); /*Sex*/ var sex = line1.Substring(20, 1); /*ExpirationDate*/ var expirationDateRaw = line1.Substring(21, 6); var expirationDateDigit = line1.Substring(27, 1); var checkDigitVerifyExpirationDate = PassportParserHelper.CheckDigitVerify(expirationDateRaw, int.Parse(expirationDateDigit)); var expirationDate = PassportParserHelper.GetFullDate(expirationDateRaw); result = new PassportModel { DocumentType = documentType, CountyOfIssue = countryOfIssue, DocumentNumber = PassportParserHelper.StripPadding(documentNrRaw), DateOfBirth = dateOfBirth, Sex = sex, ExpirartionDate = expirationDate, Nationality = nationality, Names = names, Valid = ( checkDigitVerifyDocumentNr && checkDigitVerifyDob && checkDigitVerifyExpirationDate ) }; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("the scanned text is not a valid MRZ, " + ex.Message); } return(result); }
public PassportEntity CreatePassport(PassportModel model) { return(new PassportEntity { SubscriberId = this.Id, UserName = model.UserName, Password = model.Password }); }
protected async Task <bool> HaveUniqueIdNumberAsync( PassportModel model, int?customerId = null, CancellationToken token = default) { return(!await _context.Customers .Where(x => !x.IsDeleted && x.Id != customerId) .Where(x => x.Passport.IdNumber == model.IdNumber) .AnyAsync(token)); }
public async Task <ActionResult> SignIn(PassportModel model) { var passportId = _passportService.SignIn(model); if (passportId == Guid.Empty) { return(Fail(-1, "用户名或密码错误")); } model.Id = passportId; await SignInAsync(new SmafacUser(model), true); return(Success(model)); }
public bool Register(PassportModel model) { var subscriberId = _subscriberRegister.Register(model); var success = subscriberId != Guid.Empty; if (success && _dataInitializations.Any()) { _dataInitializations.ToList().ForEach( initialization => { initialization.Init(subscriberId); }); } return(success); }
public Guid SignIn(PassportModel model) { var passport = _passportSearchRepository.GetPassportByName(model.UserName); if (passport == null) { return(Guid.Empty); } var verify = passport.VerifyPassword(model.Password); if (!verify) { return(Guid.Empty); } model.SubscriberId = passport.SubscriberId; return(passport.Id); }
public void Validate(PassportModel model) { var finalCheck = string.Concat(model.MzrPassportNumber, model.PassportNumberChecksum, model.MzrDateOfBirth, model.DOBChecksum, model.PassportExpiration, model.ExpirationChecksum, model.PersonalNumber, model.PersonalNumberChecksum); model.PassportNumberChecksumValid = Checksum(model.MzrPassportNumber, model.PassportNumberChecksum); model.DateOfBirthChecksumValid = Checksum(model.MzrDateOfBirth, model.DOBChecksum); model.PassportExpirationChecksumValid = Checksum(model.PassportExpiration, model.ExpirationChecksum); model.PersonalNumberChecksumValid = Checksum(model.PersonalNumber, model.PersonalNumberChecksum); model.FinalChecksumValid = Checksum(finalCheck, model.FinalChecksum); model.GenderCrossCheckValid = CrossCheck(model.Gender, model.Sex); model.DateOfBirthCrossCheckValid = CrossCheck(model.DateOfBirth, model.MzrDateOfBirth); model.PassportExpCrossCheckValid = CrossCheck(model.DateOfExpiration, model.PassportExpiration); model.NationalityCrossCheckValid = CrossCheck(model.Nationality, model.MzrNationalityCode); model.PassportNoCrossCheckValid = CrossCheck(model.PassportNumber, model.MzrPassportNumber); }
public string Login(PassportModel model) { var passport = _passportSearchRepository.GetPassportByName(model.UserName); if (passport == null) { return(string.Empty); } var verify = passport.VerifyPassword(_encrypt.Encrypt(model.Password)); if (!verify) { return(string.Empty); } var signIn = passport.CreateSignIn(passport.Id); _signInRepository.AddSignIn(signIn); return(signIn.Token); }
public async Task <ValidationModel> ValidatePassportAsync(PassportModel input, CancellationToken cancellationToken) { EnsureArg.IsNotNull(input, nameof(input)); cancellationToken.ThrowIfCancellationRequested(); var requestUri = new Uri(apiEndpoint, "api/passportvalidation/"); using (var request = new HttpRequestMessage(HttpMethod.Post, requestUri)) { request.Headers.Authorization = new AuthenticationHeaderValue(AuthorizationScheme, authorizationkey); var jsonBody = JsonConvert.SerializeObject(input); request.Content = new StringContent(jsonBody, Encoding.UTF8, ContentTypeHeader); var result = await this.client.SendAsync(request, cancellationToken).ConfigureAwait(false); string resultString = await result.Content.ReadAsStringAsync(); var apiResponseData = JsonConvert.DeserializeObject <ValidationModel>(resultString); return(apiResponseData); } }
public bool CreatePassport(PassportModel model) { return(_passportService.CreatePassport(model)); }
public SmafacUser(PassportModel passport) { _passport = passport; _username = string.Format("{0};{1}", _passport.SubscriberId.ToString(), _passport.Id.ToString()); }
public string Login(PassportModel model) { return(_passportService.Login(model)); }
public bool Register(PassportModel model) { return(_subscriberService.Register(model)); }
private bool ValidatePassport(PassportModel passport, bool dataValidation) { var bits = passport.ToString().Split(' '); if (!(bits.Length == 8) && !(bits.Length == 7 && !bits.Where(b => b.Contains("cid:")).ToList().Any())) { return(false); } if (dataValidation) { if (passport.byr < 1920 || passport.byr > 2020) { return(false); } if (passport.iyr < 2010 || passport.iyr > 2020) { return(false); } if (passport.eyr < 2020 || passport.eyr > 2030) { return(false); } // Bit of regex fun because... Why not var match = Regex.Match(passport.hgt, @"^(\d{2,3})([a-z]{2})$"); if (!match.Groups[2].Value.Equals("in") && !match.Groups[2].Value.Equals("cm")) { return(false); } if (match.Groups[2].Value.Equals("cm")) { if (Int32.Parse(match.Groups[1].Value) < 150 || Int32.Parse(match.Groups[1].Value) > 193) { return(false); } } else { if (Int32.Parse(match.Groups[1].Value) < 59 || Int32.Parse(match.Groups[1].Value) > 76) { return(false); } } // More fun ! (please help) match = Regex.Match(passport.hcl, "^#[a-f0-9]{6}$"); if (!match.Success) { return(false); } if (!passport.ecl.Equals("amb") && !passport.ecl.Equals("blu") && !passport.ecl.Equals("brn") && !passport.ecl.Equals("gry") && !passport.ecl.Equals("grn") && !passport.ecl.Equals("hzl") && !passport.ecl.Equals("oth")) { return(false); } // ... match = Regex.Match(passport.pid, @"^\d{9}$"); if (!match.Success) { return(false); } // Who cares about the cid anyways } return(true); }
public async Task <PassportModel> ScanPassportAsync(byte[] frontImage, byte[] backImage = null, string fileName = null) { var passport = new PassportModel(); try { if (frontImage == null) { return(passport); } dynamic credential; using (var stream = new FileStream("visioncredentails.json", FileMode.Open, FileAccess.Read)) { string[] scopes = { VisionService.Scope.CloudPlatform }; credential = GoogleCredential.FromStream(stream); credential = credential.CreateScoped(scopes); } var service = new VisionService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = "VisionMule", GZipEnabled = true, }); BatchAnnotateImagesRequest batchRequest = new BatchAnnotateImagesRequest(); batchRequest.Requests = new List <AnnotateImageRequest>(); batchRequest.Requests.Add(new AnnotateImageRequest() { Features = new List <Feature>() { new Feature() { Type = "DOCUMENT_TEXT_DETECTION", MaxResults = 1 }, }, ImageContext = new ImageContext() { LanguageHints = new List <string>() { "en" } }, Image = new Image() { Content = Convert.ToBase64String(frontImage) } }); if (backImage != null) { batchRequest.Requests.Add(new AnnotateImageRequest() { Features = new List <Feature>() { new Feature() { Type = "DOCUMENT_TEXT_DETECTION", MaxResults = 1 }, }, ImageContext = new ImageContext() { LanguageHints = new List <string>() { "en" } }, Image = new Image() { Content = Convert.ToBase64String(backImage) } }); } var annotate = service.Images.Annotate(batchRequest); BatchAnnotateImagesResponse batchAnnotateImagesResponse = await annotate.ExecuteAsync(); try { string[] passportFrontData = batchAnnotateImagesResponse.Responses[0].FullTextAnnotation.Text.Split('\n'); passportFrontData = passportFrontData.Where(x => x.ToString().Length > 1).ToArray(); string[] passportSortedDetails = passportFrontData.Where(x => x.ToString().Contains("<<")).ToArray(); if (passportSortedDetails.Length > 1) { string[] p1 = passportSortedDetails[0].Replace('<', ' ').Trim().Split(' '); string[] p2 = passportSortedDetails[1].Replace('<', ' ').Trim().Split(' '); passport.LastName = p1[1].Trim().Contains("IND") && p1.Length > 3 ? p1[1].Trim().Remove(0, 3) : p1.Any(p => p.Contains("IND")) && p1[Array.FindIndex(p1, i => i.Contains("IND"))].Length > 3 ? p1[Array.FindIndex(p1, i => i.Contains("IND"))].Remove(0, 3) : null; if (p1.Length >= 2) { for (int i = 2; i < p1.Length; i++) { passport.FirstName += " " + p1[i]; } } passport.FirstName = passport.FirstName.Trim(); passport.Number = p2[0].Trim().Length > 3 ? p2[0].Trim() : null; } DateTime dob = DateTime.MinValue; int placeOfBirthIndex = Array.FindIndex(passportFrontData, i => i.Contains("Place of Birth")) + 1; int placeOfIssueIndex = Array.FindIndex(passportFrontData, i => i.Contains("Place of Issue")) + 1; int dobIndex = Array.FindIndex(passportFrontData, i => i.Contains("Date of Birth")); for (int p = 1; p < 5; p++) { bool isValid = DateTime.TryParseExact(passportFrontData[dobIndex + p], "d/M/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dob); if (isValid) { break; } } passport.DateOfBirth = dob > DateTime.MinValue ? dob.ToString("dd-MM-yyyy") : string.Empty; passport.PlaceOfBirth = passportFrontData[placeOfBirthIndex]; passport.PlaceOfIssue = passportFrontData[placeOfIssueIndex]; } catch (Exception) { } string[] passportBackData = null; if (backImage != null) { passportBackData = batchAnnotateImagesResponse.Responses[1].FullTextAnnotation.Text.Split('\n'); passportBackData = passportBackData.Where(x => x.ToString().Length > 1).ToArray(); } if (passportBackData != null) { int fatherName = Array.FindIndex(passportBackData, i => i.Contains("Name of Father")) + 1; int motherName = Array.FindIndex(passportBackData, i => i.Contains("Name of Mother")) + 1; int spouseName = Array.FindIndex(passportBackData, i => i.Contains("Name of Spouse")) + 1; int Address = Array.FindIndex(passportBackData, i => i.Contains("Address")) + 1; passport.FatherName = passportBackData[fatherName]; passport.MotherName = motherName > 1 ? passportBackData[motherName] : passportBackData[motherName + 1]; passport.SpouseName = spouseName > 3 ? passportBackData[spouseName] : passportBackData[spouseName + 2]; passport.Address = Address > 5 ? (passportBackData[Address] + passportBackData[Address + 1] + passportBackData[Address + 2]).Replace('\n', ',') : (passportBackData[Address + 3] + passportBackData[Address + 4] + passportBackData[Address + 5]).Replace('\n', ','); } } catch (Exception ex) { var st = new StackTrace(ex, true); var frame = st.GetFrame(0); var line = frame.GetFileLineNumber(); Console.WriteLine("Error: Scanning Image." + ex.Message + line); } return(passport); }