Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
form group con select
<ng-container *ngIf="state$ | async as state" style="min-width: 860px !important;" id="container_ng_masivo">
<sunedu-modal-container [title]="'Aprobar en lote'"
[loading]="isLoading"
(on-dismiss)="handleClose()"
[msgErrors]="state.error"
(on-ok)="enviarMasivo()"
ok-label="Procesar"
cancelLabel="Cancelar" id="container_masivo">
<div class="row mb-4">
<div class="col-md-12">
Acaba de elegir la opción de recepción masiva, a través de la cual procederá a brindar
conformidad a los documentos presentados por medios virtuales. Para dicho fin, debe
indicar para los registros que correspondan, la vinculación con un Número de
Expediente, así como el Asunto y la Cantidad de Folios (solo para MPV). Para aquellos
registros que no cuenten el Número de Expediente Vinculado, el sistema procederá a
registrar un Número de Expediente
</div>
</div>
<mat-card class="mb-2">
<mat-card-title>
<span class="material-icons">description</span> Detalles
</mat-card-title>
<mat-card-content>
<form [formGroup]="masiveTable">
<table class="table table-border">
<thead class="text-nowrap" style="color: #ffffff;">
<tr>
<th></th>
<th>Remitente</th>
<th>Documento</th>
<th>Exp. Vinculado</th>
<th>Asunto</th>
<th>Folios</th>
<th>Opciones</th>
<th *ngIf="getLocalStorage === 'MAYTOK_DEBUG'">Debug</th>
</tr>
</thead>
<tbody>
<ng-container formArrayName="tableRows" *ngFor="let group of getFormControls.controls ; let i=index">
<tr [formGroupName]="i">
<td>
{{i + 1}}
</td>
<td>
<div>
{{group.get('remitente').value}}
</div>
<div>
{{group.get('codigoMicroservicio').value}}
</div>
</td>
<td>
{{group.get('documento').value}}
</td>
<td>
<mat-form-field>
<input matInput type="text" formControlName="numeroExpediente" maxlength="40" (keydown.enter)="findEVE($event, group.get('id').value, i)" [id]="'expediente____' + group.get('id').value" on-keyup="group.get('errorsExpediente').patchValue('')">
<mat-hint align="start">{{group.get('errorsExpediente').value}}</mat-hint>
<mat-hint align="end">{{group.get('numeroExpediente').value?.length || 0}}/40</mat-hint>
</mat-form-field>
<span *ngIf="!isNotNullOrEmpty(group.get('numeroExpediente').value)">
<sunedu-base-button variant="icon" color="primary" icon="search" [tooltip]="'Buscar'" (on-click)="findEVE($event, group.get('id').value, i)"></sunedu-base-button>
<sunedu-base-button variant="icon" color="primary" icon="aspect_ratio" [tooltip]="'Búsqueda avanzada'" (on-click)="openModalChiquito($event, group.get('numeroExpediente').value, i, group.get('id').value)"></sunedu-base-button>
</span>
<span *ngIf="isNotNullOrEmpty(group.get('numeroExpediente').value)">
<sunedu-base-button variant="icon" color="primary" icon="zoom_in" (on-click)="verDetalle(group.get('numeroExpediente').value)"></sunedu-base-button>
<sunedu-base-button variant="icon" color="primary" icon="delete" (on-click)="eliminarExpediente(group.get('id').value, i)"></sunedu-base-button>
</span>
</td>
<td>
<mat-form-field *ngIf="group.get('codigoMicroservicio').value === 'MPV'">
<input matInput type="text" formControlName="asunto" maxlength="2000" on-keyup="group.get('errors').patchValue('')">
<mat-hint align="start" style="color:red;">{{group.get('errors').value}}</mat-hint>
<mat-hint align="end">{{group.get('asunto').value?.length || 0}}/2000</mat-hint>
</mat-form-field>
<div *ngIf="group.get('codigoMicroservicio').value === 'PIDE'">
{{group.get('asunto').value}}
</div>
</td>
<td>
<mat-form-field *ngIf="group.get('codigoMicroservicio').value === 'MPV'">
<input matInput type="text" formControlName="folios" maxlength="5">
<mat-hint align="end">{{group.get('folios').value?.length || 0}}/5</mat-hint>
</mat-form-field>
<div *ngIf="group.get('codigoMicroservicio').value === 'PIDE'">
{{group.get('folios').value}}
</div>
</td>
<td>
<mat-select [ngModel]="group.get('opcionSeleccionada')" (change)="cambio($event)">
<mat-option *ngFor="let option of group.get('opciones').value ;let i = idx" [value]="option.value">
{{option.viewValue}}
</mat-option>
</mat-select>
</td>
<td *ngIf="getLocalStorage === 'MAYTOK_DEBUG'">
{{stringify(group.value)}} - {{stringify(group.get('opciones').value)}}
</td>
</tr>
</ng-container>
</tbody>
</table>
</form>
</mat-card-content>
</mat-card>
</sunedu-modal-container>
</ng-container>
import {Component, Inject, OnInit} from '@angular/core';
import {GestionBandejaEvaluacionStore} from '../../store/gestion-bandeja-evaluacion.store';
import {Observable, throwError} from 'rxjs';
import {DetalleEscrito} from '../../store/gestion-bandeja-evaluacion.store.model';
import {
AlertService, DialogService,
FormModel,
ToastService
} from '@sunedu/shared';
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';
import {MESSAGES} from '../../../../_utils/messages';
import {catchError, map} from 'rxjs/operators';
import {DetalleEscritoBandejaEvaluacionComponent} from '../detalle-escrito-bandeja-evaluacion/detalle-escrito-bandeja-evaluacion.component';
import findIndex from 'lodash/findIndex';
import {IAlertConfig} from '@sunedu/shared/lib/services/alert.service';
import Utils from '../../../../utils';
import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';
import {AppStore} from '@app/core';
import {BandejaEvaluacionService} from '../../../../services/bandeja-evaluacion.service';
import find from 'lodash/find';
import {FormBuscarExpedienteRecepcionChiquitoComponent} from '../form-buscar-expediente-recepcion/form-buscar-expediente-recepcion.component';
import {GestionRecepcionStore} from '../../../../../recepcion/pages/gestion-recepcion/store/gestion-recepcion.store';
import {FormConsultaRecepcionComponent} from '../../../../../recepcion/pages/gestion-recepcion/components/form-consulta-recepcion/form-consulta-recepcion.component';
@Component({
selector: 'app-modal-recibir-masivo',
templateUrl: './modal-recibir-masivo.component.html',
styleUrls: ['./modal-recibir-masivo.component.scss']
})
export class ModalRecibirMasivoComponent implements OnInit {
displayedColumns: string[] = ['descripcion', 'documento', 'asunto', 'folios', 'acciones', 'trash'];
dataSource = [];
gestionBandejaEvaluacionStore: GestionBandejaEvaluacionStore;
state$: Observable<DetalleEscrito>;
form: FormModel<any>;
expedientesSeleccionados = [];
bufferExpedientes = {};
skeleton = Utils.getSkeleton();
masiveTable: FormGroup;
control: FormArray;
isNotNullOrEmpty = Utils.isNotNullOrEmpty;
gestionRecepcionStore: GestionRecepcionStore;
isLoading = false;
cantidadMPV = 0;
stringify = JSON.stringify;
getLocalStorage = localStorage.getItem('MAYTOK_DEBUG');
opciones = [
{
value: '8',
viewValue: 'Seleccione una opción'
},
{
value: '1',
viewValue: 'Recibir'
},
{
value: '2',
viewValue: 'Rechazar'
}
];
constructor(
public dialogRef: MatDialogRef<DetalleEscritoBandejaEvaluacionComponent>,
@Inject(MAT_DIALOG_DATA) public data: any,
private toastService: ToastService,
private alertService: AlertService,
private fb: FormBuilder,
private appStore: AppStore,
private laserFicheService: BandejaEvaluacionService,
private dialogService: DialogService,
) {
}
ngOnInit() {
this.state$ = this.gestionBandejaEvaluacionStore.select(s => s.formRegistro);
this.masiveTable = this.fb.group({
tableRows: this.fb.array([])
});
this.buildForm();
}
initiateForm(expe): FormGroup {
console.log('initiateForm(expe): FormGroup {', expe);
const asunto = expe.codigoMicroservicio === 'PIDE' ? expe.asunto : '';
// tslint:disable-next-line:max-line-length
const nombreTipoDocumento = !Utils.isNotNullOrEmpty(expe.nombreTipoDocumento) || expe.nombreTipoDocumento === 'null' ? '' : expe.nombreTipoDocumento;
// tslint:disable-next-line:max-line-length
const numeroExpediente = !Utils.isNotNullOrEmpty(expe.numeroExpediente) || expe.numeroExpediente === 'null' ? null : expe.numeroExpediente;
return this.fb.group({
id: [`${expe.idDocumentoExterna}`],
remitente: [`${expe.nombreEntidadEmision}`],
codigoMicroservicio: [`${expe.codigoMicroservicio}`],
documento: [`${nombreTipoDocumento}${expe.numeroDocumento}`],
expediente: [''],
idExpediente: [''],
asunto: [asunto, Validators.required],
folios: [expe.numeroFolio, [Validators.required, Validators.maxLength(5)]],
detalleExpediente: [''],
numeroExpediente: [numeroExpediente],
numeroDocumentoIdentidadRemitente: [expe.numeroDocumentoIdentidadRemitente],
rucEntidadRemitente: [expe.rucEntidadRemitente],
errors: [''],
errorsExpediente: [''],
idDocumentoExterna: [expe.idDocumentoExterna],
rucEntidadEscuela: [expe.rucEntidadEscuela],
numeroDocumento: [expe.numeroDocumento],
codigoTipoDocumento: [expe.codigoTipoDocumento],
correoElectronico: [expe.mpvCorreoElectronico],
cuo: [expe.cuo],
opciones: [this.opciones],
opcionSeleccionada: [''],
opcionSeleccionada2: [''],
});
}
cambio(event) {
console.log('cambio(event)', event);
const control = <FormArray>this.masiveTable.controls['tableRows'];
const form = control.at(event.index);
console.log('form', form);
form.get('opcionSeleccionada').setValue(event.value);
console.log('form.get(opcionSeleccionada)', form.get('opcionSeleccionada'));
}
get getFormControls() {
return this.masiveTable.get('tableRows') as FormArray;
}
addRow(expe) {
console.log('adding row...', expe);
const control = this.masiveTable.get('tableRows') as FormArray;
control.push(this.initiateForm(expe));
}
ngAfterOnInit() {
this.control = this.masiveTable.get('tableRows') as FormArray;
}
eliminarExpediente(idDocumentoExterno, index) {
const tableRows = this.masiveTable.get('tableRows') as FormArray;
tableRows.controls[index].get('numeroExpediente').patchValue(null);
tableRows.controls[index].get('expediente').patchValue('');
tableRows.controls[index].get('idExpediente').patchValue('');
}
async validarExpedientesVinculados() {
console.log('validando expedientes vinculados...');
const tableRows = this.masiveTable.get('tableRows') as FormArray;
let ok = true;
// Validar Asunto
for (const item of tableRows.controls) {
if (!Utils.isNotNullOrEmpty(item.get('asunto').value)) {
item.get('errors').patchValue('El asunto no debe estar vacío');
ok = false;
}
}
// validamos los remitentes
for (const item of tableRows.controls) {
const idDocumentoExterno = item.get('id').value;
const numeroExpediente = (<HTMLInputElement>document.getElementById(`expediente____${idDocumentoExterno}`)).value;
if (Utils.isNotNullOrEmpty(numeroExpediente)) {
const expedientesResponse: any = await this.laserFicheService.syncConsultarExpediente(numeroExpediente);
if (expedientesResponse.length > 0) {
const expedienteSGD = expedientesResponse[0];
const numeroDocumentoIdentidadSGD = expedienteSGD.numeroDocumento;
const rucEntidadRemitente = item.get('rucEntidadRemitente').value;
const numeroDocumentoIdentidadMPV = Utils.isNotNullOrEmpty(rucEntidadRemitente) ? rucEntidadRemitente : item.get('numeroDocumentoIdentidadRemitente').value;
if (numeroDocumentoIdentidadSGD !== numeroDocumentoIdentidadMPV) {
item.get('errorsExpediente').patchValue('Remit. no coincide');
ok = false;
}
// Si no hay errores, asignamos el expediente al formcontrol
item.get('numeroExpediente').patchValue(expedienteSGD.numeroExpediente);
item.get('idExpediente').patchValue(expedienteSGD.id);
} else {
item.get('errorsExpediente').patchValue('Exp. no existe');
ok = false;
}
}
}
return ok;
}
openModalChiquito(event, numeroExpediente, idx, idDocumentoExterna) {
event.stopPropagation();
const dialog = this.dialogService.openMD(FormBuscarExpedienteRecepcionChiquitoComponent, {
data: {
numeroExpediente: numeroExpediente,
idx: idx
}
});
dialog.componentInstance.gestionBandejaEvaluacionStore = this.gestionBandejaEvaluacionStore;
dialog.componentInstance.gestionRecepcionStore = this.gestionRecepcionStore;
dialog.afterClosed().subscribe(() => {
// Obtenemos el expediente seleccionado
const numeroExpedienteSeleccionado = this.gestionBandejaEvaluacionStore.formBuscarExpedienteChiquito.getExpedienteSeleccionado();
if (!Utils.isNotNullOrEmpty(numeroExpedienteSeleccionado) || parseInt(`${numeroExpedienteSeleccionado}`, 10) === 0) {
return;
}
const tableRows = this.masiveTable.get('tableRows') as FormArray;
tableRows.controls[idx].get('numeroExpediente').patchValue(numeroExpedienteSeleccionado);
this.findEVE(null, idDocumentoExterna, idx);
});
}
findEVE = (event, id, index) => {
let tableRows = this.masiveTable.get('tableRows') as FormArray;
const row = tableRows.controls[index];
this.control = tableRows;
const numeroExpediente = tableRows.controls[index].get('numeroExpediente').value;
this.gestionBandejaEvaluacionStore
.container
.asyncConsultarExpediente(numeroExpediente).subscribe((resp: any[]) => {
console.log('Se recibieron los expedientes: ', resp);
if (resp.length > 0) {
console.log('VALIDANDO REMITENTES...');
console.log('this.expedienteActual.numeroDocumentoIdentidadRemitente...', row.get('numeroDocumentoIdentidadRemitente').value);
console.log('expedienteBuscado.numeroDocumento...', resp[0].numeroDocumento);
let expedienteRemitente = tableRows.controls[index].get('numeroDocumentoIdentidadRemitente').value;
if (Utils.isNotNullOrEmpty(tableRows.controls[index].get('rucEntidadRemitente').value)) {
expedienteRemitente = tableRows.controls[index].get('rucEntidadRemitente').value;
}
if (expedienteRemitente !== resp[0].numeroDocumento) {
this.toastService.error(MESSAGES.ERROR_REMITENTE_DISTINTO);
tableRows.controls[index].get('numeroExpediente').patchValue('');
tableRows.controls[index].get('idExpediente').patchValue('');
return false;
}
console.log('Buscando el expediente con id ', parseInt(id, 10));
console.log('En los seleccionados ', this.expedientesSeleccionados);
const idx = findIndex(this.expedientesSeleccionados, ['idDocumentoExterna', parseInt(id, 10)]);
if (idx === -1) {
tableRows.controls[index].get('numeroExpediente').patchValue('');
tableRows.controls[index].get('idExpediente').patchValue('');
this.toastService.success(MESSAGES.EMPTY_BUSCAR_EXPEDIENTE);
return false; // a
}
tableRows = this.masiveTable.get('tableRows') as FormArray;
this.expedientesSeleccionados[idx]['numeroExpediente'] = tableRows.controls[index].get('numeroExpediente').value;
this.expedientesSeleccionados[idx]['expedienteARelacionar'] = resp[0].id;
tableRows.controls[index].get('idExpediente').patchValue(resp[0].id);
tableRows.controls[index].get('numeroExpediente').patchValue(resp[0].numeroExpediente);
this.toastService.success(MESSAGES.SUCCESS_BUSCAR_EXPEDIENTE);
} else {
this.toastService.warning(MESSAGES.EMPTY_BUSCAR_EXPEDIENTE);
}
return resp;
}, err => {
this.toastService.success(MESSAGES.ERROR_OBTENER_TIPO_DOCUMENTO);
return throwError(err);
});
}
resetEVE = (event) => {
console.log(event);
const idExpedienteExterna = event.target.id.replace('modal__masivo__exp__trash__', '');
document.getElementById(`modal__masivo__exp__trash__${idExpedienteExterna}`).style.display = 'none';
document.getElementById(`exp${idExpedienteExterna}`).setAttribute('disabled', 'false');
// tslint:disable-next-line:radix
const idx = findIndex(this.expedientesSeleccionados, ['idDocumentoExterna', parseInt(idExpedienteExterna)]);
if (idx > -1) {
this.expedientesSeleccionados[idx].expedienteARelacionar = 0;
}
}
async createExpedienteForDerivacion(expedienteActual, formValue, mp) {
console.log('CREANDO EXPEDIENTE PARA DERIVACIÓN...');
if (expedienteActual.codigoMicroservicio !== 'MPV') {
return false;
}
const codigoUniversidad = mp.codigoEntidad === '' || mp.codigoEntidad === null ? null : mp.codigoEntidad;
const isUniversidad = !(mp.codigoEntidad === '' || mp.codigoEntidad === null);
let nombreCompleto = `${mp.primerApellido} ${mp.segundoApellido}, ${mp.nombres}`;
let nombrecito = mp.nombres;
let tipoPersona = 1; // Natural por defecto
const isEmpresa = mp.rucEntidadEmpresa !== null && mp.rucEntidadEmpresa !== '';
let nombreRemitente = nombreCompleto;
let apellidoPaterno = mp.primerApellido;
let apellidoMaterno = mp.segundoApellido;
let documentoAutorExternoIdTipoDocumento = this.translateIdTipoPersona(mp.idxTipoDocumento);
let razonSocial = null;
let documentoRemitente = mp.numeroDocumento;
// tslint:disable-next-line:max-line-length
const codigoTipoDocumento = expedienteActual.codigoMicroservicio === 'MPV' ? this.gestionBandejaEvaluacionStore.container.translateTipoDocumentoAction(expedienteActual.codigoTipoDocumento) : expedienteActual.codigoTipoDocumento;
if (isUniversidad === true || isEmpresa === true) {
nombreRemitente = 'null null, null';
apellidoPaterno = '';
apellidoMaterno = '';
documentoAutorExternoIdTipoDocumento = 2;
razonSocial = mp.nombreEntidad;
documentoRemitente = mp.rucEntidadEscuela;
}
if (isUniversidad === true) {
nombreCompleto = mp.nombreEntidad;
nombrecito = mp.nombreEntidad;
tipoPersona = 2;
documentoRemitente = expedienteActual.rucEntidadEscuela;
console.log('ES UNA UNIVERSIDAD');
}
if (isEmpresa === true) {
tipoPersona = 2;
documentoRemitente = mp.rucEntidadEmpresa;
console.log('Es una empresa');
}
console.log('------------------------');
console.log('documentoAutorExternoIdTipoDocumento ', documentoAutorExternoIdTipoDocumento);
console.log('------------------------');
// Procesamos los archivos
const arrA = [];
const listaArchivo = mp.listaArchivo;
for (const file of listaArchivo) {
let retries = 0;
let success = false;
try {
while (retries <= 5 || success === false) {
const idLaserfiche: any = await this.laserFicheService.transferFileFTPLaserFiche(file.ruta, file.nombre, file.esPrincipal);
const confidencial = file.confidencial === false ? 'NO' : 'SI';
const tipo = file.esPrincipal === true ? 'Principal' : 'Anexo';
const idTipoArchivo = file.esPrincipal === true ? 1 : 2;
arrA.push({
nro: file.orden,
codigoArchivo: idLaserfiche.id,
confidencial: confidencial,
esConfidencial: file.confidencial,
descripcion: '',
extension: file.extension,
idTipoArchivo: idTipoArchivo,
nombre: file.nombre,
nombreAnexo: '',
nombreArchivo: file.nombre,
nombrePesoMB: Utils.formatBytes(file.pesoBytes),
peso: file.pesoBytes,
'tamaño': file.pesoBytes,
tipo: tipo
});
retries = 100;
success = true;
}
} catch (e) {
console.log('Error al subir archivo al laserfiche');
console.log(e);
retries++;
}
}
const skue = {
esUniversidadEscuela: isUniversidad,
idSistemaExterno: 5054,
idExpediente: formValue.idExpediente,
descripcionExpediente: 'Recibido desde MPV',
asunto: formValue.asunto,
idTipoDocumento: codigoTipoDocumento,
numeroDocumento: expedienteActual.numeroDocumento,
folios: formValue.folios,
documentoPersona: mp.numeroDocumento,
nombreCompletoPersona: `${mp.primerApellido} ${mp.segundoApellido}, ${mp.nombres}`,
nombreRemitente: nombreRemitente,
nombreCompletoRemitente: mp.razonSocialEntidadEmpresa || nombreCompleto,
documentoRemitente: documentoRemitente,
correoElectronicoRemitente: mp.correoElectronico,
numeroCelularRemitente: mp.telefonoMovil,
documentoArchivos: arrA,
razonSocial: razonSocial,
documentoAutorExterno: {
...this.skeleton.documentoAutorExterno,
esUniversidadEscuela: isUniversidad,
nombreCompleto: nombreCompleto,
nombre: mp.razonSocialEntidadEmpresa || nombrecito,
apellidoPaterno: apellidoPaterno,
apellidoMaterno: apellidoMaterno,
idTipoDocumento: documentoAutorExternoIdTipoDocumento,
numeroDocumento: documentoRemitente,
idUbigeo: mp.ubigeo,
domicilio: mp.direccion,
referencia: mp.referencia,
correoElectronico: mp.correoElectronico,
telefono: mp.telefonoMovil,
observacion: 'Generado desde MPV',
idTipoDocumentoAdicional: mp.idxTipoDocumento,
numeroDocumentoAdicional: mp.numeroDocumento,
nombreCompletoAdicional: `${mp.primerApellido} ${mp.segundoApellido}, ${mp.nombres}`,
nombreAdicional: mp.nombres,
apellidoPaternoAdicional: mp.primerApellido,
apellidoMaternoAdicional: mp.segundoApellido,
razonSocial: (isUniversidad === true) ? nombreCompleto : mp.razonSocialEntidadEmpresa,
codigoUniversidad: codigoUniversidad,
flgTipoPersona: tipoPersona,
nombreUniversidadEscuela: (isUniversidad ? nombreCompleto : null)
},
// tslint:disable-next-line:max-line-length
dependenciaDestinoReferencial: Utils.getSedeAbreviatura(mp.idxDependencia, this.gestionBandejaEvaluacionStore.container.getSedes(), find),
idDependenciaDestinoReferencial: mp.idxDependencia,
idDocumentoExterno: mp.idEscrito
};
await this.laserFicheService.syncEnviarARegistroYDerivacion(skue);
}
buildForm = () => {
this.expedientesSeleccionados = this.data;
for (const el of this.expedientesSeleccionados) {
this.bufferExpedientes[`k${el.idDocumentoExterna}`] = null;
this.addRow(el);
}
console.log('En masivo, expedientes seleccionados: ', this.expedientesSeleccionados);
}
verDetalle(numeroExpediente) {
console.log('-----------------------------------------------');
console.log('OBTENIENDO EL DETALLE DEL EXPEDIENTE CON ITEM ', numeroExpediente);
console.log('-----------------------------------------------');
return this.gestionBandejaEvaluacionStore
.container
.asyncConsultarExpediente(numeroExpediente).subscribe((res: any[]) => {
console.log('asyncConsultarExpediente', res);
if (res.length === 0) {
this.toastService.warning(MESSAGES.EMPTY_BUSCAR_EXPEDIENTE);
return false;
}
const idDocumento = res[0].idDocumento;
this.gestionRecepcionStore.modalConsulta.setConsultar();
const dialogRef = this.dialogService.openMD(FormConsultaRecepcionComponent, {
data: {
id: idDocumento
}
});
dialogRef.componentInstance.gestionRecepcionStore = this.gestionRecepcionStore;
dialogRef.afterClosed().subscribe(() => {
this.gestionRecepcionStore.modalConsulta.reset();
});
return res;
}, err => {
this.toastService.success(MESSAGES.ERROR_OBTENER_TIPO_DOCUMENTO);
return throwError(err);
});
}
async enviarMasivo() {
this.isLoading = true;
if (await this.validarExpedientesVinculados() === false) {
console.log('Hay errores en el formulario');
this.toastService.error(MESSAGES.ERROR_MASIVO_RECHECK);
this.isLoading = false;
return false;
}
const tableRows = this.masiveTable.get('tableRows') as FormArray;
const data = [];
console.log('enviarMasivo = () => { ', this.expedientesSeleccionados);
// Doble row loop
for (const item of tableRows.controls) {
const codigoMicroservicio = item.get('codigoMicroservicio').value;
const idDocumentoExterna = item.get('idDocumentoExterna').value;
const numeroExpediente = item.get('numeroExpediente').value;
const idExpediente = item.get('idExpediente').value;
if (codigoMicroservicio === 'PIDE') {
data.push({
codigoMicroservicio: codigoMicroservicio,
idDocumentoExterna: Utils.isNotNullOrEmpty(idDocumentoExterna) ? idDocumentoExterna : 0,
idExpediente: Utils.isNotNullOrEmpty(numeroExpediente) ? idExpediente : 0,
comentario: '',
usuario: this.appStore.session.getUser().fullName
});
}
}
try {
await this.laserFicheService.syncRecibirDocumentosMasivo(data);
} catch (e) {
console.log('Error enviarMasivo PIDE', e);
}
for (const item of tableRows.controls) {
const formValue: any = {};
const codigoMicroservicio = item.get('codigoMicroservicio').value;
const idDocumentoExterna = item.get('idDocumentoExterna').value;
const idExpediente = item.get('idExpediente').value;
const numeroExpediente = item.get('numeroExpediente').value;
const codigoTipoDocumento = item.get('codigoTipoDocumento').value;
const rucEntidadEscuela = item.get('rucEntidadEscuela').value;
const folios = item.get('folios').value;
const remitente = item.get('remitente').value;
const correoElectronico = item.get('correoElectronico').value;
const cuo = item.get('cuo').value;
const asunto = item.get('asunto').value;
const numeroDocumento = item.get('numeroDocumento').value;
if (codigoMicroservicio === 'MPV') {
formValue.fechaRegistro = Utils.currentDateLocaleIsoString();
formValue.usuarioRegistro = this.appStore.session.getUser().fullName;
formValue.idDocumentoExterna = idDocumentoExterna;
formValue.numeroExpediente = numeroExpediente;
formValue.idExpediente = idExpediente;
formValue.rucEntidadEscuela = rucEntidadEscuela;
formValue.codigoMicroservicio = 'MPV';
formValue.codigoTipoDocumento = codigoTipoDocumento;
formValue.numeroDocumento = numeroDocumento;
// Si NO tiene expediente, generamos uno
if (!Utils.isNotNullOrEmpty(numeroExpediente)) {
const nuevoExpediente: any = await this.laserFicheService.syncGenerarExpedienteExterno();
formValue.idExpediente = nuevoExpediente.dataObject.id;
formValue.numeroExpediente = nuevoExpediente.dataObject.numeroExpediente;
}
formValue.idEstadoEvaluacion = 4;
formValue.observacion = '';
formValue.idxUsuario = 0;
formValue.folios = folios;
formValue.codigoEstadoEvaluacion = null;
formValue.nombreEntidadEmision = remitente;
formValue.mpvCorreoElectronico = correoElectronico;
formValue.cuo = cuo;
formValue.asunto = asunto;
// Obtenemos datos de MPV necesarios para el registro en SGD
const dataMPV = await this.laserFicheService.syncDetalleExpedienteMPV(idDocumentoExterna);
// Registramos el documento en SGD
try {
await this.createExpedienteForDerivacion(formValue, formValue, dataMPV);
} catch (e) {
console.log('Error al registrar el documento en SGD', e);
}
try {
await this.laserFicheService.syncRecibirExpediente(formValue, 'MPV');
} catch (e) {
console.log('Error al registrar el documento en MPV', e);
}
// Enviamos la notificación por correo
try {
this.enviarNotificacionRecibido(formValue.numeroExpediente, formValue, dataMPV);
} catch (e) {
console.log('Error al enviar el correo', e);
}
}
}
this.isLoading = false;
this.handleClose();
}
handleClose = () => {
this.dialogRef.close();
this.gestionBandejaEvaluacionStore.container.setExpedientesParaMasivo([]);
this.expedientesSeleccionados = [];
this.bufferExpedientes = [];
}
enviarNotificacionRecibido = (expedienteGenerado, expedienteActual, datosMPV) => {
console.log('Entrando a enviarNotificacionRecibido');
const usuario = expedienteActual.nombreEntidadEmision;
const correo = expedienteActual.mpvCorreoElectronico;
const cuo = expedienteActual.cuo;
let urlDescarga = find(datosMPV.listaArchivo, ['esPrincipal', true]) || '';
urlDescarga = urlDescarga.ruta;
const getOrCreated = 'get'; // this.hasExpedienteVinculado ? 'get' : 'created';
console.log(expedienteActual);
return this.gestionBandejaEvaluacionStore.container
// tslint:disable-next-line:max-line-length
.asyncEnviarNotificacionRecibido({usuario: usuario, cuo: cuo, expediente: expedienteGenerado || '', email: correo, UrlDescarga: urlDescarga, getOrCreated: getOrCreated})
.pipe(map(resp => {
return resp;
}), catchError(err => {
return throwError(err);
})).subscribe();
}
confirmForm = () => {
const config = new Configs();
console.log(config, typeof (config.config));
return this.alertService.open(MESSAGES.CHECK_DATA_RECIBIR_DOCUMENTO_MASIVO, null, {
}).then(() => {
this.dialogRef.close();
});
}
/*
** Traduce el tipo de persona desde MPV hacia MPP - TODO - Proponer usar identicos ID
*/
translateIdTipoPersona(idTipoPersona) {
console.log('------------------------');
console.log('TRADUCIENDO ID TIPO PERSONA ', idTipoPersona);
console.log('------------------------');
switch (parseInt(idTipoPersona, 10)) {
case 1: // DNI
return 1;
case 4: // CE
return 3;
case 7: // PASSPORT
return 4;
case 99: // OTROS
return 5;
}
}
}
class Configs {
config: IAlertConfig = {
confirm: true,
icon: 'error',
okAlertText: 'ASUMAKINA',
onConfirm: () => {
console.log('jajaja');
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment