diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index d64f0fe2..cb0f6f16 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -18,6 +18,7 @@ import { ScrollComponent } from './components/base/plex-scroll.component';
// Servicios
import { AgendaService } from './services/agenda.service';
+import { ValidacionService } from './services/validacion.service';
import { CambioDniService } from './services/cambioDni.service';
import { PaisService } from './services/pais.service';
import { ProvinciaService } from './services/provincia.service';
@@ -210,7 +211,8 @@ import { FiltrosRenovacionComponent } from './components/profesionales/filtros-r
ListadoTurnosPdfComponent,
ZonaSanitariaService,
DriveService,
- PdfService
+ PdfService,
+ ValidacionService
],
bootstrap: [AppComponent]
})
diff --git a/src/app/components/profesionales/header-profesional.html b/src/app/components/profesionales/header-profesional.html
index 0614704d..a871eb1d 100644
--- a/src/app/components/profesionales/header-profesional.html
+++ b/src/app/components/profesionales/header-profesional.html
@@ -14,6 +14,10 @@
No tiene supervisor
+
+ {{profesional.validadoRenaper ? "VALIDADO":"NO VALIDADO"}}
+
+
editar
Deshabilitar
diff --git a/src/app/components/profesionales/listar-profesionales-detalle.html b/src/app/components/profesionales/listar-profesionales-detalle.html
index 1b583176..bb148439 100644
--- a/src/app/components/profesionales/listar-profesionales-detalle.html
+++ b/src/app/components/profesionales/listar-profesionales-detalle.html
@@ -8,13 +8,15 @@
{{
profesional.profesionalMatriculado?'MATRICULADO':'NO MATRICULADO' }}
+
+ {{profesional.validadoRenaper ? 'VALIDADO':'NO VALIDADO' }}
{{ profesional.apellido + ', '+ profesional.nombre}}
{{ profesional.documento }}
-
+
diff --git a/src/app/components/profesionales/profesional.component.ts b/src/app/components/profesionales/profesional.component.ts
index 01aa1795..baa83638 100644
--- a/src/app/components/profesionales/profesional.component.ts
+++ b/src/app/components/profesionales/profesional.component.ts
@@ -17,8 +17,9 @@ import { Auth } from '@andes/auth';
import { ActivatedRoute, Router } from '@angular/router';
import { TurnoService } from '../../services/turno.service';
import { catchError, map, switchMap } from 'rxjs/operators';
-import { of, Observable } from 'rxjs';
+import { of, Observable, forkJoin } from 'rxjs';
import * as moment from 'moment';
+import { ValidacionService } from './../../services/validacion.service';
@Component({
selector: 'app-profesional',
@@ -56,6 +57,7 @@ export class ProfesionalComponent implements OnInit {
@Input() public profesional: IProfesional = {
id: null,
habilitado: true,
+ validadoRenaper: false,
nombre: null,
apellido: null,
tipoDocumento: null,
@@ -167,7 +169,8 @@ export class ProfesionalComponent implements OnInit {
public auth: Auth,
private router: Router,
private route: ActivatedRoute,
- private location: Location
+ private location: Location,
+ private validacionService: ValidacionService
) { }
ngOnInit() {
@@ -305,18 +308,33 @@ export class ProfesionalComponent implements OnInit {
}
return null;
}),
+ switchMap(candidato => {
+ const profValid = this.validacionService.post({ documento: this.profesional.documento, sexo: this.profesional.sexo });
+ return forkJoin([profValid, of(candidato)]);
+ }),
switchMap(responseActualizar => {
- if (responseActualizar !== null) {
- // hubo match
- if (responseActualizar) {
- // actualizar candidato
- return this._profesionalService.patchProfesional(this.profesional.id, this.profesional);
+ // Verificamos si esta validado por renaper. En caso de ser extranjero se registra sin problemas.
+ if (this.profesional.nacionalidad.nombre !== 'Argentina' || !responseActualizar[0].error || responseActualizar[0].menssage) {
+ // Si el profesional es extranjero entonces no puede ser validado por renaper.
+ if (this.profesional.nacionalidad.nombre === 'Argentina') {
+ this.profesional.validadoRenaper = true;
+ }
+ if (responseActualizar[1] !== null) {
+ // hubo match
+ if (responseActualizar[1]) {
+ // actualizar candidato
+ return this._profesionalService.patchProfesional(this.profesional.id, this.profesional);
+ }
+ this.profesional.id = undefined;
}
- this.profesional.id = undefined;
- return of(null); // no actualiza
+ // no hubo match
+ this.profesional.validadoRenaper = true;
+ return this._profesionalService.saveProfesional({ profesional: this.profesional });
+ } else { // No existe profesional con ese dni y sexo
+ this.plex.info('warning', 'Revise los datos ingresados.', 'Profesional no encontrado en renaper.');
+ this.deshabilitarBoton = false;
}
- // no hubo match
- return this._profesionalService.saveProfesional({ profesional: this.profesional });
+ return of(null);
}),
switchMap(profesionalSaved => {
if (!profesionalSaved) {
@@ -482,13 +500,32 @@ export class ProfesionalComponent implements OnInit {
elem.tipo = ((typeof elem.tipo === 'string') ? elem.tipo : (Object(elem.tipo).id));
return elem;
});
- this._profesionalService.putProfesional(this.profesional)
- .subscribe(resp => {
+
+ this.validacionService.post({
+ documento: this.profesional.documento,
+ sexo: this.profesional.sexo
+ }).pipe(
+ switchMap(resultado => {
+ if (resultado.error || resultado.message) {
+ this.plex.info('warning', 'Revise los datos ingresados', 'Profesional no encontrado');
+ return of(null);
+ } else {
+ this.profesional.validadoRenaper = true;
+ return this._profesionalService.putProfesional(this.profesional);
+ }
+ }),
+ catchError(() => {
+ this.plex.info('danger', 'Error durante la validación');
+ return of(null);
+ })
+ ).subscribe(resp => {
+ if (resp) {
this.profesional = resp;
- this.plex.toast('success', 'Se modificó con éxito!', 'informacion', 1000);
this.editado.emit(true);
- });
- this.volverProfesional();
+ this.plex.toast('success', 'Se modificó con éxito!', 'informacion', 1000);
+ this.volverProfesional();
+ }
+ });
} else {
this.plex.toast('danger', 'Falta completar los campos requeridos', 'informacion', 1000);
}
diff --git a/src/app/components/turnos/solicitar-turno-renovacion.component.ts b/src/app/components/turnos/solicitar-turno-renovacion.component.ts
index e61f9be8..8f0634fc 100644
--- a/src/app/components/turnos/solicitar-turno-renovacion.component.ts
+++ b/src/app/components/turnos/solicitar-turno-renovacion.component.ts
@@ -38,6 +38,7 @@ export class SolicitarTurnoRenovacionComponent implements OnInit {
@Input() public profesional: IProfesional = {
id: null,
habilitado: true,
+ validadoRenaper: false,
nombre: null,
apellido: null,
tipoDocumento: null,
diff --git a/src/app/interfaces/IProfesional.ts b/src/app/interfaces/IProfesional.ts
index 397fb035..7ccd4691 100644
--- a/src/app/interfaces/IProfesional.ts
+++ b/src/app/interfaces/IProfesional.ts
@@ -5,6 +5,7 @@ import {
export interface IProfesional {
id: String;
habilitado: Boolean;
+ validadoRenaper?: Boolean;
nombre: String;
apellido: String;
tipoDocumento: String;
diff --git a/src/app/services/validacion.service.ts b/src/app/services/validacion.service.ts
new file mode 100644
index 00000000..3b935050
--- /dev/null
+++ b/src/app/services/validacion.service.ts
@@ -0,0 +1,16 @@
+import { Injectable } from '@angular/core';
+import { Server } from '@andes/shared';
+import { Observable } from 'rxjs';
+
+
+@Injectable()
+export class ValidacionService {
+
+ private url = '/core-v2/mpi/validacion';
+ constructor(private server: Server) { }
+
+ post(params: any): Observable {
+ return this.server.post(this.url, params, { showError: false });
+ }
+
+}