@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
JavaScript
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.