From 8fe9891d62e0bb3f1a377617b16d345ea1a74a23 Mon Sep 17 00:00:00 2001 From: Juliana Date: Wed, 12 May 2021 15:19:00 -0300 Subject: [PATCH 1/3] feat(am): permitir scanear documento cuando registro nueva cuenta --- .../informacion-validacion.html | 15 ++++-- .../informacion-validacion.ts | 52 ++++++++++++++++++- src/app/pages/login/login.module.ts | 4 +- src/providers/scan-parser.ts | 22 +++++--- 4 files changed, 79 insertions(+), 14 deletions(-) diff --git a/src/app/pages/login/informacion-validacion/informacion-validacion.html b/src/app/pages/login/informacion-validacion/informacion-validacion.html index 5861699d..1f5070b5 100644 --- a/src/app/pages/login/informacion-validacion/informacion-validacion.html +++ b/src/app/pages/login/informacion-validacion/informacion-validacion.html @@ -23,7 +23,13 @@

- Complete el siguiente formulario con sus datos para registrarse en la aplicación + Para registrarte en Andes, ingresá tu documento, número de trámite de documento, sexo y un + correo + electrónico.
+ Si preferís, podés registrarte + escaneando tu DNI con la cámara + de tu + celular.
@@ -99,7 +105,7 @@


-
+
@@ -114,7 +120,10 @@

href="mailto:info@andes.gob.ar">info@andes.gob.ar - + diff --git a/src/app/pages/login/informacion-validacion/informacion-validacion.ts b/src/app/pages/login/informacion-validacion/informacion-validacion.ts index 4f00412d..74bc59df 100644 --- a/src/app/pages/login/informacion-validacion/informacion-validacion.ts +++ b/src/app/pages/login/informacion-validacion/informacion-validacion.ts @@ -4,6 +4,8 @@ import { Router } from '@angular/router'; import { ToastProvider } from 'src/providers/toast'; import { PacienteProvider } from 'src/providers/paciente'; import { ToastController } from '@ionic/angular'; +import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx'; +import { ScanParser } from 'src/providers/scan-parser'; @Component({ selector: 'app-informacion-validacion', @@ -18,14 +20,18 @@ export class InformacionValidacionPage implements OnInit { public textoLibre: string = null; public formRegistro: any; public infoNrotramite = false; + public infoScan = false; public showAccountInfo = false; accountNombre: any; + public scanValido = false; constructor( private formBuilder: FormBuilder, private router: Router, - private toast: ToastProvider, + private toastCtrl: ToastProvider, public toastController: ToastController, - private pacienteProvider: PacienteProvider) { + private pacienteProvider: PacienteProvider, + private barcodeScanner: BarcodeScanner, + private scanParser: ScanParser) { } ngOnInit(): void { @@ -60,6 +66,7 @@ export class InformacionValidacionPage implements OnInit { this.paciente.telefono = this.formRegistro.controls.celular.value; this.paciente.email = this.formRegistro.controls.email.value; this.paciente.recaptcha = this.formRegistro.controls.recaptcha.value; + this.paciente.scan = this.scanValido; this.pacienteProvider.registro(this.paciente).then(async (resultado: any) => { if (resultado._id) { this.loading = false; @@ -113,6 +120,47 @@ export class InformacionValidacionPage implements OnInit { this.infoNrotramite = !this.infoNrotramite; } + showInfoScan() { + this.infoScan = !this.infoScan; + } + + scanner() { + this.barcodeScanner.scan( + { + preferFrontCamera: false, + formats: 'QR_CODE,PDF_417', + disableSuccessBeep: false, + showTorchButton: true, + torchOn: true, + prompt: 'Poner el código de barra en la cámara', + resultDisplayDuration: 500, + } + + ).then((barcodeData) => { + const datos = this.scanParser.scan(barcodeData.text); + if (datos) { + this.formRegistro.controls.sexo.setValue(datos.sexo.toLowerCase()); + this.formRegistro.controls.documento.setValue(datos.documento); + this.formRegistro.controls.tramite.setValue(datos.tramite); + this.formRegistro.get('recaptcha').setValidators(null); + this.formRegistro.get('recaptcha').updateValueAndValidity(); + this.scanValido = true; + } else { + this.toastCtrl.danger('Documento invalido'); + } + }, (err) => { + }); + } + + cleanScan() { + this.formRegistro.controls.sexo.setValue(''); + this.formRegistro.controls.documento.setValue(''); + this.formRegistro.get('recaptcha').setValidators([Validators.required]); + this.formRegistro.get('recaptcha').updateValueAndValidity(); + this.scanValido = false; + + } + } diff --git a/src/app/pages/login/login.module.ts b/src/app/pages/login/login.module.ts index 789a8187..c171ddf8 100755 --- a/src/app/pages/login/login.module.ts +++ b/src/app/pages/login/login.module.ts @@ -13,6 +13,7 @@ import { AdsModule } from 'src/app/ads/ads.module'; import { RecuperarPasswordPage } from './recuperar-password/recuperar-password'; import { RecaptchaModule, RecaptchaFormsModule } from 'ng-recaptcha'; import { PacienteProvider } from 'src/providers/paciente'; +import { ScanParser } from 'src/providers/scan-parser'; @NgModule({ imports: [ @@ -34,7 +35,8 @@ import { PacienteProvider } from 'src/providers/paciente'; ], providers: [ DisclaimersProvider, - PacienteProvider + PacienteProvider, + ScanParser ], }) diff --git a/src/providers/scan-parser.ts b/src/providers/scan-parser.ts index 1b24a822..014f4477 100644 --- a/src/providers/scan-parser.ts +++ b/src/providers/scan-parser.ts @@ -7,6 +7,7 @@ export interface DocumentoEscaneado { grupoNombre: number; grupoSexo: number; grupoFechaNacimiento: number; + grupoTramite: number; } export const DocumentoEscaneados: DocumentoEscaneado[] = [ @@ -17,18 +18,20 @@ export const DocumentoEscaneados: DocumentoEscaneado[] = [ grupoApellido: 2, grupoNombre: 3, grupoSexo: 5, - grupoFechaNacimiento: 4 + grupoFechaNacimiento: 4, + grupoTramite: null }, // DNI Argentino segunda y tercera versión // Formato: 00327345190@GARCIA@JUAN FRANCISCO@M@23680640@A@25/08/1979@06/01/2015@209 // Formato: 00125559991@PENA SAN JUAN@ORLANDA YUDITH@F@28765457@A@17/01/1944@28/12/2012 { - regEx: /[0-9]+@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@([MF])@([MF]*[0-9]+)@[A-Z]@([0-9]{2}\/[0-9]{2}\/[0-9]{4})(.*)/i, - grupoNumeroDocumento: 4, - grupoApellido: 1, - grupoNombre: 2, - grupoSexo: 3, - grupoFechaNacimiento: 5 + regEx: /([0-9]+)@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@([MF])@([MF]*[0-9]+)@[A-Z]@([0-9]{2}\/[0-9]{2}\/[0-9]{4})(.*)/i, + grupoNumeroDocumento: 5, + grupoApellido: 2, + grupoNombre: 3, + grupoSexo: 4, + grupoFechaNacimiento: 6, + grupoTramite: 1 }, // QR ACTA DE NACIMIENTO @@ -39,7 +42,8 @@ export const DocumentoEscaneados: DocumentoEscaneado[] = [ grupoApellido: 1, grupoNombre: 2, grupoSexo: 0, - grupoFechaNacimiento: 0 + grupoFechaNacimiento: 0, + grupoTramite: null } ]; @@ -47,6 +51,7 @@ export const DocumentoEscaneados: DocumentoEscaneado[] = [ export class ScanParser { public scan(texto: string) { + console.log(texto); const scanFormat = this.findFormat(texto); if (scanFormat) { return this.parseDocumentoEscaneado(scanFormat, texto); @@ -83,6 +88,7 @@ export class ScanParser { apellido: datos[documento.grupoApellido], documento: datos[documento.grupoNumeroDocumento].replace(/\D/g, ''), fechaNacimiento: datos[documento.grupoFechaNacimiento], + tramite: documento.grupoTramite ? datos[documento.grupoTramite] : '', sexo, genero: sexo, telefono: null From a195f2168ab87b6a97b71a8ab34e2eff317b060a Mon Sep 17 00:00:00 2001 From: Carolina Date: Thu, 27 May 2021 11:50:50 -0300 Subject: [PATCH 2/3] corrige regex primera version DNI --- src/providers/scan-parser.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/providers/scan-parser.ts b/src/providers/scan-parser.ts index 014f4477..97b85781 100644 --- a/src/providers/scan-parser.ts +++ b/src/providers/scan-parser.ts @@ -13,13 +13,13 @@ export interface DocumentoEscaneado { export const DocumentoEscaneados: DocumentoEscaneado[] = [ // DNI Argentino primera versión { - regEx: /@([MF]*[A-Z0-9]+)\s*@[A-Z]+@[0-9]+@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@[A-Z]+@([0-9]{2}\/[0-9]{2}\/[0-9]{4})@([MF])@/i, + regEx: /@([MF]*[A-Z0-9]+)\s*@[A-Z]+@[0-9]+@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@([a-zA-ZñÑáéíóúÁÉÍÓÚÜü'\-\s]+)@[A-Z]+@([0-9]{2}\/[0-9]{2}\/[0-9]{4})@([MF])@([0-9]{2}\/[0-9]{2}\/[0-9]{4})@([0-9]+)@/i, grupoNumeroDocumento: 1, grupoApellido: 2, grupoNombre: 3, grupoSexo: 5, grupoFechaNacimiento: 4, - grupoTramite: null + grupoTramite: 7 }, // DNI Argentino segunda y tercera versión // Formato: 00327345190@GARCIA@JUAN FRANCISCO@M@23680640@A@25/08/1979@06/01/2015@209 @@ -51,7 +51,6 @@ export const DocumentoEscaneados: DocumentoEscaneado[] = [ export class ScanParser { public scan(texto: string) { - console.log(texto); const scanFormat = this.findFormat(texto); if (scanFormat) { return this.parseDocumentoEscaneado(scanFormat, texto); From a3ac0b0cf24eb825aa831e3ee4723946600a338b Mon Sep 17 00:00:00 2001 From: Carolina Date: Thu, 27 May 2021 11:50:50 -0300 Subject: [PATCH 3/3] corrige regex primera version DNI --- .../pages/profesional/mpi/scan-documento/scan-documento.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/pages/profesional/mpi/scan-documento/scan-documento.ts b/src/app/pages/profesional/mpi/scan-documento/scan-documento.ts index ba0419ce..7ec018b9 100644 --- a/src/app/pages/profesional/mpi/scan-documento/scan-documento.ts +++ b/src/app/pages/profesional/mpi/scan-documento/scan-documento.ts @@ -32,7 +32,7 @@ export class ScanDocumentoPage { disableSuccessBeep: false, showTorchButton: true, torchOn: true, - prompt: 'Poner el código de barra en la cámara', + prompt: 'Apuntar al código de barra con la cámara', resultDisplayDuration: 500, } @@ -42,7 +42,7 @@ export class ScanDocumentoPage { this.router.navigate(['profesional/registro-paciente'], { queryParams: { datos: JSON.stringify(datos), scan: barcodeData.text } }); } else { - this.toastCtrl.danger('Documento invalido'); + this.toastCtrl.danger('Documento inválido.'); } }, (err) => {