Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AM: permitir scanear documento cuando registro nueva cuenta #154

Merged
merged 3 commits into from
May 27, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ <h4 class="welcome-subtitle"></h4>
</section>

<div class="subtitulo">
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.<br>
Si preferís, podés registrarte
<ion-text (click)="scanner()" color="primary"><b><u>escaneando tu DNI</u></b></ion-text> con la cámara
de tu
celular.
</div>
<form (ngSubmit)="registrarUsuario()" [formGroup]="formRegistro">
<div>
Expand Down Expand Up @@ -99,7 +105,7 @@ <h4 class="welcome-subtitle"></h4>
<hr>
</ion-text>
</div>
<div class="ion-justify-content-center">
<div class="ion-justify-content-center" *ngIf="!scanValido">
<re-captcha formControlName="recaptcha" siteKey="6Lc5nUsaAAAAALJ15OtJMKpdW9XSEOl13A_3Hx6i">
</re-captcha>
</div>
Expand All @@ -114,7 +120,10 @@ <h4 class="welcome-subtitle"></h4>
href="mailto:info@andes.gob.ar">info@andes.gob.ar </a>
</ion-text>
</ion-item>

<button class="md rounded block info" type="button" (click)="cleanScan()" [disabled]="loading"
*ngIf="scanValido">
Limpiar scan
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Además del texto, me pregunto si hace falta este botón... quizá hay algo que no estoy viendo? 👁️ 👁️

Suggested change
Limpiar scan
Limpiar formulario

</button>
<button class="md rounded block danger" type="button" (click)="cancel()" [disabled]="loading">
Volver
</button>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand All @@ -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 {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;

}



}
4 changes: 3 additions & 1 deletion src/app/pages/login/login.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: [
Expand All @@ -34,7 +35,8 @@ import { PacienteProvider } from 'src/providers/paciente';
],
providers: [
DisclaimersProvider,
PacienteProvider
PacienteProvider,
ScanParser
],

})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}

Expand All @@ -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) => {
Expand Down
23 changes: 14 additions & 9 deletions src/providers/scan-parser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,31 @@ export interface DocumentoEscaneado {
grupoNombre: number;
grupoSexo: number;
grupoFechaNacimiento: number;
grupoTramite: number;
}

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
grupoFechaNacimiento: 4,
grupoTramite: 7
},
// 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
Expand All @@ -39,7 +42,8 @@ export const DocumentoEscaneados: DocumentoEscaneado[] = [
grupoApellido: 1,
grupoNombre: 2,
grupoSexo: 0,
grupoFechaNacimiento: 0
grupoFechaNacimiento: 0,
grupoTramite: null
}
];

Expand Down Expand Up @@ -83,6 +87,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
Expand Down