UNPKG

@infordata-web/portal-common-component-lib

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.

807 lines (780 loc) 437 kB
import { Injectable, ɵɵdefineInjectable, ɵɵinject, ApplicationRef, ChangeDetectorRef, Pipe, Injector, NgModule, EventEmitter, Component, Input, Output, ViewChild, Inject, ViewEncapsulation, Directive, TemplateRef, ViewContainerRef, ComponentFactoryResolver, ElementRef, HostListener } from '@angular/core'; import { AsyncPipe, CommonModule } from '@angular/common'; import { HttpClient, HttpClientModule, HttpHeaders } from '@angular/common/http'; import { Observable, Subject, defer, merge, ReplaySubject, BehaviorSubject, combineLatest, of, Subscription, iif } from 'rxjs'; import { switchMap, tap, shareReplay, map, scan, delay, startWith, pluck, auditTime, concatMap, catchError, filter, debounceTime, withLatestFrom, distinctUntilChanged, take } from 'rxjs/operators'; import { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material/dialog'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import '@angular/localize/init'; import { FormGroup, FormControl, FormGroupDirective, Validators, NgControl, ReactiveFormsModule } from '@angular/forms'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { SelectionModel } from '@angular/cdk/collections'; import { I18NService, I18nLibModule } from 'portal-i18n-lib'; import { MatSelectModule } from '@angular/material/select'; import { NativeDateAdapter, MatNativeDateModule, MatOptionModule, MAT_DATE_LOCALE, MAT_DATE_FORMATS, DateAdapter } from '@angular/material/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatInputModule } from '@angular/material/input'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; import { MatIconModule } from '@angular/material/icon'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatExpansionModule } from '@angular/material/expansion'; import { MatRadioModule } from '@angular/material/radio'; import { MatCheckboxModule } from '@angular/material/checkbox'; import * as moment from 'moment'; import { UtenteDTO } from 'angular-portal-shell-app'; import { MatDatepickerModule } from '@angular/material/datepicker'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { MatListModule } from '@angular/material/list'; import { saveAs } from 'file-saver'; import { NgxJsonViewerModule } from 'ngx-json-viewer'; import { MatSortModule } from '@angular/material/sort'; import { MatTooltipModule } from '@angular/material/tooltip'; import { MomentDateModule, MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter'; import { ibanValidator } from 'ngx-iban'; import { NgxsFormPluginModule } from '@ngxs/form-plugin'; class ConfigurationService { constructor(configurazioneModulo) { this.nameApp = configurazioneModulo.nameApp; this.lingua$ = configurazioneModulo.lingua$; this.servicePaths = configurazioneModulo.servicePaths; this.userProfile = configurazioneModulo.userProfile; this.appPath = configurazioneModulo.appPath; } } ConfigurationService.decorators = [ { type: Injectable } ]; ConfigurationService.ctorParameters = () => [ { type: undefined } ]; class TranslateService { constructor(http, appRef, configurationService) { this.http = http; this.appRef = appRef; this.configurationService = configurationService; this.traduzioniLib$ = new Observable(); this.communicatoreConEsterno$ = new Subject(); this.i18nApiUrl = this.configurationService.servicePaths.get("I18N_MS_API_URL"); console.log('[DAG_I18N_MS_URL]', this.i18nApiUrl); this.traduzioniLib$ = this.configurationService.lingua$.pipe(switchMap(language => this.getBundleTraduzioni$(language)), tap(_ => setTimeout(() => this.appRef.tick(), 0)), shareReplay()); } getTraduzione$(codice) { return defer(() => this.traduzioniLib$.pipe(map(bundle => bundle.get(codice) || codice))); } getBundleTraduzioni$(language) { const url = this.i18nApiUrl + '/v1/labels/' + this.configurationService.nameApp + '/' + language; return this.http.get(url).pipe(map(this.reduceLabels), tap(_ => this.communicatoreConEsterno$.next(true))); } reduceLabels(labels) { const reduced = labels.reduce((acc, label) => { return acc.set(label["codiceLabel"], label["label"]); }, new Map()); return reduced; } } TranslateService.ɵprov = ɵɵdefineInjectable({ factory: function TranslateService_Factory() { return new TranslateService(ɵɵinject(HttpClient), ɵɵinject(ApplicationRef), ɵɵinject(ConfigurationService)); }, token: TranslateService, providedIn: "root" }); TranslateService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; TranslateService.ctorParameters = () => [ { type: HttpClient }, { type: ApplicationRef }, { type: ConfigurationService } ]; class TranslatePipe { constructor(translate, injector) { this.translate = translate; this.injector = injector; this.asyncPipe = new AsyncPipe(injector.get(ChangeDetectorRef)); } transform(key) { return this.asyncPipe.transform(this.translate.getTraduzione$(key)); } ngOnDestroy() { this.asyncPipe.ngOnDestroy(); } } TranslatePipe.decorators = [ { type: Pipe, args: [{ name: 'traduzione' },] } ]; TranslatePipe.ctorParameters = () => [ { type: TranslateService }, { type: Injector } ]; class TranslateModule { constructor() { } } TranslateModule.decorators = [ { type: NgModule, args: [{ declarations: [TranslatePipe], imports: [ HttpClientModule, CommonModule, MatDialogModule, BrowserModule, BrowserAnimationsModule, ], providers: [TranslatePipe], exports: [TranslatePipe] },] } ]; TranslateModule.ctorParameters = () => []; class ComponentOutputStatus { static of(status, output) { const componentStatus = new ComponentOutputStatus(); componentStatus.status = status; componentStatus.output = output; return componentStatus; } ifValid(effect) { if (status) { effect(this.output); } } each(effect) { effect(this.output); } mapValue(mapper) { return ComponentOutputStatus.of(this.status, mapper(this.output)); } } class ContattoDTO { } class MessageService { constructor() { this.defaultMessage = "required"; this.messages = { maxlength: "validation-maxlength", requiredInfoDecreto: "validation-requiredInfoDecreto", requiredMail: "validation-requiredMail", cfInvalidoFormalmente: "validation-cfInvalidoFormalmente", invalidCF: "validation-invalidCF", nSentenza: "validation-nSentenza", required: "validation-required", email: "validation-email", tel: "validation-tel", iban: "validation-iban", partitaIVAInvalida: "validation-partitaIVAInvalida", partitaIVAMaxLen2: "validation-partitaIVAMaxLen2", money: "validation-money", invalidName: "validation-invalidName", invalidDate: "validation-invalidDate", pattern: "validation-pattern", invalidDateFormat: "validation-invalidDateFormat", requiredDefinizione: "validation-requiredDefinizione", validationServiceFailed: "validation-validationServiceFailed", cfValidationPG: "validation-cfValidationPG", cfDifferentRichiedente: "validation-cfDifferentRichiedente", requiredDomicilio: "validation-requiredDomicilio", requiredSede: "validation-requiredSede" }; } produceMessage(errorType, control) { if (Object.keys(control.errors)[0]) { return this.getMessage(Object.keys(control.errors)[0]); } else { return this.getMessage(this.defaultMessage); } } getMessage(messageKey) { const message = this.messages[messageKey]; if (message) { return message; } else { return messageKey; } } produceCFMessage(control) { let message = this.getMessage(this.defaultMessage); if (control.hasError("cfInvalidoFormalmente")) { message = this.messages["cfInvalidoFormalmente"]; } else if (control.hasError("invalidCF")) { message = this.messages["invalidCF"]; } else if (control.hasError("cfDifferentRichiedente")) { message = this.messages["cfDifferentRichiedente"]; } return message; } getErrorData(control) { let message = this.getMessage(this.defaultMessage); if (control.hasError("required") && !control.errors.matDatepickerParse) { message = this.messages["required"]; } else if (control.hasError("invalidDate")) { message = this.messages["invalidDate"]; } else if (control.errors.matDatepickerParse) { message = this.messages["invalidDateFormat"]; } return message; } } MessageService.ɵprov = ɵɵdefineInjectable({ factory: function MessageService_Factory() { return new MessageService(); }, token: MessageService, providedIn: "root" }); MessageService.decorators = [ { type: Injectable, args: [{ providedIn: "root", },] } ]; MessageService.ctorParameters = () => []; class ContattiComponent { constructor(msg) { this.msg = msg; this.done = new EventEmitter(); } ngOnInit() { // console.log('[ContattoDTO]', this.contatti); this.form = new FormGroup({}); if (this.recapiti$) { this.initContatto(); } const email = new FormControl({ value: this.contatti.email, disabled: false }); this.form.addControl('email', email); const pec = new FormControl({ value: this.contatti.pec, disabled: false }); this.form.addControl('pec', pec); const telefono = new FormControl({ value: this.contatti.telefono, disabled: false }); this.form.addControl('telefono', telefono); const changes$ = this.form.valueChanges.pipe(map(_ => { const contattoNew = new ContattoDTO(); contattoNew.email = email.value; contattoNew.pec = pec.value; contattoNew.telefono = telefono.value; return ComponentOutputStatus.of(this.form.valid, contattoNew); })); this.form.setValidators(form => { return (!form.get('pec').value && !form.get('email').value) ? { requiredMail: true } : null; }); this.subscription = changes$.subscribe(newContact => this.done.emit(newContact)); } initContatto() { this.listaEmail$ = this.recapiti$.pipe(map(r => r.filter(t => t.tipoRecapito.codice == "EMAIL"))); this.listaPec$ = this.recapiti$.pipe(map(r => r.filter(t => t.tipoRecapito.codice == "PEC"))); this.listaTelefono$ = this.recapiti$.pipe(map(r => r.filter(t => t.tipoRecapito.codice == "PHONE" || t.tipoRecapito.codice == "CELL"))); // console.log('[listaTelefono]', this.listaTelefono); } ngOnDestroy() { this.subscription.unsubscribe(); } ngAfterContentInit() { this.form.updateValueAndValidity({ emitEvent: true }); } } ContattiComponent.decorators = [ { type: Component, args: [{ selector: 'lib-contatti', template: "\t<form [formGroup]=\"form\">\r\n\t\t<div class=\"collapse-body mt-2\">\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{'required' | traduzione}}{{'email-recapito' | traduzione}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"email\">\r\n\t\t\t\t\t\t\t<mat-option [value]=\"null\">{{ 'seleziona' | traduzione }}</mat-option>\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let item of listaEmail$ | async\" [value]=\"item.id\">\r\n\t\t\t\t\t\t\t\t{{ item.recapito}}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"form.controls['email'].invalid\">\r\n\t\t\t\t\t\t\t{{msg.produceMessage('email', form.controls['email']) | traduzione}}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t<mat-hint *infoTip=\"'email-recapito'\"></mat-hint>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{'required' | traduzione}}{{'pec-recapito' | traduzione}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"pec\">\r\n\t\t\t\t\t\t\t<mat-option [value]=\"null\"> {{ 'seleziona' | traduzione }} </mat-option>\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let item of listaPec$ | async\" [value]=\"item.id\">\r\n\t\t\t\t\t\t\t\t{{ item.recapito}}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"form.controls['pec'].invalid\">\r\n\t\t\t\t\t\t\t{{msg.produceMessage('email', form.controls['pec']) | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t<mat-hint *infoTip=\"'pec-recapito'\"></mat-hint>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{'telefono-recapito' | traduzione}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"telefono\">\r\n\t\t\t\t\t\t\t<mat-option [value]=\"null\"> {{ 'seleziona' | traduzione }} </mat-option>\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let item of listaTelefono$ | async\" [value]=\"item.id\">\r\n\t\t\t\t\t\t\t\t{{ item.recapito}}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"form.controls['telefono'].invalid\">\r\n\t\t\t\t\t\t\t{{msg.produceMessage('tel', form.controls['telefono']) | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t\t<mat-hint *infoTip=\"'telefono-recapito'\"></mat-hint>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<br><br>\r\n\t\t<div class=\"col-md-12\">\r\n\t\t\t<mat-error *ngIf=\"form.getError('requiredMail')\">\r\n\t\t\t\t{{msg.produceMessage('requiredMail', form) | traduzione }}\r\n\t\t\t</mat-error>\r\n\t\t</div>\r\n\t</form>\r\n", styles: [""] },] } ]; ContattiComponent.ctorParameters = () => [ { type: MessageService } ]; ContattiComponent.propDecorators = { recapiti$: [{ type: Input }], contatti: [{ type: Input }], done: [{ type: Output }] }; class DatiAnagraficiComponent { constructor() { } ngOnChanges(changes) { } ngOnInit() { this.form = new FormGroup({}); } } DatiAnagraficiComponent.decorators = [ { type: Component, args: [{ selector: 'lib-dati-anagrafici', template: "<div form [formGroup]=\"form\" *ngIf=\"datiPersonaFisica$ | async as datiPersonaFisica\">\r\n\t<!-- <h2 class=\"border-bottom font-weight-bold h3\">{{'dati-anagrafici' | traduzione}}</h2> -->\r\n\t<h3 class=\"border-bottom font-weight-bold h5\"><info-tip-label label=\"dati-anagrafici\"></info-tip-label></h3>\r\n\t<div class=\"row mt-3\">\r\n\t\t<div class=\"col-md-3\">\r\n\t\t\t<p class=\"mb-0 font-weight-bold\">{{'codice-fiscale' | traduzione}}:</p>\r\n\t\t\t<p>{{datiPersonaFisica.codiceFiscale}}</p>\r\n\t\t\t<mat-hint *infoTip=\"'codice-fiscale'\"></mat-hint>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"col-md-3\">\r\n\t\t\t<p class=\"mb-0 font-weight-bold\">{{'nome' | traduzione}}:</p>\r\n\t\t\t<p>{{datiPersonaFisica.nome}}</p>\r\n\t\t\t<mat-hint *infoTip=\"'nome'\"></mat-hint>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"col-md-3\">\r\n\t\t\t<p class=\"mb-0 font-weight-bold\">{{'cognome' | traduzione}}:</p>\r\n\t\t\t<p>{{datiPersonaFisica.cognome}}</p>\r\n\t\t\t<mat-hint *infoTip=\"'cognome'\"></mat-hint>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"col-md-3\">\r\n\t\t\t<p class=\"mb-0 font-weight-bold\">{{'data-nascita' | traduzione}}:</p>\r\n\t\t\t<p>{{datiPersonaFisica.dataNascita}}</p>\r\n\t\t\t<mat-hint *infoTip=\"'data-nascita'\"></mat-hint>\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t<div class=\"row mt-4\">\r\n\t\t<div class=\"col-md-3\">\r\n\t\t\t<p class=\"mb-0 font-weight-bold\">{{'stato-nascita' | traduzione}}:</p>\r\n\t\t\t<p>{{datiPersonaFisica.nazioneNascita.denominazione}}</p>\r\n\t\t\t<mat-hint *infoTip=\"'stato-nascita'\"></mat-hint>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"col-md-3\">\r\n\t\t\t<p class=\"mb-0 font-weight-bold\">{{'sesso' | traduzione}}:</p>\r\n\t\t\t<p>{{datiPersonaFisica.tipoSesso.codice}}</p>\r\n\t\t\t<mat-hint *infoTip=\"'sesso'\"></mat-hint>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [""] },] } ]; DatiAnagraficiComponent.ctorParameters = () => []; DatiAnagraficiComponent.propDecorators = { datiPersonaFisica$: [{ type: Input }] }; class DatiResidenzaComponent { constructor() { this.indirizzoToltip = "INDIRIZZO"; this.civicoToltip = "civico"; this.nazioneToltip = "nazione"; this.provinciaToltip = "provincia"; this.regioneToltip = "regione"; this.comuneToltip = "comune"; this.capToltip = "cap"; } ngOnChanges(changes) { } ngOnInit() { this.form = new FormGroup({}); } } DatiResidenzaComponent.decorators = [ { type: Component, args: [{ selector: 'lib-dati-residenza', template: "<!-- <p>Dati Residenza works!</p> -->\r\n<mat-expansion-panel class=\"panel\" [expanded]=\"true\">\r\n\t<mat-expansion-panel-header [collapsedHeight]=\"'48px'\" [expandedHeight]=\"'48px'\" class=\"custom-header\">\r\n\t\t<mat-panel-title>\r\n\t\t\t<!-- <h3>{{'dati-residenza' | traduzione}}</h3> -->\r\n\t\t\t<h3 class=\"mb-0 h5\"><info-tip-label label=\"dati-residenza\"></info-tip-label></h3>\r\n\t\t</mat-panel-title>\r\n\t</mat-expansion-panel-header>\r\n\t<div form [formGroup]=\"form\" class=\"collapse-body mt-2\">\r\n\t\t<ng-container *ngIf=\"residenza$ | async as residenza\">\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-md-10\">\r\n\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">{{'indirizzo' | traduzione }}:</p>\r\n\t\t\t\t\t<p>{{residenza?.indirizzo}}</p>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"indirizzoToltip\"></mat-hint> -->\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-2\">\r\n\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">{{'civico' | traduzione }}:</p>\r\n\t\t\t\t\t<p>{{residenza?.civico}}</p>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"civicoToltip\"></mat-hint> -->\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">{{'nazione' | traduzione }}:</p>\r\n\t\t\t\t\t<p>{{residenza?.nazione?.denominazione}}</p>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"nazioneToltip\"></mat-hint> -->\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-8\">\r\n\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">{{'regione' | traduzione }}:</p>\r\n\t\t\t\t\t<p>{{residenza?.regione?.denominazione}}</p>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"regioneToltip\"></mat-hint> -->\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">{{'provincia' | traduzione }}:</p>\r\n\t\t\t\t\t<p>{{residenza?.provincia?.denominazione}}</p>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"provinciaToltip\"></mat-hint> -->\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">{{'comune' | traduzione }}:</p>\r\n\t\t\t\t\t<p>{{residenza?.comune?.denominazione}}</p>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"comuneToltip\"></mat-hint> -->\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md-4\">\r\n\t\t\t\t\t<p class=\"mb-0 font-weight-bold\">{{'cap' | traduzione }}:</p>\r\n\t\t\t\t\t<p>{{residenza?.cap}}</p>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"capToltip\"></mat-hint> -->\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t</div>\r\n</mat-expansion-panel>\r\n", styles: [""] },] } ]; DatiResidenzaComponent.ctorParameters = () => []; DatiResidenzaComponent.propDecorators = { residenza$: [{ type: Input }] }; class DomicilioDTO { } class Tuple { static of(_1, _2) { const tuple = new Tuple(); tuple._1 = _1; tuple._2 = _2; return tuple; } } // @dynamic class ComponentReducer { static reducer2(m1, m2, isComplete, startValue) { const cardinality = 2; const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducer3(m1, m2, m3, isComplete, startValue) { const cardinality = 3; const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2), ComponentReducer.ordinal(m3, 3)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducer4(m1, m2, m3, m4, isComplete, startValue) { const cardinality = 4; //TODO // m3.subscribe(_ => console.log("m3", _)) const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2), ComponentReducer.ordinal(m3, 3), ComponentReducer.ordinal(m4, 4)); // merged.subscribe(_ => console.log("merged", _)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducer5(m1, m2, m3, m4, m5, isComplete, startValue) { const cardinality = 5; const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2), ComponentReducer.ordinal(m3, 3), ComponentReducer.ordinal(m4, 4), ComponentReducer.ordinal(m5, 5)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducer6(m1, m2, m3, m4, m5, m6, isComplete, startValue) { const cardinality = 6; const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2), ComponentReducer.ordinal(m3, 3), ComponentReducer.ordinal(m4, 4), ComponentReducer.ordinal(m5, 5), ComponentReducer.ordinal(m6, 6)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducer7(m1, m2, m3, m4, m5, m6, m7, isComplete, startValue) { const cardinality = 7; const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2), ComponentReducer.ordinal(m3, 3), ComponentReducer.ordinal(m4, 4), ComponentReducer.ordinal(m5, 5), ComponentReducer.ordinal(m6, 6), ComponentReducer.ordinal(m7, 7)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducer8(m1, m2, m3, m4, m5, m6, m7, m8, isComplete, startValue) { const cardinality = 8; const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2), ComponentReducer.ordinal(m3, 3), ComponentReducer.ordinal(m4, 4), ComponentReducer.ordinal(m5, 5), ComponentReducer.ordinal(m6, 6), ComponentReducer.ordinal(m7, 7), ComponentReducer.ordinal(m8, 8)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducer9(m1, m2, m3, m4, m5, m6, m7, m8, m9, isComplete, startValue) { const cardinality = 9; const merged = merge(ComponentReducer.ordinal(m1, 1), ComponentReducer.ordinal(m2, 2), ComponentReducer.ordinal(m3, 3), ComponentReducer.ordinal(m4, 4), ComponentReducer.ordinal(m5, 5), ComponentReducer.ordinal(m6, 6), ComponentReducer.ordinal(m7, 7), ComponentReducer.ordinal(m8, 8), ComponentReducer.ordinal(m9, 9)); return ComponentReducer.reducerInternal(merged, startValue, cardinality, isComplete); } static reducerInternal(mergedMutators, startValue, cardinality, isComplete) { const accumulatorAndValidity = Tuple.of([], startValue); // startValue è un valore normalizzato return mergedMutators.pipe( //TODO // tap(_ => console.log("mergedMutators", _)), scan((accumulator, mutator) => { accumulator._2.mapValue(mutator._2.output); accumulator._1[mutator._1] = mutator._2.status; //TODO // console.log("muttator", accumulator._2.mapValue(mutator._2.output)); // console.log("accumulator", accumulator); return accumulator; }, accumulatorAndValidity //valore iniziale ), map((accumulator) => { const validities = accumulator._1; const isValid = isComplete(accumulator._2.output) && validities.reduce((acc, x) => acc && (x == null || x), true); return ComponentOutputStatus.of(isValid, accumulator._2.output); }), delay(0), startWith(startValue)); } static ordinal(mutator, order) { return mutator.pipe(map(x => Tuple.of(order, x))); } } class DatiDomicilioComponent { constructor(msg) { this.msg = msg; this.done = new EventEmitter(); this.displayedColumns = ['tipo', 'presso', 'indirizzo', 'preferito', 'seleziona']; this.changesRecapito$ = new Subject(); this.validazioneDomicilio = false; this.tipoToltip = "tipo"; this.pressoToltip = "presso"; this.indirizzoToltip = "indirizzo"; this.selezionaToltip = "seleziona"; this.preferitoToltip = "preferito"; } ngOnInit() { // console.log('[domicilio]', this.domicilio); console.log('[domicili]', this.domicili); this.form = new FormGroup({}); let valid = true; if (!this.domicilio) { this.initDomicilio(); valid = false; } this.dataSource = new MatTableDataSource(this.domicili); this.selection = new SelectionModel(false, []); this.initialSelection(); const domicilio = new FormControl({ value: this.domicilio.hasSelezionatoDomicilio, disabled: false }); this.form.addControl('domicilio', domicilio); const selected = new FormControl({ value: '', disabled: false }); this.form.addControl('selected', selected); this.checkDomicilio$ = domicilio.valueChanges.pipe(shareReplay()) .pipe(tap(checkDomicilio => { if (checkDomicilio == false) { this.selection.clear(); } }), startWith(this.domicilio.idDomicilioSelezionato != null)); const changesCheckDomicilio$ = this.checkDomicilio$.pipe(map(checkDomicilio => ComponentOutputStatus.of(true, (domicilio) => { domicilio.hasSelezionatoDomicilio = checkDomicilio; if (checkDomicilio == false) { domicilio.contatto.email = null; domicilio.contatto.pec = null; domicilio.contatto.telefono = null; this.form.get('selected').setValue(''); } }))); const changesDomicilio$ = this.selection.changed.pipe(tap((value) => { // console.log("changesDomicilio$", value); this.validazioneDomicilio = value.added.length > 0 ? false : true; }), map(change => ComponentOutputStatus.of(true, domicilio => { domicilio.idDomicilioSelezionato = change.added.length > 0 ? change.added[0].id : null; }))); this.subscription = ComponentReducer.reducer3(changesCheckDomicilio$, changesDomicilio$, this.changesRecapito$, domicilio => { return domicilio.hasSelezionatoDomicilio ? domicilio.idDomicilioSelezionato != null : true; }, ComponentOutputStatus.of(true, this.domicilio)) .subscribe(domicilio => { // console.log('[DatiDomicilioComponent] status', status); this.done.emit(domicilio); }); this.form.setValidators(form => { if (form.get('domicilio').value && !form.get('selected').value) { this.validazioneDomicilio = true; return { requiredDomicilio: true }; } else { return null; } //TODO // return form.get('domicilio').value && // !form.get('selected').value ? // // this.selection.isEmpty() ? // // this.selection.selected.length === 1 ? // { requiredDomicilio: true } : null; }); } initialSelection() { if (this.domicilio.idDomicilioSelezionato) { setTimeout(() => { this.dataSource.data .forEach(row => { if (row.id == this.domicilio.idDomicilioSelezionato) { this.selection.select(row); this.validazioneDomicilio = false; } }); }, 0); } } initDomicilio() { this.domicilio = new DomicilioDTO(); this.domicilio.contatto = new ContattoDTO(); } recapitiReady(recapitiStatus) { // console.log('[recapitiReady]', recapitiStatus); this.changesRecapito$.next(recapitiStatus.mapValue((contatto) => (dich) => (dich.contatto = contatto))); } ngOnDestroy() { if (this.subscription != null) { this.subscription.unsubscribe(); } } } DatiDomicilioComponent.decorators = [ { type: Component, args: [{ selector: 'lib-dati-domicilio', template: "<mat-expansion-panel class=\"panel\" [expanded]=\"domicilio.hasSelezionatoDomicilio\">\r\n\t<mat-expansion-panel-header [collapsedHeight]=\"'48px'\" [expandedHeight]=\"'48px'\" class=\"custom-header\">\r\n\t\t<mat-panel-title>\r\n\t\t\t<!-- <h3>{{'domicilio' | traduzione}}</h3> -->\r\n\t\t\t<h3 class=\"mb-0 h5\"><info-tip-label label=\"domicilio\"></info-tip-label></h3>\r\n\t\t</mat-panel-title>\r\n\t</mat-expansion-panel-header>\r\n\t<form [formGroup]=\"form\">\r\n\t\t<div class=\"collapse-body mt-2\">\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<section class=\"example-section col-md-2\">\r\n\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\tformControlName=\"domicilio\"\r\n\t\t\t\t\t\tclass=\"example-margin\">\r\n\t\t\t\t\t\t<!-- {{'seleziona-domicilio' | traduzione}} -->\r\n\t\t\t\t\t\t<info-tip-label label=\"seleziona-domicilio\"></info-tip-label>\r\n\t\t\t\t\t</mat-checkbox>\r\n\t\t\t\t</section>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<ng-container *ngIf=\"checkDomicilio$ | async\">\r\n\r\n\t\t<h4 class=\"border-bottom font-weight-bold mt-4 h5\"><info-tip-label label=\"domicili-inseriti\"></info-tip-label></h4>\r\n <ng-container *ngIf=\"domicili?.length > 0; else noDomicili\">\r\n\t\t\t<mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8 mt-3 border\">\r\n\r\n\t\t\t\t<!-- Tipo Column -->\r\n\t\t\t\t<ng-container matColumnDef=\"tipo\">\r\n\t\t\t\t\t<mat-header-cell *matHeaderCellDef> {{'tipo' | traduzione}} </mat-header-cell>\r\n\t\t\t\t\t<mat-cell *matCellDef=\"let element\"> {{element.tipoDomicilio.descrizione}} </mat-cell>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"tipoToltip\"></mat-hint> -->\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<!-- Presso Column -->\r\n\t\t\t\t<ng-container matColumnDef=\"presso\">\r\n\t\t\t\t\t<mat-header-cell *matHeaderCellDef> {{'presso' | traduzione}} </mat-header-cell>\r\n\t\t\t\t\t<mat-cell *matCellDef=\"let element\"> {{element.indirizzo.presso}} </mat-cell>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"pressoToltip\"></mat-hint> -->\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<!-- Indirizzo Column -->\r\n\t\t\t\t<ng-container matColumnDef=\"indirizzo\">\r\n\t\t\t\t\t<mat-header-cell *matHeaderCellDef> {{'indirizzo' | traduzione}} </mat-header-cell>\r\n\t\t\t\t\t<mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<span *ngIf=\"!element.indirizzo.estero\"> {{element.indirizzo.indirizzo}}\r\n\t\t\t\t\t\t\t{{element.indirizzo.civico}} {{element.indirizzo.cap}} -\r\n\t\t\t\t\t\t\t{{element.indirizzo.comune.denominazione}} {{element.indirizzo.provinciaLabel}}</span>\r\n\t\t\t\t\t\t<span *ngIf=\"element.indirizzo.estero\"> {{element.indirizzo.nazione.denominazione}} -\r\n\t\t\t\t\t\t\t{{element.indirizzo.indirizzo}} </span>\r\n\t\t\t\t\t</mat-cell>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"indirizzoToltip\"></mat-hint> -->\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<!-- Preferito Column -->\r\n\t\t\t\t<ng-container matColumnDef=\"preferito\">\r\n\t\t\t\t\t<mat-header-cell *matHeaderCellDef> {{'preferito' | traduzione}} </mat-header-cell>\r\n\t\t\t\t\t<mat-cell *matCellDef=\"let element\">\r\n\t\t\t\t\t\t<!-- <mat-checkbox class=\"example-margin\" [disabled]=\"true\">\r\n\t\t\t\t\t\t</mat-checkbox> -->\r\n\t\t\t\t\t\t<!-- <mat-checkbox *ngIf=\"!element.preferito\" class=\"example-margin\" [disabled]=\"true\">\r\n\t\t\t\t\t\t</mat-checkbox> -->\r\n\t\t\t\t\t\t<mat-checkbox *ngIf=\"element.preferito\" class=\"example-margin\" [checked]=\"true\"\r\n\t\t\t\t\t\t\t[disabled]=\"true\"></mat-checkbox>\r\n\t\t\t\t\t</mat-cell>\r\n\t\t\t\t\t<!-- <mat-hint *infoTip=\"preferitoToltip\"></mat-hint> -->\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<!-- Selezione Column -->\r\n\t\t\t\t<ng-container matColumnDef=\"seleziona\">\r\n\t\t\t\t\t<mat-header-cell *matHeaderCellDef> {{'seleziona' | traduzione}}\r\n\t\t\t\t\t \t<!-- <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n\t\t\t\t\t\t\t\t\t[checked]=\"selection.hasValue() && isAllSelected()\"\r\n\t\t\t\t\t\t\t\t\t[indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n\t\t\t\t\t\t\t\t\tformControlName=\"selected2\">\r\n\t\t\t\t\t\t</mat-checkbox> -->\r\n\t\t\t\t\t\t<!-- <mat-hint *infoTip=\"selezionaToltip\"></mat-hint> -->\r\n\t\t\t\t\t</mat-header-cell>\r\n\r\n\t\t\t\t\t<mat-cell *matCellDef=\"let row\">\r\n\t\t\t\t\t\t<mat-checkbox\r\n\t\t\t\t\t\t\t(click)=\"$event.stopPropagation()\"\r\n\t\t\t\t\t\t\t(change)=\"$event ? selection.toggle(row) : null\"\r\n\t\t\t\t\t\t\t[checked]=\"selection.isSelected(row)\"\r\n\t\t\t\t\t\t\tformControlName=\"selected\">\r\n\t\t\t\t\t\t</mat-checkbox>\r\n\t\t\t\t\t</mat-cell>\r\n\t\t\t\t</ng-container>\r\n\r\n\t\t\t\t<mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\r\n\t\t\t\t<mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\r\n\r\n\t\t\t</mat-table>\r\n\t\t\t<div class=\"collapse-body mt-2\">\r\n\t\t\t\t<div class=\"col-md-12\">\r\n\t\t\t\t\t<mat-error *ngIf=\"validazioneDomicilio\">\r\n\t\t\t\t\t\t{{'validation-requiredDomicilio' | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-container>\r\n\t\t<ng-template #noDomicili>\r\n\t\t\t<div class=\"collapse-body mt-2\">\r\n\t\t\t\t<div class=\"col-md-12\">\r\n\t\t\t\t\t<mat-error >\r\n\t\t\t\t\t\t{{'no-domicili' | traduzione }}\r\n\t\t\t\t\t</mat-error>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\r\n\t\t\t<div class=\"collapse-body mt-2\" *ngIf=\"(recapiti$ | async)\">\r\n\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t<div class=\"col-12\">\r\n\t\t\t\t\t\t<mat-card>\r\n\t\t\t\t\t\t\t<lib-contatti\r\n\t\t\t\t\t\t\t\t[contatti]=\"domicilio.contatto\"\r\n\t\t\t\t\t\t\t\t[recapiti$]=\"recapiti$\"\r\n\t\t\t\t\t\t\t\t(done)=\"recapitiReady($event)\"\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t</lib-contatti>\r\n\t\t\t\t\t\t</mat-card>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t</ng-container>\r\n\t</form>\r\n</mat-expansion-panel>\r\n", styles: [""] },] } ]; DatiDomicilioComponent.ctorParameters = () => [ { type: MessageService } ]; DatiDomicilioComponent.propDecorators = { domicili: [{ type: Input }], recapiti$: [{ type: Input }], domicilio: [{ type: Input }], done: [{ type: Output }], formGroupDirective: [{ type: ViewChild, args: [FormGroupDirective,] }] }; class DatiRichiedenteDTO { } class RichiedenteComponent { constructor() { this.nextStep = new EventEmitter(); this.salvaBozza = new EventEmitter(); this.changesPersonaFisica$ = new Subject(); this.changesResidenza$ = new Subject(); this.changesRecapito$ = new Subject(); this.changesDomicilio$ = new Subject(); //isFormValid: boolean; this.direction = "only-forward"; this.isFinal = false; this.isDomicilioElettoValid = false; } ngOnInit() { //console.log('[DatiRichiedenteDTO]', this.datiRichiedente); this.form = new FormGroup({}); let valid = true; if (!this.datiRichiedente) { this.initRichiedente(); valid = false; } const dichiarante$ = ComponentReducer.reducer4(this.changesPersonaFisica$, this.changesResidenza$, this.changesRecapito$, this.changesDomicilio$, (dich) => { // console.log("[dich]", dich); // console.log("[hasSelezionatoDomicilio]", dich.domicilio.hasSelezionatoDomicilio); let isValid; if (!dich.domicilio.hasSelezionatoDomicilio && dich.domicilio.hasSelezionatoDomicilio != undefined) { isValid = dich.contatto != null; } else { isValid = dich.domicilio != null; } //TODO // this.isDomicilioElettoValid // ? dich.domicilio != null // se il domicilio non è validato controlla se diverso da null se lo è torna false altrimenti true. // : true // se già è validato torna true. // return ( // dich.contatto != null || // basterebbe uno dei due diverso da null per tronare false // this.isDomicilioElettoValid // ); valid = isValid; return isValid; }, ComponentOutputStatus.of(valid, this.datiRichiedente) // normalizzazione componente dichiarante ); dichiarante$.subscribe((dichiarante) => { console.log("[RichiedenteComponent] datiRichiedente", dichiarante); //TODO //this.isFormValid = dichiarante.status; if (dichiarante.output.domicilio.hasSelezionatoDomicilio == false) { //TODO // this.isDichiaranteValid = dichiarante.output.infoContatto.email != null || dichiarante.output.infoContatto.pec != null; this.isDichiaranteValid = this.hasSelecteDichiarante(dichiarante); } else { //TODO // this.isDichiaranteValid = (dichiarante.output.infoContatto.email != null || dichiarante.output.infoContatto.pec != null) && // (dichiarante.output.domicilio.idDomicilioSelezionato != null) && // (dichiarante.output.domicilio.contatto.email != null || dichiarante.output.domicilio.contatto.pec != null); this.isDichiaranteValid = this.hasSelecteDichiaranteAnd(dichiarante); } }); //TODO //--------viene passato dall'input--------// // this.personaFisica$ = this.personaFisicaService.getPersonaFisicaUtente$() // .pipe(shareReplay()); this.datiPersonaFisica$ = this.personaFisica$ .pipe(pluck("datiPersonaFisica")); this.residenza$ = this.personaFisica$ .pipe(pluck("residenza")); this.recapiti$ = this.personaFisica$ .pipe(pluck("recapiti"), map(recapiti => recapiti || [])); this.domicili$ = this.personaFisica$ .pipe(pluck("domicili")); } recapitiReady(recapitiStatus) { // console.log('[racapitiStatus]', recapitiStatus); this.changesRecapito$.next(recapitiStatus.mapValue((contatto) => (dich) => { return dich.contatto = contatto; })); } domiciliReady(domiciliStatus) { // console.log('[domiciliStatus]', domiciliStatus); this.changesDomicilio$.next(domiciliStatus.mapValue((domicilio) => (dich) => { dich.domicilio = domicilio; //TODO: fix // (this.isDomicilioElettoValid = domicilio.idDomicilioSelezionato != null); })); } initRichiedente() { this.datiRichiedente = new DatiRichiedenteDTO(); this.datiRichiedente.contatto = new ContattoDTO(); //TODO this.datiRichiedente.domicilio = new DomicilioDTO(); this.datiRichiedente.domicilio.contatto = new ContattoDTO(); this.datiRichiedente.domicilio.idDomicilioSelezionato = null; } forward(_) { this.nextStep.emit(this.datiRichiedente); } complete(_) { } onSalvaBozza(_) { this.salvaBozza.emit(this.datiRichiedente); } ngOnDestroy() { if (this.domicilioElettoSub) { this.domicilioElettoSub.unsubscribe(); } } hasSelecteDichiarante(dichiarante) { return dichiarante.output.contatto.email != null || dichiarante.output.contatto.pec != null; ; } hasSelecteDichiaranteAnd(dichiarante) { return this.hasSelecteDichiarante(dichiarante) && (dichiarante.output.domicilio.idDomicilioSelezionato != null) && (dichiarante.output.domicilio.contatto.email != null || dichiarante.output.domicilio.contatto.pec != null); } } RichiedenteComponent.decorators = [ { type: Component, args: [{ selector: 'lib-richiedente', template: "<div class=\"mt-3 mb-5\" [formGroup]=\"form\">\r\n\t\t<lib-dati-anagrafici\r\n\t\t\t[datiPersonaFisica$]=\"datiPersonaFisica$\"\r\n\t\t>\r\n\t\t</lib-dati-anagrafici>\r\n\t<div class=\"mt-4\"></div>\r\n\t<lib-dati-residenza\r\n\t\t[residenza$]=\"residenza$\"\r\n\t>\r\n\t</lib-dati-residenza>\r\n\r\n\t<mat-expansion-panel class=\"panel mt-4\" [expanded]=\"true\">\r\n\t\t<mat-expansion-panel-header [collapsedHeight]=\"'48px'\" [expandedHeight]=\"'48px'\" class=\"custom-header\">\r\n\t\t\t<mat-panel-title>\r\n\t\t\t\t<!-- <h3>{{'recapiti' | traduzione}}</h3> -->\r\n\t\t\t\t<h3 class=\"mb-0 h5\"><info-tip-label label=\"recapiti\"></info-tip-label></h3>\r\n\t\t\t</mat-panel-title>\r\n\t\t</mat-expansion-panel-header>\r\n\t\t<lib-contatti\r\n\t\t\t[contatti]=\"datiRichiedente.contatto\"\r\n\t\t\t[recapiti$]=\"recapiti$\"\r\n\t\t\t(done)=\"recapitiReady($event)\"\r\n\t\t>\r\n\t\t</lib-contatti>\r\n\t</mat-expansion-panel>\r\n\t<div class=\"mt-4\"></div>\r\n\t<div *ngIf=\"(personaFisica$ | async)\">\r\n\t\t<lib-dati-domicilio\r\n\t\t\t[domicilio]=\"datiRichiedente.domicilio\"\r\n\t\t\t[domicili]=\"domicili$ | async\"\r\n\t\t\t[recapiti$]=\"recapiti$\"\r\n\t\t\t(done)=\"domiciliReady($event)\"\r\n\t\t>\r\n\t\t</lib-dati-domicilio>\r\n\t</div>\r\n\t<lib-stepper-navigator\r\n\t\t[form]=\"form\"\r\n\t\t[direction]=\"direction\"\r\n\t\t[isFinal]=\"isFinal\"\r\n\t\t[isContainerValid]=\"isDichiaranteValid\"\r\n\t\t(goForward)=\"forward($event)\"\r\n\t\t(salvaBozza)=\"onSalvaBozza($event)\"\r\n\t\t(complete)=\"complete($event)\"\r\n\t>\r\n\t</lib-stepper-navigator>\r\n</div>\r\n", styles: [".mat-card{border-radius:0!important;border-top:5px solid #0a2644}.divider{background-color:#737373;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-flex{background-color:#fff!important}.mat-select-value{max-width:100%;width:100%!important}"] },] } ]; RichiedenteComponent.ctorParameters = () => []; RichiedenteComponent.propDecorators = { datiRichiedente: [{ type: Input }], personaFisica$: [{ type: Input }], nextStep: [{ type: Output }], salvaBozza: [{ type: Output }] }; const TipiRichiedente = { RICORRENTE: 'Ricorrente', EREDE_RICORRENTE: 'Erede del Ricorrente', PERSONA_GIURIDICA_RAPPRESENTANTE_LEGALE: 'Persona Giuridica/Legale rappresentante di Società/Ditta/Ente', PROCURATORE_ANTISTATARIO: 'Procuratore Antistatario', EREDE_PROCURATORE_ANTISTATARIO: 'Erede del procuratore antistatario', TUTORE_PROCURATORE_LEGALE: 'Tutore/Procuratore legale', CURATORE_FALLIMENTARE: 'Curatore Fallimentare', ME_MEDESIMO: "Me medesimo" }; const CodiceTipiRichiedente = { CODICE_RICORRENTE: 'RICORRENTE', CODICE_PROCURATORE_ANTISTATARIO: 'ANTISTATARIO', CODICE_EREDE_RICORRENTE: 'EREDE_RICORRENTE', CODICE_PERSONA_GIURIDICA_RAPPRESENTANTE_LEGALE: 'RAPPR_LEG', CODICE_EREDE_PROCURATORE_ANTISTATARIO: 'EREDE_ANTISTATARIO', CODICE_TUTORE_PROCURATORE_LEGALE: 'TUT', CODICE_CURATORE_FALLIMENTARE: 'CURATORE_FALLIMENTARE', CODICE_ME_MEDESIMO: 'ME_MEDESIMO' }; class InfoAnagrafichePFDTO { } class InfoNascitaPFDTO { } class NaturaRichiedenteDTO { } class PersonaFisicaBaseDTO { } function nuovaPFBase() { const newPF = new PersonaFisicaBaseDTO(); newPF.cognome = 'nuova-persona-fisica'; newPF.nome = ''; newPF.idPersona = 'nuovo'; newPF.codTipoDelega = ''; return newPF; } class PersonaFisicaDTO { } class PersonaGiuridicaBaseDTO { } function nuovaPGBase() { let newPG = new PersonaGiuridicaBaseDTO(); newPG.ragioneSociale = 'nuova-persona-giuridica'; newPG.idPersona = 'nuovo'; newPG.codTipoDelega = ''; return newPG; } class PersonaGiuridicaDTO { } class RappresentanteDTO { } class MieDelegheDTO { } class DelegheService { constructor(http, configurationService) { this.http = http; this.configurationService = configurationService; this.DELEGA_VALIDATA = 'TRUE'; this.urlAnagrafe = this.configurationService.servicePaths.get("ANAGRAFE_MS_API_URL") + "/v1"; this.urlAnagrafe2 = this.configurationService.servicePaths.get("ANAGRAFE_MS_API_URL") + "/v2"; this.urlDeleghe = this.configurationService.servicePaths.get("DELEGHE_MS_API_URL") + "/v1"; this.urlDeposito = configurationService.servicePaths.get("DEPOSITO_MS_API_URL") + "/v1"; } getDatiSocieta(id) { // console.log('[getDatiSocieta - lib]', id); return this.http.put(this.urlDeposito + `/supporto/personagiuridica/delega`, id); } getPersona(id) { // console.log('[getPersona - lib]', id); return this.http.get(this.urlAnagrafe + `/personaFisica/${id}`); // return this.http.get<PersonaFisica>(this.urlAnagrafe + "/personaFisica/" + "{id}"); } getMieDeleghe() { return this.http.get(this.urlDeleghe + `/deleghe/mie`) .pipe(map(deleghe => { const deleghePF = deleghe.personeFisiche ? deleghe.personeFisiche.filter(d => this.DELEGA_VALIDATA == d.validata) : []; const deleghePG = deleghe.personeGiuridiche ? deleghe.personeGiuridiche.filter(d => this.DELEGA_VALIDATA == d.validata) : []; const delegheValidate = new MieDelegheDTO(); delegheValidate.personeFisiche = deleghePF; delegheValidate.personeGiuridiche = deleghePG; return delegheValidate; })); } getListaPfPaged(pageSize, pageNumber, data) { // return this.http.post(this.urlAnagrafe + `/personeFisiche?offset=0&pageNumber=${pageNumber}&pageSize=${pageSize}&paged=false&sort.sorted=false&sort.unsorted=false&unpaged=false`, data); return this.http.post(this.urlAnagrafe + `/personeFisiche?offset=0&pageNumber=${pageNumber}&pageSize=${pageSize}&paged=false&sort.sorted=false&sort.unsorted=false&unpaged=false`, data); } //TODO getListaPg(paginationData, filtroRicercaPersonaPG) { return this.http.post(this.urlAnagrafe + `/personeGiuridiche`, filtroRicercaPersonaPG, { params: paginationData }); } getListaPgPaged(pageSize, pageNumber, data) { return this.http.post(this.urlAnagrafe + `/personeGiuridiche?offset=0&pageNumber=${pageNumber}&pageSize=${pageSize}&paged=false&sort.sorted=false&sort.unsorted=false&unpaged=false`, data); } getPersonaGiuridicaCodiceFiscale(codiceFiscale) { // console.log('[getPersonaGiuridicaCodiceFiscale] - codiceFiscale', codiceFiscale); //TODO // const url: string = this.urlAnagrafe2 + `/personaGiuridica/codiceFiscale`; // SE_SI_TRATTA_DI_UNA_NUOVA_PG => SI_DEVE_CHIAMARE_LA_SEGUENTE_SERVIZIO const url = this.urlDeposito + `/supporto/personagiuridica`; // console.log('[getPersonaGiuridicaCodiceFiscale] - url', url); return this.http.put(url, codiceFiscale); } getPersonaFiscaleCodiceFiscale(codiceFiscale) { // console.log('[getPersonaFiscaleCodiceFiscale] - codiceFiscale', codiceFiscale); const url = this.urlAnagrafe2 + `/personaFisica/codiceFiscale`; // console.log('[getPersonaFiscaleCodiceFiscale] - url', url); return this.http.put(url, codiceFiscale); } getListRtsCodiceRegione(listaCodiceRegione) { // console.log('[getListRtsCodiceRegione] - listaCodiceRegione', listaCodiceRegione); const url = this.urlDeposito + `/rtsdto`; // console.log('[getListRtsCodiceRegione] - url', url); return this.