@arsedizioni/ars-utils 20.3.64 → 20.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, signal, Injectable, NgModule } from '@angular/core';
3
- import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
4
3
  import { BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';
5
- import { EMPTY, throwError, of, catchError as catchError$1, switchMap } from 'rxjs';
4
+ import { EMPTY, throwError, of, catchError as catchError$1 } from 'rxjs';
5
+ import { HttpClient, HttpHeaders } from '@angular/common/http';
6
6
  import { DialogService } from '@arsedizioni/ars-utils/ui';
7
7
  import { catchError, finalize, map } from 'rxjs/operators';
8
8
 
@@ -488,7 +488,6 @@ class EvolutionService {
488
488
  this._flags = EvolutionServiceFlags.None;
489
489
  this.loggedIn = signal(false, ...(ngDevMode ? [{ debugName: "loggedIn" }] : []));
490
490
  this.loggingIn = signal(false, ...(ngDevMode ? [{ debugName: "loggingIn" }] : []));
491
- this.keepAlive = 0;
492
491
  }
493
492
  get serviceUri() {
494
493
  return this._serviceUri;
@@ -512,7 +511,6 @@ class EvolutionService {
512
511
  if (this.broadcastServiceSubscription) {
513
512
  this.broadcastServiceSubscription.unsubscribe();
514
513
  }
515
- this.removeKeepAlive();
516
514
  }
517
515
  /**
518
516
  * Initialize service
@@ -567,51 +565,14 @@ class EvolutionService {
567
565
  });
568
566
  }
569
567
  // Eveluate current session storage in case of page refresh (F5)
570
- const tokenExpirationDate = this.getTokenExpirationDate();
571
- const tokenExpired = !tokenExpirationDate || tokenExpirationDate.getTime() < Date.now();
572
- if (!tokenExpired || this.loggedIn()) {
568
+ if (this.loggedIn()) {
573
569
  // Auto login
574
- this.loggedIn.set(true);
575
570
  this.loggingIn.set(false);
576
- // Keep alive
577
- this.setKeepAlive();
578
571
  // Notify
579
572
  this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);
580
573
  }
581
574
  }
582
575
  /**
583
- * Get access token expiration date
584
- */
585
- getTokenExpirationDate() {
586
- const token = this.getAuthToken();
587
- if (!token)
588
- return undefined;
589
- // Parse json object from base64 encoded jwt token
590
- const jwtToken = JSON.parse(atob(token.split('.')[1]));
591
- // Set a timeout to refresh the token a minute before it expires
592
- return new Date(jwtToken.exp * 1000);
593
- }
594
- /**
595
- * Set keep alive
596
- */
597
- setKeepAlive() {
598
- // Keep alive every 1 min
599
- if (this.keepAlive === 0) {
600
- this.keepAlive = window.setInterval(() => {
601
- this.ping();
602
- }, 1000 * 60 * 5);
603
- }
604
- }
605
- /**
606
- * Remove keep alive
607
- */
608
- removeKeepAlive() {
609
- if (this.keepAlive > 0) {
610
- window.clearInterval(this.keepAlive);
611
- this.keepAlive = 0;
612
- }
613
- }
614
- /**
615
576
  * Ping
616
577
  */
617
578
  ping() {
@@ -620,25 +581,6 @@ class EvolutionService {
620
581
  .subscribe();
621
582
  }
622
583
  /**
623
- * Set auth token
624
- * @param value : the login result
625
- */
626
- setToken(value) {
627
- if (value.authToken ?? value.token) {
628
- sessionStorage.setItem('evolution_auth', value.authToken ?? value.token);
629
- }
630
- }
631
- /**
632
- * Return current auth token
633
- */
634
- getAuthToken() {
635
- let token = sessionStorage.getItem('evolution_auth');
636
- if (token && token[0] === '"') {
637
- return token.substring(1, token.length - 1);
638
- }
639
- return token;
640
- }
641
- /**
642
584
  * Store login info
643
585
  */
644
586
  storeContext() {
@@ -653,7 +595,6 @@ class EvolutionService {
653
595
  this._loginInfo = { context: undefined };
654
596
  }
655
597
  this._loginInfo.context = result.context;
656
- this.setToken(result);
657
598
  this.storeContext();
658
599
  }
659
600
  /**
@@ -761,7 +702,6 @@ class EvolutionService {
761
702
  this.loggedIn.set(!result.context?.isTemporary);
762
703
  this.loggingIn.set(false);
763
704
  // Keep alive
764
- this.setKeepAlive();
765
705
  // Notify
766
706
  this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);
767
707
  }
@@ -789,7 +729,6 @@ class EvolutionService {
789
729
  logout(forget = false) {
790
730
  return this.httpClient.post(this._serviceUri + '/logout/?forget=' + forget, {})
791
731
  .pipe(finalize(() => {
792
- this.removeKeepAlive();
793
732
  this.clear();
794
733
  // Clean up
795
734
  localStorage.removeItem('evolution_context');
@@ -843,16 +782,6 @@ class EvolutionService {
843
782
  // Reset login
844
783
  this.reset();
845
784
  }
846
- /**
847
- * Perform token refresh
848
- */
849
- refresh() {
850
- return this.httpClient.get(this._serviceUri + '/refresh2').pipe(map((r) => {
851
- // Update token
852
- this.setToken(r.value);
853
- return r;
854
- }));
855
- }
856
785
  /**
857
786
  * Convert folders in a tree of Node object.
858
787
  * @param folders : the subfolders group or null to root
@@ -994,14 +923,9 @@ class EvolutionAuthInterceptor {
994
923
  intercept(request, next) {
995
924
  if (request.url.startsWith(this.evolutionService.serviceUri ?? '')) {
996
925
  request = request.clone({ withCredentials: true });
997
- return next.handle(this.addTokenToRequest(request))
926
+ return next.handle(request)
998
927
  .pipe(catchError$1(error => {
999
928
  if (error.url.startsWith(this.evolutionService.serviceUri)) {
1000
- if (error instanceof HttpErrorResponse &&
1001
- !request.url.includes("/login") &&
1002
- error.status === 401) {
1003
- return this.handle401Error(request, next);
1004
- }
1005
929
  const errorStatus = parseInt(error.status ?? "0");
1006
930
  if ((errorStatus > 0 && errorStatus < 500) || (this.evolutionService.flags & EvolutionServiceFlags.NotifySystemErrors) > 0) {
1007
931
  const errorTime = new Date().getTime();
@@ -1034,43 +958,6 @@ class EvolutionAuthInterceptor {
1034
958
  }
1035
959
  return next.handle(request);
1036
960
  }
1037
- /**
1038
- * Handle 401 error
1039
- * @param request : the request
1040
- * @param next : the http handler
1041
- */
1042
- handle401Error(request, next) {
1043
- if (this.evolutionService.loggedIn()) {
1044
- return this.evolutionService.refresh().pipe(switchMap(() => {
1045
- return next.handle(this.addTokenToRequest(request));
1046
- }), catchError$1(error => {
1047
- return throwError(() => error);
1048
- }));
1049
- }
1050
- return next.handle(request);
1051
- }
1052
- /**
1053
- * Add token to request
1054
- * @param request : the request
1055
- * @param token: the token or null to use curre3nt
1056
- */
1057
- addTokenToRequest(request, token) {
1058
- if (request.url.startsWith(this.evolutionService.serviceUri ?? '')) {
1059
- if (this.evolutionService.loggedIn()) {
1060
- if (!token)
1061
- token = this.evolutionService.getAuthToken();
1062
- if (token) {
1063
- return request.clone({
1064
- setHeaders: {
1065
- Authorization: 'Bearer ' + token,
1066
- 'ngsw-bypass': 'ngsw-bypass'
1067
- },
1068
- });
1069
- }
1070
- }
1071
- }
1072
- return request;
1073
- }
1074
961
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: EvolutionAuthInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1075
962
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: EvolutionAuthInterceptor }); }
1076
963
  }
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-evolution.common.mjs","sources":["../../../projects/ars-utils/evolution.common/common/messages.ts","../../../projects/ars-utils/evolution.common/common/definitions.ts","../../../projects/ars-utils/evolution.common/common/services/evolution.service.ts","../../../projects/ars-utils/evolution.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/evolution.common/common/common.module.ts","../../../projects/ars-utils/evolution.common/public_api.ts","../../../projects/ars-utils/evolution.common/arsedizioni-ars-utils-evolution.common.ts"],"sourcesContent":["export const EvolutionMessages = {\r\n // Error\r\n ERROR: '§evo-error',\r\n\r\n // Login\r\n LOGIN_CHANGED: '§evo-login-changed',\r\n LOGIN_COMPLETED: '§evo-login-completed',\r\n LOGOUT_COMPLETED: '§evo-logout-completed',\r\n LOGIN_PENDING: '§evo-login-pending',\r\n LOGOUT: '§evo-logout'\r\n};\r\n","import { LoginResult, QueryModel, SendToModel } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\n\r\nexport interface EvolutionLoginResult extends LoginResult<EvolutionUserInfo> {\r\n // Compatibility\r\n token?: string;\r\n}\r\n\r\nexport interface EvolutionLoginInfo {\r\n context: EvolutionUserInfo;\r\n oauth?: LoginOAuthType ;\r\n remember?: boolean;\r\n}\r\n\r\nexport interface EvolutionUserLink {\r\n id?: number ;\r\n userId: number;\r\n userName?: string ;\r\n key: string;\r\n}\r\n\r\nexport interface EvolutionUserModuleInfo {\r\n name: string;\r\n module: number;\r\n level: number;\r\n hidden: boolean;\r\n}\r\n\r\n\r\nexport interface EvolutionLicenceModuleInfo {\r\n module: ERPModule;\r\n name: string;\r\n availableUsers: number;\r\n usedUsers: number;\r\n availableOption1?: number ;\r\n usedOption1?: number ;\r\n availableOption2?: number ;\r\n usedOption2?: number ;\r\n availableOption3?: number ;\r\n usedOption3?: number ;\r\n}\r\n\r\nexport interface EvolutionUserInfo {\r\n licenceId: number;\r\n userId: number;\r\n companyName: string;\r\n firstName: string;\r\n fullName: string;\r\n flags?: number ;\r\n email: string;\r\n sessionId?: string ;\r\n isTemporary?: boolean ;\r\n role: number;\r\n scope: number;\r\n roleName: string;\r\n roleLevel: number;\r\n allowedModules: EvolutionUserModuleInfo[];\r\n dashboard?: number ;\r\n dashboard2?: string ;\r\n code?: string ;\r\n subjectId?: number ;\r\n subjectName?: string ;\r\n siteId?: number ;\r\n siteName?: string ;\r\n siteCostCenter?: string ;\r\n departmentId?: number ;\r\n departmentName?: string ;\r\n expiryDate?: string ;\r\n isExpired?: boolean ;\r\n isAdministrator?: boolean ;\r\n isPowerUser?: boolean ;\r\n isObserver?: boolean ;\r\n isUser?: boolean ;\r\n isSupportUser?: boolean ;\r\n isGod?: boolean ;\r\n administrators: string;\r\n availableModules: EvolutionLicenceModuleInfo[];\r\n availableEmployees: number;\r\n usedEmployees: number;\r\n availableStorage: number;\r\n usedStorage: number;\r\n}\r\n\r\n\r\n\r\nexport enum EvolutionServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1\r\n\r\n}\r\n\r\nexport enum ERPModule {\r\n Formazione = 1,\r\n DPI = 1 << 1,\r\n SorveglianzaSanitaria = 1 << 2,\r\n RegistroEScadenzario = 1 << 3,\r\n AttrezzatureEImpianti = 1 << 4,\r\n Monitoraggio = 1 << 5,\r\n Bollettino = 1 << 6,\r\n Documenti = 1 << 7\r\n\r\n}\r\n\r\nexport interface EvolutionPlaceable {\r\n licenceId?: number ;\r\n companyName?: string ;\r\n subjectId?: number ;\r\n subjectName?: string ;\r\n siteId?: number ;\r\n siteName?: string ;\r\n departmentId?: number ;\r\n departmentName?: string ;\r\n placeId?: number ;\r\n}\r\n\r\nexport enum ERPExportType\r\n{\r\n Basic = 1,\r\n Detailed = 8,\r\n Complete = 9,\r\n Labels = 10,\r\n EmployeesCoursesMatrix = 21,\r\n EmployeesCoursesHoursMatrix = 22,\r\n EmployeesPPEsMatrix = 23,\r\n EmployeesHealthChecksMatrix = 24,\r\n TasksCoursesMatrix = 31,\r\n Training = 101,\r\n TrainingExpired = 102,\r\n TrainingExpiring = 103,\r\n TrainingAbsents = 104,\r\n TrainingClosed = 105,\r\n TrainingCurrentYear = 108,\r\n TrainingNextYear = 109,\r\n TrainingAnnualPlannng = 110,\r\n EquipmentsActivitiesCompleted = 201,\r\n EquipmentsChecksMatrix = 202,\r\n RSNormsUsage = 301,\r\n RSNormsSitesMatrix = 302,\r\n RSNormsSummary = 303,\r\n MonitoringLaws = 401,\r\n MonitoringActivities = 402,\r\n MonitoringSummary = 403,\r\n PPEs = 501,\r\n ComplianceStatistics = 601,\r\n HealthChecks = 701,\r\n}\r\n\r\nexport enum ERPExportFormat\r\n{\r\n Csv = 1,\r\n Word = 2,\r\n Pdf = 3\r\n}\r\n\r\nexport enum ERPExportSource\r\n{\r\n All = 1,\r\n Query = 2,\r\n Selection = 3\r\n}\r\n\r\nexport enum ERPExportPart\r\n{\r\n IncludeRisks = 101,\r\n IncludeTasks = 102,\r\n IncludeTaskHistory = 103,\r\n IncludeTrainingRequired = 111,\r\n IncludeTrainingDone = 112,\r\n SelectedEmployeeCourses = 121,\r\n IncludeDisabledEmployees = 131,\r\n IncludeDismissedEmployees = 132,\r\n IncludeDocumentUpdates = 201,\r\n ExcludeNonApplicableOrAcknowledged = 202,\r\n ExcluteAbblicabilityTable = 203,\r\n IncludeActivities = 204,\r\n GroupLaws = 205,\r\n IncludeApplicableOrAcknowledgedOnly = 4301,\r\n IncludePPEs = 501,\r\n IncludeHealthChecks = 601\r\n}\r\n\r\nexport interface EvolutionExportModel<T> extends SendToModel {\r\n searchParams: T;\r\n selection?: number[] ;\r\n type: ERPExportType;\r\n sort?: number ;\r\n source: ERPExportSource;\r\n format: ERPExportFormat;\r\n parts?: ERPExportPart[] ;\r\n automateReport?: boolean ;\r\n automatedReportId?: number ;\r\n automatedReportSheetName?: string;\r\n formatExtension?: string ; \r\n}\r\n\r\nexport enum ERPComplianceLawsSelectionType {\r\n Analysis = 1,\r\n Activity = 2,\r\n}\r\n\r\nexport enum ERPComplianceProfileRole {\r\n None = 0,\r\n Analyst = 1,\r\n Planner = 1 << 1,\r\n Validator = 1 << 2,\r\n Executor = 1 << 3,\r\n Observer = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceProfileFlags {\r\n\r\n OverrideNotificationRegisterSettings = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceScope {\r\n None = 0,\r\n Environment = 1,\r\n Safety = 1 << 1,\r\n FoodSafety = 1 << 2,\r\n Energy = 1 << 3,\r\n Health = 1 << 4,\r\n Maintenance = 1 << 5,\r\n Quality = 1 << 6,\r\n Organization = 1 << 7,\r\n Logistics = 1 << 8,\r\n Facility = 1 << 9,\r\n Security = 1 << 10,\r\n GenderEquality = 1 << 11,\r\n AntiCorruption = 1 << 12,\r\n Sustainability = 1 << 13,\r\n InformationSecurity = 1 << 14\r\n}\r\n\r\nexport enum ERPComplianceNotificationLimit {\r\n None = 0,\r\n PlannerOnly = 1,\r\n ExecutorOnly = 2,\r\n Both = 3,\r\n}\r\n\r\nexport enum ERPComplianceRegisterNotificationType {\r\n None = 0,\r\n NewAnalysis = 1,\r\n AnalysisCompleted = 1 << 1,\r\n AnalysisNoticePeriodStarted = 1 << 2,\r\n AnalysisPeriodExpired = 1 << 3,\r\n AnalysisLawChanged = 1 << 14,\r\n NewPlanning = 1 << 13,\r\n PlanningCompleted = 1 << 4,\r\n PlanningNoticePeriodStarted = 1 << 5,\r\n PlanningPeriodExpired = 1 << 6,\r\n NewValidation = 1 << 15,\r\n ValidationCompleted = 1 << 7,\r\n ValidationNoticePeriodStarted = 1 << 8,\r\n ValidationPeriodExpired = 1 << 9,\r\n NewDeadline = 1 << 16,\r\n DeadlineNoticePeriodStarted = 1 << 10,\r\n DeadlineExpired = 1 << 11,\r\n ActivityCompleted = 1 << 12,\r\n //NewNoncompliance = 1 << 17,\r\n //NonComplianceNoticePeriodStarted = 1 << 18,\r\n //NonCompliancePeriodExpired = 1 << 19,\r\n //NonComplianceCompleted = 1 << 20,\r\n LawChanged = 1 << 21,\r\n}\r\n\r\nexport enum ERPComplianceRegisterSiteImportOptions {\r\n CopyAttachments = 1,\r\n KeepOriginalDates = 1 << 1,\r\n DuplicateLaws = 1 << 2,\r\n DiscardNotApplicables = 1 << 3\r\n}\r\n\r\nexport const EvolutionComplianceProfileRoles = [\r\n { name: 'Analista', value: ERPComplianceProfileRole.Analyst },\r\n { name: 'Gestore', value: ERPComplianceProfileRole.Planner },\r\n //{ name: 'Validatore', value: ERPComplianceProfileRole.Validator },\r\n { name: 'Esecutore', value: ERPComplianceProfileRole.Executor },\r\n { name: 'Osservatore', value: ERPComplianceProfileRole.Observer },\r\n];\r\n\r\nexport const EvolutionComplianceProfileFlags = [\r\n { name: 'Deroghe e limitazioni', divider: true },\r\n {\r\n name:\r\n 'Questo profilo riceve regolarmente le notifiche indipendentemente dalla configurazione generale del registro',\r\n value: ERPComplianceProfileFlags.OverrideNotificationRegisterSettings,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceScopes = [\r\n { name: 'Ambiente', value: ERPComplianceScope.Environment },\r\n { name: 'Salute e sicurezza', value: ERPComplianceScope.Safety },\r\n {\r\n name: 'Sicurezza alimentare',\r\n value: ERPComplianceScope.FoodSafety,\r\n },\r\n { name: 'Energia', value: ERPComplianceScope.Energy },\r\n { name: 'Servizi generali', value: ERPComplianceScope.Facility },\r\n { name: 'Manutenzione', value: ERPComplianceScope.Maintenance },\r\n { name: 'Qualità', value: ERPComplianceScope.Quality },\r\n { name: 'Organizzazione', value: ERPComplianceScope.Organization },\r\n { name: 'Logistica', value: ERPComplianceScope.Logistics },\r\n { name: 'Security', value: ERPComplianceScope.Security },\r\n { name: \"Anticorruzione\", value: ERPComplianceScope.AntiCorruption },\r\n { name: \"Sostenibilità\", value: ERPComplianceScope.Sustainability },\r\n { name: \"Parità di genere\", value: ERPComplianceScope.GenderEquality },\r\n { name: \"Sicurezza dell'informazione\", value: ERPComplianceScope.InformationSecurity },\r\n\r\n];\r\n\r\nexport const EvolutionComplianceNotificationLimits = [\r\n { name: 'Nessuna limitazione', value: ERPComplianceNotificationLimit.None },\r\n {\r\n name: 'Solo gestore che ha pianificato',\r\n value: ERPComplianceNotificationLimit.PlannerOnly,\r\n },\r\n {\r\n name: \"Solo all'incaricato designato\",\r\n value: ERPComplianceNotificationLimit.ExecutorOnly,\r\n },\r\n {\r\n name: 'Solo a gestore e incaricato designato',\r\n value: ERPComplianceNotificationLimit.Both,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceNotifications = [\r\n { name: 'Verifica applicabilità e analisi', divider: true },\r\n {\r\n name: 'Richiesta analisi',\r\n value: ERPComplianceRegisterNotificationType.NewAnalysis,\r\n },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisPeriodExpired,\r\n },\r\n {\r\n name: 'Analisi completata',\r\n value: ERPComplianceRegisterNotificationType.AnalysisCompleted,\r\n },\r\n {\r\n name: 'Avviso norma modificata dal legislatore',\r\n value: ERPComplianceRegisterNotificationType.AnalysisLawChanged,\r\n },\r\n { name: 'Pianificazioni', divider: true },\r\n {\r\n name: 'Richiesta gestione',\r\n value: ERPComplianceRegisterNotificationType.NewPlanning,\r\n },\r\n {\r\n name: 'Preavviso: sta per scadere il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningPeriodExpired,\r\n },\r\n {\r\n name: 'Gestione completata',\r\n value: ERPComplianceRegisterNotificationType.PlanningCompleted,\r\n },\r\n {\r\n name: 'Attività completata',\r\n value: ERPComplianceRegisterNotificationType.ActivityCompleted,\r\n },\r\n /*{ name: 'Gestione non conformità', divider: true },\r\n {\r\n name: 'Apertura non comformità',\r\n value: ERPComplianceRegisterNotificationType.NewNoncompliance,\r\n },\r\n {\r\n name:\r\n \"Preavviso: sta per scadere il termine fissato per l'azione correttiva\",\r\n value:\r\n ERPComplianceRegisterNotificationType.NonComplianceNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'azione correttiva\",\r\n value: ERPComplianceRegisterNotificationType.NonCompliancePeriodExpired,\r\n },\r\n {\r\n name: 'Chiusura non conformità',\r\n value: ERPComplianceRegisterNotificationType.NonComplianceCompleted,\r\n },*/\r\n /*{ name: 'Approvazioni', divider: true },\r\n { name: 'Richiesta approvazione', value: 1 << 14 },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationPeriodExpired,\r\n },\r\n {\r\n name: 'Approvazione concessa o negata',\r\n value: ERPComplianceRegisterNotificationType.ValidationCompleted,\r\n },*/\r\n { name: 'Scadenze', divider: true },\r\n {\r\n name: 'Preavviso: 1° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.NewValidation,\r\n },\r\n {\r\n name: 'Avviso: 2° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.DeadlineNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine',\r\n value: ERPComplianceRegisterNotificationType.DeadlineExpired,\r\n },\r\n { name: 'Norme collegate', divider: true },\r\n {\r\n name: 'Modifica o abrogazione',\r\n value: ERPComplianceRegisterNotificationType.LawChanged,\r\n },\r\n\r\n];\r\n\r\nexport enum ERPComplianceLawState {\r\n ApplicableOrAknowledged = 1,\r\n NotApplicable = 2,\r\n NotAnalyzed = 3,\r\n ExpiredAnalysis = 4,\r\n UpdatedLaws = 5,\r\n Analyzed = 6,\r\n Abrogated = 7,\r\n Applicable = 8,\r\n Aknowledged = 9\r\n}\r\n\r\nexport enum ERPComplianceLawOrigin {\r\n National = 1,\r\n EU = 2,\r\n Regional = 3,\r\n Local = 4,\r\n Technical = 5,\r\n Voulontary = 6,\r\n Internal = 7,\r\n Other = 8,\r\n}\r\n\r\nexport const EvolutionComplianceLawStates = [\r\n { name: 'Applicabile', value: ERPComplianceLawState.Applicable },\r\n { name: 'Da conoscere', value: ERPComplianceLawState.Aknowledged },\r\n {\r\n name: 'Applicabile / da conoscere',\r\n value: ERPComplianceLawState.ApplicableOrAknowledged,\r\n },\r\n { name: 'Non applicabile', value: ERPComplianceLawState.NotApplicable },\r\n { name: 'Abrogata', value: ERPComplianceLawState.Abrogated },\r\n { name: 'Analizzata', value: ERPComplianceLawState.Analyzed },\r\n { name: 'Da definire', value: ERPComplianceLawState.NotAnalyzed },\r\n { name: 'In ritardo', value: ERPComplianceLawState.ExpiredAnalysis },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceLawState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceLawOrigins = [\r\n { name: 'Nazionale', value: ERPComplianceLawOrigin.National },\r\n { name: 'Comunitaria', value: ERPComplianceLawOrigin.EU },\r\n { name: 'Regionale', value: ERPComplianceLawOrigin.Regional },\r\n { name: 'Locale', value: ERPComplianceLawOrigin.Local },\r\n { name: 'Tecnica', value: ERPComplianceLawOrigin.Technical },\r\n { name: 'Interna', value: ERPComplianceLawOrigin.Internal },\r\n { name: 'Volontaria', value: ERPComplianceLawOrigin.Voulontary },\r\n { name: 'Altro', value: ERPComplianceLawOrigin.Other },\r\n];\r\n\r\nexport const EvolutionComplianceLawChangeStates = [\r\n { name: 'Aperto', value: 1 },\r\n { name: 'Chiuso', value: 2 },\r\n];\r\n\r\nexport enum ERPComplianceActivityState {\r\n NotPlanned = 1 << 7,\r\n Closed = 1 << 2,\r\n Expired = 1 << 3,\r\n Planned = 1 << 8,\r\n Cancelled = 1 << 9,\r\n UpdatedLaws = 1 << 10,\r\n AlreadyManaged = 1 << 11\r\n}\r\n\r\nexport const EvolutionComplianceActivityStates = [\r\n {\r\n name: 'Da definire',\r\n value: ERPComplianceActivityState.NotPlanned,\r\n },\r\n {\r\n name: 'Pianificata',\r\n value: ERPComplianceActivityState.Planned,\r\n },\r\n {\r\n name: 'Chiusa',\r\n value: ERPComplianceActivityState.Closed,\r\n },\r\n {\r\n name: 'In ritardo',\r\n value: ERPComplianceActivityState.Expired,\r\n },\r\n {\r\n name: 'Annullata',\r\n value: ERPComplianceActivityState.Cancelled,\r\n },\r\n {\r\n name: 'Gestita separatamente',\r\n value: ERPComplianceActivityState.AlreadyManaged,\r\n },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceActivityState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceObligationTypes = [\r\n { name: 'Autorizzazione', value: 1 },\r\n { name: 'Verifiche periodiche manutentive', value: 2 },\r\n { name: 'Misure organizzative', value: 3 },\r\n { name: 'Controlli e misurazioni', value: 4 },\r\n { name: 'Entrata in vigore', value: 5 },\r\n { name: 'Documenti aziendali obbligatori', value: 6 },\r\n {\r\n name: 'Altri adempimenti formali (comunicazioni, dichiarazioni, ecc...)',\r\n value: 7,\r\n },\r\n { name: 'Altro', value: 99 },\r\n];\r\n\r\nexport const EvolutionComplianceObligationAuthorities = [\r\n { name: 'Agenzia ECHA', value: 1 },\r\n { name: 'Albo Nazionale dei Gestori Ambientali', value: 2 },\r\n { name: 'ARPA', value: 4 },\r\n { name: 'ASL', value: 5 },\r\n { name: 'Camera di Commercio', value: 8 },\r\n { name: 'Comando provinciale dei Vigili del Fuoco', value: 10 },\r\n { name: 'Comune', value: 13 },\r\n { name: 'Consorzi gestione rifiuti particolari', value: 14 },\r\n { name: 'Gestore del servizio', value: 21 },\r\n { name: 'Gestore della rete di trasmissione nazionale', value: 22 },\r\n { name: 'INAIL - IPSEMA - ISPESL', value: 23 },\r\n { name: 'ISPRA', value: 26 },\r\n { name: 'Ministero', value: 27 },\r\n { name: 'Genio civile', value: 30 },\r\n { name: 'Organo di vigilanza competente', value: 31 },\r\n { name: 'Provincia', value: 33 },\r\n { name: 'Regione', value: 35 },\r\n { name: 'Uffici tecnici di finanza', value: 36 },\r\n { name: 'Ispettorato del lavoro', value: 37 },\r\n { name: 'Comitato Regionale Tecnico VF', value: 38 },\r\n { name: 'Prefetto', value: 39 },\r\n { name: 'Organismo notificato', value: 40 },\r\n { name: 'Città Metropolitana', value: 41 },\r\n { name: 'Nessuna', value: 28 },\r\n { name: 'Altro', value: 3 }\r\n];\r\n\r\nexport enum ERPRecurrenceFrequencyType {\r\n Day = 1,\r\n Month = 2,\r\n Year = 3,\r\n}\r\nexport const EvolutionRecurrenceFrequencyTypes = [\r\n { name: 'Anni', value: ERPRecurrenceFrequencyType.Year },\r\n { name: 'Mesi', value: ERPRecurrenceFrequencyType.Month },\r\n { name: 'Giorni', value: ERPRecurrenceFrequencyType.Day },\r\n];\r\n\r\nexport enum ERPPlacePermission {\r\n None = 0,\r\n Denied = 1,\r\n Read = 2,\r\n Write = 3\r\n}\r\n\r\nexport enum ERPPlace {\r\n Subject = 1,\r\n Site = 2,\r\n Department = 3,\r\n Area = 4,\r\n Line = 5\r\n}\r\nexport interface EvolutionPermission {\r\n placeId: number;\r\n userId: number;\r\n allowRead: number;\r\n allowWrite: number;\r\n allowNone: number;\r\n}\r\n\r\nexport interface EvolutionPlacePermission extends EvolutionPermission {\r\n id: number;\r\n subjectId?: number;\r\n siteId?: number;\r\n departmentId?: number;\r\n mode: number;\r\n}\r\n\r\nexport interface EvolutionContextInfo {\r\n id: number;\r\n userId?: number;\r\n name: string;\r\n permission: EvolutionPermission;\r\n placePermission: ERPPlacePermission;\r\n costCenter: string;\r\n selected?: boolean;\r\n level?: number;\r\n levelTitle?: string;\r\n}\r\n\r\nexport class EvolutionComplianceContextInfo {\r\n licenceId?: number;\r\n licencedCompany?: string;\r\n registerTitle?: string;\r\n registerId?: number;\r\n siteName?: string;\r\n siteId?: number;\r\n userId?: number;\r\n items?: EvolutionContextInfo[];\r\n}\r\n\r\nexport interface EvolutionChangeContextModel {\r\n userId?: number ;\r\n licenceId?: number ;\r\n subjectId?: number ;\r\n siteId?: number ;\r\n registerId?: number ;\r\n role?: ERPComplianceProfileRole ;\r\n permission?: ERPPlacePermission ;\r\n option1Value?: number ;\r\n option2Value?: number ;\r\n option3Value?: number ;\r\n allowObservers?: boolean ;\r\n allowDisabled?: boolean ;\r\n}\r\n\r\nexport interface EvolutionChangeContextResultModel {\r\n items: EvolutionContextInfo[];\r\n}\r\n\r\nexport interface EvolutionComplianceRegister extends EvolutionPlaceable {\r\n id: number;\r\n title?: string;\r\n enableNotifications?: boolean;\r\n enableNotification1?: boolean;\r\n enableNotification2?: boolean;\r\n enableNotification3?: boolean;\r\n enableNotification4?: boolean;\r\n enableNotification5?: boolean;\r\n enableNotification7?: boolean;\r\n enableNotification8?: boolean;\r\n enableNotification9?: boolean;\r\n notification1NoticeDays?: number;\r\n notification2NoticeDays?: number;\r\n notification2Limit?: number;\r\n notification3NoticeDays?: number;\r\n notification4NoticeDays?: number;\r\n notification4Limit?: number;\r\n notification5NoticeDays?: number;\r\n notification5Limit?: number;\r\n notification6Limit?: number;\r\n notification8NoticeDays?: number;\r\n notification8Limit?: number;\r\n enableActivityLawsPopulation?: boolean;\r\n enableLawChangesTracking?: boolean;\r\n automationMode?: number;\r\n automationScope?: number;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n totalSites?: number;\r\n totalProfiles?: number;\r\n sites?: EvolutionComplianceRegisterSite[];\r\n oldId?: string;\r\n isAutomationEnabled?: boolean;\r\n automationModeDescription?: string;\r\n automationScopeDescription?: string;\r\n context?: EvolutionComplianceContextInfo;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n}\r\n\r\nexport interface EvolutionRegisterProfileSiteInfo extends EvolutionContextInfo {\r\n\r\n}\r\n\r\nexport interface EvolutionRegisterProfileUserInfo {\r\n userId: number;\r\n name: string;\r\n sites: EvolutionRegisterProfileSiteInfo[];\r\n}\r\n\r\nexport interface ComplianceRegisterUsersResultModel {\r\n users: EvolutionRegisterProfileUserInfo[];\r\n sites: EvolutionRegisterProfileSiteInfo[];\r\n}\r\n\r\nexport interface EvolutionComplianceRegisterSite {\r\n id: number;\r\n complianceRegisterId?: number;\r\n complianceSiteId?: number;\r\n disabled?: boolean;\r\n created?: Date;\r\n licenceId?: number;\r\n subjectId?: number;\r\n subjectName: string;\r\n siteId?: number;\r\n siteName?: string;\r\n departmentId?: number;\r\n departmentName?: string;\r\n registerTitle?: string;\r\n placeId?: number;\r\n oldSiteId?: string;\r\n}\r\n\r\nexport interface EvolutionComplianceLaw extends EvolutionPlaceable {\r\n id?: number;\r\n state?: number;\r\n complianceRegisterId?: number;\r\n lot?: number;\r\n topicId?: string;\r\n topicPath?: string;\r\n topicName?: string;\r\n summary?: string;\r\n scope?: number;\r\n source?: string;\r\n references?: EvolutionComplianceLawReference[];\r\n originalLawId?: number ;\r\n originRegion?: string ;\r\n origin?: number ;\r\n originAlternativeDescription?: string ;\r\n description?: string ;\r\n documentShortTitle?: string ;\r\n documentTitle?: string ;\r\n documentNumber?: string ;\r\n documentDate?: Date ;\r\n documentLastUpdate?: string ;\r\n documentLastUpdateShortTitle?: string ;\r\n documentUpdateNotes?: string ;\r\n documentValidated?: boolean ;\r\n documentId?: string ;\r\n documentModel?: number ;\r\n documentReferences?: string ;\r\n documentNotes?: string ;\r\n documentForceGlobalCheckForUpdates?: boolean;\r\n complianceCheckItem1?: boolean ;\r\n complianceCheckItem2?: boolean ;\r\n complianceCheckItem3?: boolean ;\r\n complianceCheckItem4?: boolean ;\r\n complianceCheckItem5?: boolean ;\r\n complianceCheckItem6?: boolean ;\r\n complianceCheckItem7?: boolean ;\r\n complianceCheckItem8?: boolean ;\r\n complianceCheckItem9?: boolean ;\r\n complianceCheckItem10?: boolean ;\r\n complianceCheckItem11?: boolean ;\r\n complianceCheckItem12?: boolean ;\r\n alternativeComplianceCheckItem?: boolean ;\r\n alternativeComplianceDescription?: string ;\r\n applicability?: number ;\r\n analyzedBy?: string ;\r\n analystOperatorId?: number ;\r\n analysisExpiringDate?: Date ;\r\n analysisDate?: Date ;\r\n analysisNotes?: string ;\r\n analysisNoticeDate?: string ;\r\n group1?: string ;\r\n group2?: string ;\r\n count?: number ;\r\n created?: Date ;\r\n createdBy?: string ;\r\n lastUpdated?: Date ;\r\n lastUpdatedBy?: string ;\r\n}\r\n\r\nexport interface EvolutionQueryRegisterProfilesModel extends QueryModel {\r\n complianceRegisterId?: number;\r\n siteId?: number;\r\n userId?: number;\r\n licenceId?: number;\r\n name?: string;\r\n role?: number;\r\n allowObservers?: boolean;\r\n allowDisabled?: boolean;\r\n state?: number;\r\n}\r\n\r\nexport interface EvolutionComplianceRegisterProfile {\r\n id: number;\r\n licenceId?: number;\r\n userId?: number;\r\n passiveUserName?: string;\r\n passiveUserOperatorId?: number;\r\n complianceRegisterId?: number;\r\n complianceSiteId?: number;\r\n scopes?: number;\r\n selectedScopes?: number[];\r\n roles?: number;\r\n selectedRoles?: number[];\r\n notifications?: number;\r\n flags?: number;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n subjectId?: number;\r\n subjectName?: string;\r\n siteId?: number;\r\n siteName?: string;\r\n siteDisabled?: boolean;\r\n departmentId?: number;\r\n departmentName?: string;\r\n passiveUserEmail?: string;\r\n placeId?: number;\r\n userEmail?: string;\r\n userOperatorId?: number;\r\n userDisabled?: boolean;\r\n registerDisabled?: boolean;\r\n registerTitle?: string;\r\n name?: string;\r\n scopeNames?: string;\r\n isAdministrator?: boolean;\r\n isObserver?: boolean;\r\n denied?: boolean;\r\n oldId?: string;\r\n operatorId?: number;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n context?: EvolutionComplianceContextInfo;\r\n}\r\nexport interface EvolutionComplianceLawDocumentInfo {\r\n documentId?: string;\r\n documentId2?: string;\r\n title2?: string;\r\n title1?: string;\r\n number?: string;\r\n date?: Date;\r\n origin?: number;\r\n originDescription?: string;\r\n originAlternativeDescription?: string;\r\n originRegion?: string;\r\n notes?: string;\r\n references?: EvolutionComplianceLawReference[];\r\n forceGlobalCheckForUpdates?: boolean;\r\n validated?: boolean;\r\n description?: string;\r\n}\r\n\r\nexport interface EvolutionComplianceLawsAddParams extends EvolutionComplianceLaw {\r\n context?: EvolutionComplianceContextInfo;\r\n documents?: EvolutionComplianceLawDocumentInfo[];\r\n shouldNotifyAnalysisCompletionAgain?: boolean;\r\n scopes?: number[];\r\n sites?: number[];\r\n registers?: number[];\r\n}\r\n\r\nexport interface EvolutionComplianceLaswExportParams extends EvolutionExportModel<any> {}\r\n\r\nexport interface EvolutionComplianceLawReference {\r\n id?: number ;\r\n complianceLawId?: number ;\r\n text: string;\r\n description?: string ;\r\n anchor: string;\r\n}\r\n\r\nexport interface EvolutionComplianceActivity extends EvolutionPlaceable {\r\n id: number;\r\n state: number;\r\n monitoringActivityId?: number;\r\n monitoringActivityTaskId?: number;\r\n complianceRegisterId?: number;\r\n childId?: number ;\r\n parentId?: number ;\r\n lot?: number ; \r\n summary?: string;\r\n scope?: number;\r\n topicId?: string ;\r\n topicPath?: string;\r\n topicName?: string;\r\n mandatory?: boolean ;\r\n obligationType?: number ;\r\n obligationAuthorityId?: number ;\r\n obligationNotes?: string;\r\n obligationCheckPoint?: boolean ;\r\n description?: string;\r\n deadlineRecurrent?: boolean ;\r\n deadlineFrequency?: number ;\r\n deadlineFrequencyType?: number ;\r\n deadlineFrequencyEndOfMonth?: boolean ;\r\n deadlineFirstNoticeDays?: number ;\r\n deadlineLastNoticeDays?: number ;\r\n deadlineFirstNoticeDate?: Date ;\r\n deadlineLastNoticeDate?: Date ;\r\n deadlineExpiringDate?: Date ;\r\n planningNoticeDate?: Date ;\r\n planningExpiringDate?: Date ;\r\n planningDate?: Date ;\r\n plannedBy?: string;\r\n plannerOperatorId?: number ;\r\n planningApplicability?: number ;\r\n planningNotificationAdditionalEmailHeader?: string;\r\n planningNotificationAdditionalEmails?: string;\r\n planningNotificationAdditionalEmailsForAlertsOnly?: string;\r\n planningNamedExecutorOperatorId?: number ;\r\n planningNamedExecutorName?: string;\r\n planningNamedExecutorManagerOperatorId?: number ;\r\n planningNamedExecutorManagerName?: string;\r\n planningScheduleNextFromExecutionDate?: boolean ;\r\n planningNotes?: string;\r\n executorOperatorId?: number ;\r\n executed?: boolean;\r\n executedBy?: string;\r\n executionDate?: Date;\r\n externalReference?: string;\r\n externalDescription?: string;\r\n group1?: string;\r\n group2?: string;\r\n notes?: string;\r\n created?: Date;\r\n createdBy?: string;\r\n lastUpdated?: Date ;\r\n lastUpdatedBy?: string;\r\n\r\n}\r\n\r\nexport interface EvolutionComplianceActivitiesAddParams extends EvolutionComplianceActivity {\r\n context?: EvolutionComplianceContextInfo;\r\n complianceLawId?: number;\r\n monitoringLawId?: number;\r\n enableLawChangesTracking?: boolean;\r\n enableActivityLawsPopulation?: boolean;\r\n shouldNotifyPlanningCompletionAgain?: boolean;\r\n scopes?: number[];\r\n sites?: number[];\r\n registers?: number[];\r\n document?: EvolutionComplianceLawDocumentInfo;\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { inject, Injectable, OnDestroy, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastMessageInfo, BroadcastService, FolderTree, INode, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { EMPTY, of, Subscription, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\nimport { EvolutionChangeContextModel, EvolutionChangeContextResultModel, EvolutionComplianceActivitiesAddParams, EvolutionComplianceActivity, EvolutionComplianceLaw, EvolutionComplianceLawsAddParams, EvolutionComplianceRegister, EvolutionComplianceRegisterProfile, EvolutionLoginInfo, EvolutionLoginResult, EvolutionQueryRegisterProfilesModel, EvolutionServiceFlags, EvolutionUserLink } from './../definitions';\r\nimport { EvolutionMessages } from '../messages';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EvolutionService implements OnDestroy {\r\n\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private broadcastServiceSubscription?: Subscription;\r\n private dialogService = inject(DialogService);\r\n\r\n private _serviceUri: string = undefined;\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n private _flags: EvolutionServiceFlags = EvolutionServiceFlags.None;\r\n get flags(): EvolutionServiceFlags {\r\n return this._flags;\r\n }\r\n private _loginInfo?: EvolutionLoginInfo;\r\n get loginInfo(): EvolutionLoginInfo | undefined {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('evolution_context');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as EvolutionLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n public readonly loggedIn = signal<boolean>(false);\r\n public readonly loggingIn = signal<boolean>(false);\r\n private keepAlive = 0;\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n this.removeKeepAlive();\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param flags: the service flags. Default is none.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n flags: EvolutionServiceFlags = EvolutionServiceFlags.None) {\r\n // Create unique client id\r\n if (!localStorage.getItem('evolution_client_id')) {\r\n localStorage.setItem('evolution_client_id', SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message: BroadcastMessageInfo) => {\r\n if (message.id === EvolutionMessages.LOGIN_CHANGED) {\r\n this.login(\r\n null,\r\n null,\r\n true).subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(\r\n \"Le credenziali di accesso sono cambiate o non sono più valide. Esegui un nuovo accesso.\",\r\n undefined,\r\n \"Errore di Evolution\");\r\n } else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Connesso a Evolution', 1500, 'power');\r\n }\r\n }\r\n },\r\n error: () => { console.error(\"Evolution non disponibile.\") } // Avoid unwanted errors on client\r\n });\r\n } else if (message.id === EvolutionMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout().subscribe(r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(\"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Evolution accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\", null, \"Errore di Evolution\");\r\n }\r\n } else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n const tokenExpirationDate = this.getTokenExpirationDate();\r\n const tokenExpired = !tokenExpirationDate || tokenExpirationDate.getTime() < Date.now();\r\n if (!tokenExpired || this.loggedIn()) {\r\n // Auto login\r\n this.loggedIn.set(true);\r\n this.loggingIn.set(false);\r\n // Keep alive\r\n this.setKeepAlive();\r\n // Notify \r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n }\r\n\r\n /**\r\n * Get access token expiration date\r\n */\r\n private getTokenExpirationDate(): Date | undefined {\r\n const token = this.getAuthToken();\r\n if (!token) return undefined;\r\n // Parse json object from base64 encoded jwt token\r\n const jwtToken = JSON.parse(atob(token.split('.')[1]));\r\n // Set a timeout to refresh the token a minute before it expires\r\n return new Date(jwtToken.exp * 1000);\r\n }\r\n\r\n\r\n /**\r\n * Set keep alive\r\n */\r\n private setKeepAlive() {\r\n // Keep alive every 1 min\r\n if (this.keepAlive === 0) {\r\n this.keepAlive = window.setInterval(\r\n () => {\r\n this.ping();\r\n }, 1000 * 60 * 5);\r\n }\r\n }\r\n\r\n /**\r\n * Remove keep alive\r\n */\r\n private removeKeepAlive() {\r\n if (this.keepAlive > 0) {\r\n window.clearInterval(this.keepAlive);\r\n this.keepAlive = 0;\r\n }\r\n }\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n\r\n\r\n /**\r\n* Set auth token\r\n* @param value : the login result\r\n*/\r\n private setToken(value: EvolutionLoginResult) {\r\n if (value.authToken ?? value.token) {\r\n sessionStorage.setItem('evolution_auth', value.authToken ?? value.token);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Return current auth token\r\n */\r\n getAuthToken(): string | undefined {\r\n let token = sessionStorage.getItem('evolution_auth');\r\n if (token && token[0] === '\"') {\r\n return token.substring(1, token.length - 1);\r\n }\r\n return token;\r\n }\r\n\r\n /**\r\n * Store login info\r\n */\r\n storeContext() {\r\n localStorage.setItem('evolution_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n\r\n /**\r\n * Update context\r\n * @param result: the new context\r\n */\r\n updateContext(result: EvolutionLoginResult) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.context = result.context\r\n this.setToken(result);\r\n this.storeContext();\r\n }\r\n\r\n /**\r\n * Perform auto login using current link data\r\n * @param onSuccess: function to execute on seccess\r\n */\r\n autoLogin(onSuccess?: Function) {\r\n this.login(null, null, true)\r\n .pipe(finalize(() => this.dialogService.clearBusy()))\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n } else {\r\n if (!r.value.requiresMfa) {\r\n this.dialogService.toast('Connesso ad Evolution', 1500, 'power');\r\n }\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n },\r\n error: () => { this.dialogService.error(\"Evolution non disponibile.\") }\r\n });\r\n return true;\r\n }\r\n\r\n /**\r\n * Perform auto logout\r\n * @param onSuccess: function to execute on seccess\r\n */\r\n autoLogout(onSuccess?: Function) {\r\n this.logout()\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n }\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_CHANGED);\r\n } else {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n },\r\n error: () => { },\r\n complete: () => {\r\n this.dialogService.clearBusy()\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Perform login \r\n * @param email: the optional email if using OAuth2\r\n * @parma password: the optional password if using OAuth2\r\n * @param remember: remember credentials \r\n * @param oauth: the optional open authentication supported\r\n * @param oauthAccessToken: the optional OAuth2 access token\r\n */\r\n login(email?: string,\r\n password?: string,\r\n remember?: boolean,\r\n oauth?: LoginOAuthType,\r\n oauthAccessToken: string | undefined = sessionStorage.getItem(\"evolution_oauth_token\") ?? undefined) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login2',\r\n {\r\n clientId: localStorage.getItem(\"evolution_client_id\"),\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n remember: remember,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth || !oauthAccessToken\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken ?? '')\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n if (r.success) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined }\r\n }\r\n this._loginInfo.oauth = oauth;\r\n this._loginInfo.remember = remember;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_PENDING, {});\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Complete login\r\n * @param result : the login result\r\n */\r\n private completeLogin(\r\n result: EvolutionLoginResult) {\r\n // Update context info \r\n this.updateContext(result);\r\n this.loggedIn.set(!result.context?.isTemporary);\r\n this.loggingIn.set(false);\r\n // Keep alive\r\n this.setKeepAlive();\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n\r\n /**\r\n * Confirm MFA procedure\r\n * @param code: the confirm code\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n if (r.success) {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Perform logout\r\n * @param forget: true to dispose all user informations\r\n */\r\n logout(forget: boolean = false) {\r\n return this.httpClient.post<any>(this._serviceUri + '/logout/?forget=' + forget, {})\r\n .pipe(\r\n finalize(() => {\r\n this.removeKeepAlive();\r\n this.clear();\r\n // Clean up\r\n localStorage.removeItem('evolution_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n }\r\n\r\n\r\n /**\r\n * Switch the current login to a new one with the same credentials except role possibly (context change)\r\n * @param id : new user id\r\n */\r\n loginSwitch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login/switch',\r\n {\r\n clientId: localStorage.getItem(\"evolution_client_id\"),\r\n userId: id,\r\n }\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n if (r.success) {\r\n // Update login\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Reset login refresh timer and login state\r\n */\r\n reset() {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n // Logged out\r\n this.loggedIn.set(false);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n * @param clearOAuthToken: true to clear oauth token also\r\n */\r\n clear(clearOAuthToken: boolean = false) {\r\n // Clear local storage\r\n sessionStorage.removeItem('evolution_auth');\r\n sessionStorage.removeItem('evolution_refresh');\r\n sessionStorage.removeItem('evolution_oauth');\r\n if (clearOAuthToken) {\r\n sessionStorage.removeItem('evolution_oauth_token');\r\n }\r\n\r\n // Reset login\r\n this.reset();\r\n }\r\n\r\n /**\r\n * Perform token refresh\r\n */\r\n refresh() {\r\n return this.httpClient.get<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/refresh2'\r\n ).pipe(map((r: ApiResult<EvolutionLoginResult>) => {\r\n // Update token\r\n this.setToken(r.value);\r\n return r;\r\n }));\r\n }\r\n\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n */\r\n toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, null);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n */\r\n private _toNodes(folders: INode[], parent?: INode): INode[] {\r\n let nodes: INode[] = [];\r\n folders.forEach(n => {\r\n let node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: null,\r\n bag: n,\r\n };\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this._toNodes(n.children, node)\r\n : [];\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Retrieve the taxonomy\r\n */\r\n getTaxonomy() {\r\n return this.httpClient.get<ApiResult<FolderTree>>(\r\n this._serviceUri + '/taxonomy'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve groups\r\n * @param group: the group number\r\n * @param register: the optional register id. Default is null.\r\n */\r\n getGroups(group: number = 1, register?: number) {\r\n return this.httpClient.get<ApiResult<string[]>>(\r\n this._serviceUri +\r\n (register\r\n ? '/compliance/groups/?group=' +\r\n group +\r\n '&register=' +\r\n register\r\n : '/compliance/groups/?group=' + group)\r\n );\r\n }\r\n\r\n ////\r\n // CONTEXT\r\n ////\r\n /**\r\n * Change context\r\n */\r\n changeContext(params: EvolutionChangeContextModel) {\r\n return this.httpClient.post<ApiResult<EvolutionChangeContextResultModel>>(\r\n this._serviceUri + '/compliance/context',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // REGISTERS\r\n ////\r\n\r\n\r\n /**\r\n * Retrieve a register\r\n * @param id the register id\r\n */\r\n getRegister(id: number) {\r\n return this.httpClient.get<ApiResult<EvolutionComplianceRegister>>(\r\n this._serviceUri +\r\n '/compliance/registers/' + id\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Collect register profiles\r\n * @param params parameters\r\n */\r\n collectRegisterProfiles(params: EvolutionQueryRegisterProfilesModel) {\r\n return this.httpClient.post<ApiResult<EvolutionComplianceRegisterProfile[]>>(\r\n this._serviceUri +\r\n '/compliance/registers/profiles/collect',\r\n params\r\n );\r\n }\r\n\r\n\r\n ////\r\n // LAWS\r\n ////\r\n\r\n /**\r\n * Add one or more laws\r\n * @param params parameters\r\n */\r\n addLaws(params: EvolutionComplianceLawsAddParams) {\r\n return this.httpClient.post<ApiResult<EvolutionComplianceLaw[]>>(\r\n this._serviceUri + '/compliance/laws/add',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // ACTIVITIES\r\n ////\r\n\r\n\r\n\r\n /**\r\n * Add one or more activities\r\n * @param params parameters\r\n */\r\n addActivities(params: EvolutionComplianceActivitiesAddParams) {\r\n return this.httpClient.post<ApiResult<EvolutionComplianceActivity>>(\r\n this._serviceUri + '/compliance/activities/add',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Export laws\r\n * @param params parameters\r\n */\r\n exportLaws(params: any) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/compliance/laws/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n ///\r\n // LINKS\r\n ///\r\n\r\n /**\r\n * Save a user link\r\n * @param item: the user link\r\n */\r\n saveLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Delete a user link\r\n * @param item: the user link\r\n */\r\n deleteLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, catchError, switchMap, throwError } from 'rxjs';\r\nimport { EvolutionService } from '../services/evolution.service';\r\nimport { EvolutionServiceFlags } from '../definitions';\r\nimport { EvolutionMessages } from '../messages';\r\n\r\n\r\n@Injectable()\r\nexport class EvolutionAuthInterceptor implements HttpInterceptor {\r\n private evolutionService = inject(EvolutionService);\r\n private broadcastService = inject(BroadcastService);\r\n private lastErrorTime: number = -1;\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (request.url.startsWith(this.evolutionService.serviceUri ?? '')) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(this.addTokenToRequest(request))\r\n .pipe(\r\n catchError(error => {\r\n if (error.url.startsWith(this.evolutionService.serviceUri)) {\r\n if (\r\n error instanceof HttpErrorResponse &&\r\n !request.url.includes(\"/login\") &&\r\n error.status === 401\r\n ) {\r\n return this.handle401Error(request, next);\r\n }\r\n const errorStatus = parseInt(error.status ?? \"0\");\r\n if ((errorStatus > 0 && errorStatus < 500) || (this.evolutionService.flags & EvolutionServiceFlags.NotifySystemErrors) > 0) {\r\n const errorTime = new Date().getTime();\r\n if (errorTime - this.lastErrorTime > 5000) {\r\n this.lastErrorTime = errorTime;\r\n let message = \"\"\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento Evolution non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (error.error?.message ?? error.message ?? \"Impossibile eseguire l'operazione richiesta.\").replaceAll(\"\\r\\n\", \"</p><p>\");\r\n break;\r\n }\r\n this.broadcastService.sendMessage(\r\n EvolutionMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message: message,\r\n title: \"Errore in Clipper\",\r\n errorStatus: errorStatus,\r\n service: this.evolutionService.serviceUri\r\n } as ErrorInfo);\r\n }\r\n }\r\n }\r\n return throwError(() => error);\r\n }));\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Handle 401 error\r\n * @param request : the request\r\n * @param next : the http handler\r\n */\r\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\r\n if (this.evolutionService.loggedIn()) {\r\n return this.evolutionService.refresh().pipe(\r\n switchMap(() => {\r\n return next.handle(this.addTokenToRequest(request));\r\n }),\r\n catchError(error => {\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n /**\r\n * Add token to request\r\n * @param request : the request\r\n * @param token: the token or null to use curre3nt\r\n */\r\n private addTokenToRequest(\r\n request: HttpRequest<any>,\r\n token?: string\r\n ): HttpRequest<any> {\r\n if (request.url.startsWith(this.evolutionService.serviceUri ?? '')) {\r\n if (this.evolutionService.loggedIn()) {\r\n if (!token) token = this.evolutionService.getAuthToken();\r\n if (token) {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: 'Bearer ' + token,\r\n 'ngsw-bypass': 'ngsw-bypass'\r\n },\r\n });\r\n }\r\n }\r\n }\r\n return request;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class EvolutionCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/evolution.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\n\r\nexport * from './common/common.module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-evolution.common.mjs","sources":["../../../projects/ars-utils/evolution.common/common/messages.ts","../../../projects/ars-utils/evolution.common/common/definitions.ts","../../../projects/ars-utils/evolution.common/common/services/evolution.service.ts","../../../projects/ars-utils/evolution.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/evolution.common/common/common.module.ts","../../../projects/ars-utils/evolution.common/public_api.ts","../../../projects/ars-utils/evolution.common/arsedizioni-ars-utils-evolution.common.ts"],"sourcesContent":["export const EvolutionMessages = {\r\n // Error\r\n ERROR: '§evo-error',\r\n\r\n // Login\r\n LOGIN_CHANGED: '§evo-login-changed',\r\n LOGIN_COMPLETED: '§evo-login-completed',\r\n LOGOUT_COMPLETED: '§evo-logout-completed',\r\n LOGIN_PENDING: '§evo-login-pending',\r\n LOGOUT: '§evo-logout'\r\n};\r\n","import { LoginResult, QueryModel, SendToModel } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\n\r\nexport interface EvolutionLoginResult extends LoginResult<EvolutionUserInfo> {\r\n}\r\n\r\nexport interface EvolutionLoginInfo {\r\n context: EvolutionUserInfo;\r\n oauth?: LoginOAuthType ;\r\n remember?: boolean;\r\n}\r\n\r\nexport interface EvolutionUserLink {\r\n id?: number ;\r\n userId: number;\r\n userName?: string ;\r\n key: string;\r\n}\r\n\r\nexport interface EvolutionUserModuleInfo {\r\n name: string;\r\n module: number;\r\n level: number;\r\n hidden: boolean;\r\n}\r\n\r\n\r\nexport interface EvolutionLicenceModuleInfo {\r\n module: ERPModule;\r\n name: string;\r\n availableUsers: number;\r\n usedUsers: number;\r\n availableOption1?: number ;\r\n usedOption1?: number ;\r\n availableOption2?: number ;\r\n usedOption2?: number ;\r\n availableOption3?: number ;\r\n usedOption3?: number ;\r\n}\r\n\r\nexport interface EvolutionUserInfo {\r\n licenceId: number;\r\n userId: number;\r\n companyName: string;\r\n firstName: string;\r\n fullName: string;\r\n flags?: number ;\r\n email: string;\r\n sessionId?: string ;\r\n isTemporary?: boolean ;\r\n role: number;\r\n scope: number;\r\n roleName: string;\r\n roleLevel: number;\r\n allowedModules: EvolutionUserModuleInfo[];\r\n dashboard?: number ;\r\n dashboard2?: string ;\r\n code?: string ;\r\n subjectId?: number ;\r\n subjectName?: string ;\r\n siteId?: number ;\r\n siteName?: string ;\r\n siteCostCenter?: string ;\r\n departmentId?: number ;\r\n departmentName?: string ;\r\n expiryDate?: string ;\r\n isExpired?: boolean ;\r\n isAdministrator?: boolean ;\r\n isPowerUser?: boolean ;\r\n isObserver?: boolean ;\r\n isUser?: boolean ;\r\n isSupportUser?: boolean ;\r\n isGod?: boolean ;\r\n administrators: string;\r\n availableModules: EvolutionLicenceModuleInfo[];\r\n availableEmployees: number;\r\n usedEmployees: number;\r\n availableStorage: number;\r\n usedStorage: number;\r\n}\r\n\r\n\r\n\r\nexport enum EvolutionServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1\r\n\r\n}\r\n\r\nexport enum ERPModule {\r\n Formazione = 1,\r\n DPI = 1 << 1,\r\n SorveglianzaSanitaria = 1 << 2,\r\n RegistroEScadenzario = 1 << 3,\r\n AttrezzatureEImpianti = 1 << 4,\r\n Monitoraggio = 1 << 5,\r\n Bollettino = 1 << 6,\r\n Documenti = 1 << 7\r\n\r\n}\r\n\r\nexport interface EvolutionPlaceable {\r\n licenceId?: number ;\r\n companyName?: string ;\r\n subjectId?: number ;\r\n subjectName?: string ;\r\n siteId?: number ;\r\n siteName?: string ;\r\n departmentId?: number ;\r\n departmentName?: string ;\r\n placeId?: number ;\r\n}\r\n\r\nexport enum ERPExportType\r\n{\r\n Basic = 1,\r\n Detailed = 8,\r\n Complete = 9,\r\n Labels = 10,\r\n EmployeesCoursesMatrix = 21,\r\n EmployeesCoursesHoursMatrix = 22,\r\n EmployeesPPEsMatrix = 23,\r\n EmployeesHealthChecksMatrix = 24,\r\n TasksCoursesMatrix = 31,\r\n Training = 101,\r\n TrainingExpired = 102,\r\n TrainingExpiring = 103,\r\n TrainingAbsents = 104,\r\n TrainingClosed = 105,\r\n TrainingCurrentYear = 108,\r\n TrainingNextYear = 109,\r\n TrainingAnnualPlannng = 110,\r\n EquipmentsActivitiesCompleted = 201,\r\n EquipmentsChecksMatrix = 202,\r\n RSNormsUsage = 301,\r\n RSNormsSitesMatrix = 302,\r\n RSNormsSummary = 303,\r\n MonitoringLaws = 401,\r\n MonitoringActivities = 402,\r\n MonitoringSummary = 403,\r\n PPEs = 501,\r\n ComplianceStatistics = 601,\r\n HealthChecks = 701,\r\n}\r\n\r\nexport enum ERPExportFormat\r\n{\r\n Csv = 1,\r\n Word = 2,\r\n Pdf = 3\r\n}\r\n\r\nexport enum ERPExportSource\r\n{\r\n All = 1,\r\n Query = 2,\r\n Selection = 3\r\n}\r\n\r\nexport enum ERPExportPart\r\n{\r\n IncludeRisks = 101,\r\n IncludeTasks = 102,\r\n IncludeTaskHistory = 103,\r\n IncludeTrainingRequired = 111,\r\n IncludeTrainingDone = 112,\r\n SelectedEmployeeCourses = 121,\r\n IncludeDisabledEmployees = 131,\r\n IncludeDismissedEmployees = 132,\r\n IncludeDocumentUpdates = 201,\r\n ExcludeNonApplicableOrAcknowledged = 202,\r\n ExcluteAbblicabilityTable = 203,\r\n IncludeActivities = 204,\r\n GroupLaws = 205,\r\n IncludeApplicableOrAcknowledgedOnly = 4301,\r\n IncludePPEs = 501,\r\n IncludeHealthChecks = 601\r\n}\r\n\r\nexport interface EvolutionExportModel<T> extends SendToModel {\r\n searchParams: T;\r\n selection?: number[] ;\r\n type: ERPExportType;\r\n sort?: number ;\r\n source: ERPExportSource;\r\n format: ERPExportFormat;\r\n parts?: ERPExportPart[] ;\r\n automateReport?: boolean ;\r\n automatedReportId?: number ;\r\n automatedReportSheetName?: string;\r\n formatExtension?: string ; \r\n}\r\n\r\nexport enum ERPComplianceLawsSelectionType {\r\n Analysis = 1,\r\n Activity = 2,\r\n}\r\n\r\nexport enum ERPComplianceProfileRole {\r\n None = 0,\r\n Analyst = 1,\r\n Planner = 1 << 1,\r\n Validator = 1 << 2,\r\n Executor = 1 << 3,\r\n Observer = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceProfileFlags {\r\n\r\n OverrideNotificationRegisterSettings = 1 << 4,\r\n}\r\n\r\nexport enum ERPComplianceScope {\r\n None = 0,\r\n Environment = 1,\r\n Safety = 1 << 1,\r\n FoodSafety = 1 << 2,\r\n Energy = 1 << 3,\r\n Health = 1 << 4,\r\n Maintenance = 1 << 5,\r\n Quality = 1 << 6,\r\n Organization = 1 << 7,\r\n Logistics = 1 << 8,\r\n Facility = 1 << 9,\r\n Security = 1 << 10,\r\n GenderEquality = 1 << 11,\r\n AntiCorruption = 1 << 12,\r\n Sustainability = 1 << 13,\r\n InformationSecurity = 1 << 14\r\n}\r\n\r\nexport enum ERPComplianceNotificationLimit {\r\n None = 0,\r\n PlannerOnly = 1,\r\n ExecutorOnly = 2,\r\n Both = 3,\r\n}\r\n\r\nexport enum ERPComplianceRegisterNotificationType {\r\n None = 0,\r\n NewAnalysis = 1,\r\n AnalysisCompleted = 1 << 1,\r\n AnalysisNoticePeriodStarted = 1 << 2,\r\n AnalysisPeriodExpired = 1 << 3,\r\n AnalysisLawChanged = 1 << 14,\r\n NewPlanning = 1 << 13,\r\n PlanningCompleted = 1 << 4,\r\n PlanningNoticePeriodStarted = 1 << 5,\r\n PlanningPeriodExpired = 1 << 6,\r\n NewValidation = 1 << 15,\r\n ValidationCompleted = 1 << 7,\r\n ValidationNoticePeriodStarted = 1 << 8,\r\n ValidationPeriodExpired = 1 << 9,\r\n NewDeadline = 1 << 16,\r\n DeadlineNoticePeriodStarted = 1 << 10,\r\n DeadlineExpired = 1 << 11,\r\n ActivityCompleted = 1 << 12,\r\n //NewNoncompliance = 1 << 17,\r\n //NonComplianceNoticePeriodStarted = 1 << 18,\r\n //NonCompliancePeriodExpired = 1 << 19,\r\n //NonComplianceCompleted = 1 << 20,\r\n LawChanged = 1 << 21,\r\n}\r\n\r\nexport enum ERPComplianceRegisterSiteImportOptions {\r\n CopyAttachments = 1,\r\n KeepOriginalDates = 1 << 1,\r\n DuplicateLaws = 1 << 2,\r\n DiscardNotApplicables = 1 << 3\r\n}\r\n\r\nexport const EvolutionComplianceProfileRoles = [\r\n { name: 'Analista', value: ERPComplianceProfileRole.Analyst },\r\n { name: 'Gestore', value: ERPComplianceProfileRole.Planner },\r\n //{ name: 'Validatore', value: ERPComplianceProfileRole.Validator },\r\n { name: 'Esecutore', value: ERPComplianceProfileRole.Executor },\r\n { name: 'Osservatore', value: ERPComplianceProfileRole.Observer },\r\n];\r\n\r\nexport const EvolutionComplianceProfileFlags = [\r\n { name: 'Deroghe e limitazioni', divider: true },\r\n {\r\n name:\r\n 'Questo profilo riceve regolarmente le notifiche indipendentemente dalla configurazione generale del registro',\r\n value: ERPComplianceProfileFlags.OverrideNotificationRegisterSettings,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceScopes = [\r\n { name: 'Ambiente', value: ERPComplianceScope.Environment },\r\n { name: 'Salute e sicurezza', value: ERPComplianceScope.Safety },\r\n {\r\n name: 'Sicurezza alimentare',\r\n value: ERPComplianceScope.FoodSafety,\r\n },\r\n { name: 'Energia', value: ERPComplianceScope.Energy },\r\n { name: 'Servizi generali', value: ERPComplianceScope.Facility },\r\n { name: 'Manutenzione', value: ERPComplianceScope.Maintenance },\r\n { name: 'Qualità', value: ERPComplianceScope.Quality },\r\n { name: 'Organizzazione', value: ERPComplianceScope.Organization },\r\n { name: 'Logistica', value: ERPComplianceScope.Logistics },\r\n { name: 'Security', value: ERPComplianceScope.Security },\r\n { name: \"Anticorruzione\", value: ERPComplianceScope.AntiCorruption },\r\n { name: \"Sostenibilità\", value: ERPComplianceScope.Sustainability },\r\n { name: \"Parità di genere\", value: ERPComplianceScope.GenderEquality },\r\n { name: \"Sicurezza dell'informazione\", value: ERPComplianceScope.InformationSecurity },\r\n\r\n];\r\n\r\nexport const EvolutionComplianceNotificationLimits = [\r\n { name: 'Nessuna limitazione', value: ERPComplianceNotificationLimit.None },\r\n {\r\n name: 'Solo gestore che ha pianificato',\r\n value: ERPComplianceNotificationLimit.PlannerOnly,\r\n },\r\n {\r\n name: \"Solo all'incaricato designato\",\r\n value: ERPComplianceNotificationLimit.ExecutorOnly,\r\n },\r\n {\r\n name: 'Solo a gestore e incaricato designato',\r\n value: ERPComplianceNotificationLimit.Both,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceNotifications = [\r\n { name: 'Verifica applicabilità e analisi', divider: true },\r\n {\r\n name: 'Richiesta analisi',\r\n value: ERPComplianceRegisterNotificationType.NewAnalysis,\r\n },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'analisi\",\r\n value: ERPComplianceRegisterNotificationType.AnalysisPeriodExpired,\r\n },\r\n {\r\n name: 'Analisi completata',\r\n value: ERPComplianceRegisterNotificationType.AnalysisCompleted,\r\n },\r\n {\r\n name: 'Avviso norma modificata dal legislatore',\r\n value: ERPComplianceRegisterNotificationType.AnalysisLawChanged,\r\n },\r\n { name: 'Pianificazioni', divider: true },\r\n {\r\n name: 'Richiesta gestione',\r\n value: ERPComplianceRegisterNotificationType.NewPlanning,\r\n },\r\n {\r\n name: 'Preavviso: sta per scadere il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine fissato per la gestione',\r\n value: ERPComplianceRegisterNotificationType.PlanningPeriodExpired,\r\n },\r\n {\r\n name: 'Gestione completata',\r\n value: ERPComplianceRegisterNotificationType.PlanningCompleted,\r\n },\r\n {\r\n name: 'Attività completata',\r\n value: ERPComplianceRegisterNotificationType.ActivityCompleted,\r\n },\r\n /*{ name: 'Gestione non conformità', divider: true },\r\n {\r\n name: 'Apertura non comformità',\r\n value: ERPComplianceRegisterNotificationType.NewNoncompliance,\r\n },\r\n {\r\n name:\r\n \"Preavviso: sta per scadere il termine fissato per l'azione correttiva\",\r\n value:\r\n ERPComplianceRegisterNotificationType.NonComplianceNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'azione correttiva\",\r\n value: ERPComplianceRegisterNotificationType.NonCompliancePeriodExpired,\r\n },\r\n {\r\n name: 'Chiusura non conformità',\r\n value: ERPComplianceRegisterNotificationType.NonComplianceCompleted,\r\n },*/\r\n /*{ name: 'Approvazioni', divider: true },\r\n { name: 'Richiesta approvazione', value: 1 << 14 },\r\n {\r\n name: \"Preavviso: sta per scadere il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationNoticePeriodStarted,\r\n },\r\n {\r\n name: \"Allarme: è scaduto il termine fissato per l'approvazione\",\r\n value: ERPComplianceRegisterNotificationType.ValidationPeriodExpired,\r\n },\r\n {\r\n name: 'Approvazione concessa o negata',\r\n value: ERPComplianceRegisterNotificationType.ValidationCompleted,\r\n },*/\r\n { name: 'Scadenze', divider: true },\r\n {\r\n name: 'Preavviso: 1° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.NewValidation,\r\n },\r\n {\r\n name: 'Avviso: 2° promemoria sulla data di scadenza',\r\n value: ERPComplianceRegisterNotificationType.DeadlineNoticePeriodStarted,\r\n },\r\n {\r\n name: 'Allarme: è scaduto il termine',\r\n value: ERPComplianceRegisterNotificationType.DeadlineExpired,\r\n },\r\n { name: 'Norme collegate', divider: true },\r\n {\r\n name: 'Modifica o abrogazione',\r\n value: ERPComplianceRegisterNotificationType.LawChanged,\r\n },\r\n\r\n];\r\n\r\nexport enum ERPComplianceLawState {\r\n ApplicableOrAknowledged = 1,\r\n NotApplicable = 2,\r\n NotAnalyzed = 3,\r\n ExpiredAnalysis = 4,\r\n UpdatedLaws = 5,\r\n Analyzed = 6,\r\n Abrogated = 7,\r\n Applicable = 8,\r\n Aknowledged = 9\r\n}\r\n\r\nexport enum ERPComplianceLawOrigin {\r\n National = 1,\r\n EU = 2,\r\n Regional = 3,\r\n Local = 4,\r\n Technical = 5,\r\n Voulontary = 6,\r\n Internal = 7,\r\n Other = 8,\r\n}\r\n\r\nexport const EvolutionComplianceLawStates = [\r\n { name: 'Applicabile', value: ERPComplianceLawState.Applicable },\r\n { name: 'Da conoscere', value: ERPComplianceLawState.Aknowledged },\r\n {\r\n name: 'Applicabile / da conoscere',\r\n value: ERPComplianceLawState.ApplicableOrAknowledged,\r\n },\r\n { name: 'Non applicabile', value: ERPComplianceLawState.NotApplicable },\r\n { name: 'Abrogata', value: ERPComplianceLawState.Abrogated },\r\n { name: 'Analizzata', value: ERPComplianceLawState.Analyzed },\r\n { name: 'Da definire', value: ERPComplianceLawState.NotAnalyzed },\r\n { name: 'In ritardo', value: ERPComplianceLawState.ExpiredAnalysis },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceLawState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceLawOrigins = [\r\n { name: 'Nazionale', value: ERPComplianceLawOrigin.National },\r\n { name: 'Comunitaria', value: ERPComplianceLawOrigin.EU },\r\n { name: 'Regionale', value: ERPComplianceLawOrigin.Regional },\r\n { name: 'Locale', value: ERPComplianceLawOrigin.Local },\r\n { name: 'Tecnica', value: ERPComplianceLawOrigin.Technical },\r\n { name: 'Interna', value: ERPComplianceLawOrigin.Internal },\r\n { name: 'Volontaria', value: ERPComplianceLawOrigin.Voulontary },\r\n { name: 'Altro', value: ERPComplianceLawOrigin.Other },\r\n];\r\n\r\nexport const EvolutionComplianceLawChangeStates = [\r\n { name: 'Aperto', value: 1 },\r\n { name: 'Chiuso', value: 2 },\r\n];\r\n\r\nexport enum ERPComplianceActivityState {\r\n NotPlanned = 1 << 7,\r\n Closed = 1 << 2,\r\n Expired = 1 << 3,\r\n Planned = 1 << 8,\r\n Cancelled = 1 << 9,\r\n UpdatedLaws = 1 << 10,\r\n AlreadyManaged = 1 << 11\r\n}\r\n\r\nexport const EvolutionComplianceActivityStates = [\r\n {\r\n name: 'Da definire',\r\n value: ERPComplianceActivityState.NotPlanned,\r\n },\r\n {\r\n name: 'Pianificata',\r\n value: ERPComplianceActivityState.Planned,\r\n },\r\n {\r\n name: 'Chiusa',\r\n value: ERPComplianceActivityState.Closed,\r\n },\r\n {\r\n name: 'In ritardo',\r\n value: ERPComplianceActivityState.Expired,\r\n },\r\n {\r\n name: 'Annullata',\r\n value: ERPComplianceActivityState.Cancelled,\r\n },\r\n {\r\n name: 'Gestita separatamente',\r\n value: ERPComplianceActivityState.AlreadyManaged,\r\n },\r\n {\r\n name: 'Con aggiornamenti pendenti',\r\n value: ERPComplianceActivityState.UpdatedLaws,\r\n },\r\n];\r\n\r\nexport const EvolutionComplianceObligationTypes = [\r\n { name: 'Autorizzazione', value: 1 },\r\n { name: 'Verifiche periodiche manutentive', value: 2 },\r\n { name: 'Misure organizzative', value: 3 },\r\n { name: 'Controlli e misurazioni', value: 4 },\r\n { name: 'Entrata in vigore', value: 5 },\r\n { name: 'Documenti aziendali obbligatori', value: 6 },\r\n {\r\n name: 'Altri adempimenti formali (comunicazioni, dichiarazioni, ecc...)',\r\n value: 7,\r\n },\r\n { name: 'Altro', value: 99 },\r\n];\r\n\r\nexport const EvolutionComplianceObligationAuthorities = [\r\n { name: 'Agenzia ECHA', value: 1 },\r\n { name: 'Albo Nazionale dei Gestori Ambientali', value: 2 },\r\n { name: 'ARPA', value: 4 },\r\n { name: 'ASL', value: 5 },\r\n { name: 'Camera di Commercio', value: 8 },\r\n { name: 'Comando provinciale dei Vigili del Fuoco', value: 10 },\r\n { name: 'Comune', value: 13 },\r\n { name: 'Consorzi gestione rifiuti particolari', value: 14 },\r\n { name: 'Gestore del servizio', value: 21 },\r\n { name: 'Gestore della rete di trasmissione nazionale', value: 22 },\r\n { name: 'INAIL - IPSEMA - ISPESL', value: 23 },\r\n { name: 'ISPRA', value: 26 },\r\n { name: 'Ministero', value: 27 },\r\n { name: 'Genio civile', value: 30 },\r\n { name: 'Organo di vigilanza competente', value: 31 },\r\n { name: 'Provincia', value: 33 },\r\n { name: 'Regione', value: 35 },\r\n { name: 'Uffici tecnici di finanza', value: 36 },\r\n { name: 'Ispettorato del lavoro', value: 37 },\r\n { name: 'Comitato Regionale Tecnico VF', value: 38 },\r\n { name: 'Prefetto', value: 39 },\r\n { name: 'Organismo notificato', value: 40 },\r\n { name: 'Città Metropolitana', value: 41 },\r\n { name: 'Nessuna', value: 28 },\r\n { name: 'Altro', value: 3 }\r\n];\r\n\r\nexport enum ERPRecurrenceFrequencyType {\r\n Day = 1,\r\n Month = 2,\r\n Year = 3,\r\n}\r\nexport const EvolutionRecurrenceFrequencyTypes = [\r\n { name: 'Anni', value: ERPRecurrenceFrequencyType.Year },\r\n { name: 'Mesi', value: ERPRecurrenceFrequencyType.Month },\r\n { name: 'Giorni', value: ERPRecurrenceFrequencyType.Day },\r\n];\r\n\r\nexport enum ERPPlacePermission {\r\n None = 0,\r\n Denied = 1,\r\n Read = 2,\r\n Write = 3\r\n}\r\n\r\nexport enum ERPPlace {\r\n Subject = 1,\r\n Site = 2,\r\n Department = 3,\r\n Area = 4,\r\n Line = 5\r\n}\r\nexport interface EvolutionPermission {\r\n placeId: number;\r\n userId: number;\r\n allowRead: number;\r\n allowWrite: number;\r\n allowNone: number;\r\n}\r\n\r\nexport interface EvolutionPlacePermission extends EvolutionPermission {\r\n id: number;\r\n subjectId?: number;\r\n siteId?: number;\r\n departmentId?: number;\r\n mode: number;\r\n}\r\n\r\nexport interface EvolutionContextInfo {\r\n id: number;\r\n userId?: number;\r\n name: string;\r\n permission: EvolutionPermission;\r\n placePermission: ERPPlacePermission;\r\n costCenter: string;\r\n selected?: boolean;\r\n level?: number;\r\n levelTitle?: string;\r\n}\r\n\r\nexport class EvolutionComplianceContextInfo {\r\n licenceId?: number;\r\n licencedCompany?: string;\r\n registerTitle?: string;\r\n registerId?: number;\r\n siteName?: string;\r\n siteId?: number;\r\n userId?: number;\r\n items?: EvolutionContextInfo[];\r\n}\r\n\r\nexport interface EvolutionChangeContextModel {\r\n userId?: number ;\r\n licenceId?: number ;\r\n subjectId?: number ;\r\n siteId?: number ;\r\n registerId?: number ;\r\n role?: ERPComplianceProfileRole ;\r\n permission?: ERPPlacePermission ;\r\n option1Value?: number ;\r\n option2Value?: number ;\r\n option3Value?: number ;\r\n allowObservers?: boolean ;\r\n allowDisabled?: boolean ;\r\n}\r\n\r\nexport interface EvolutionChangeContextResultModel {\r\n items: EvolutionContextInfo[];\r\n}\r\n\r\nexport interface EvolutionComplianceRegister extends EvolutionPlaceable {\r\n id: number;\r\n title?: string;\r\n enableNotifications?: boolean;\r\n enableNotification1?: boolean;\r\n enableNotification2?: boolean;\r\n enableNotification3?: boolean;\r\n enableNotification4?: boolean;\r\n enableNotification5?: boolean;\r\n enableNotification7?: boolean;\r\n enableNotification8?: boolean;\r\n enableNotification9?: boolean;\r\n notification1NoticeDays?: number;\r\n notification2NoticeDays?: number;\r\n notification2Limit?: number;\r\n notification3NoticeDays?: number;\r\n notification4NoticeDays?: number;\r\n notification4Limit?: number;\r\n notification5NoticeDays?: number;\r\n notification5Limit?: number;\r\n notification6Limit?: number;\r\n notification8NoticeDays?: number;\r\n notification8Limit?: number;\r\n enableActivityLawsPopulation?: boolean;\r\n enableLawChangesTracking?: boolean;\r\n automationMode?: number;\r\n automationScope?: number;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n totalSites?: number;\r\n totalProfiles?: number;\r\n sites?: EvolutionComplianceRegisterSite[];\r\n oldId?: string;\r\n isAutomationEnabled?: boolean;\r\n automationModeDescription?: string;\r\n automationScopeDescription?: string;\r\n context?: EvolutionComplianceContextInfo;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n}\r\n\r\nexport interface EvolutionRegisterProfileSiteInfo extends EvolutionContextInfo {\r\n\r\n}\r\n\r\nexport interface EvolutionRegisterProfileUserInfo {\r\n userId: number;\r\n name: string;\r\n sites: EvolutionRegisterProfileSiteInfo[];\r\n}\r\n\r\nexport interface ComplianceRegisterUsersResultModel {\r\n users: EvolutionRegisterProfileUserInfo[];\r\n sites: EvolutionRegisterProfileSiteInfo[];\r\n}\r\n\r\nexport interface EvolutionComplianceRegisterSite {\r\n id: number;\r\n complianceRegisterId?: number;\r\n complianceSiteId?: number;\r\n disabled?: boolean;\r\n created?: Date;\r\n licenceId?: number;\r\n subjectId?: number;\r\n subjectName: string;\r\n siteId?: number;\r\n siteName?: string;\r\n departmentId?: number;\r\n departmentName?: string;\r\n registerTitle?: string;\r\n placeId?: number;\r\n oldSiteId?: string;\r\n}\r\n\r\nexport interface EvolutionComplianceLaw extends EvolutionPlaceable {\r\n id?: number;\r\n state?: number;\r\n complianceRegisterId?: number;\r\n lot?: number;\r\n topicId?: string;\r\n topicPath?: string;\r\n topicName?: string;\r\n summary?: string;\r\n scope?: number;\r\n source?: string;\r\n references?: EvolutionComplianceLawReference[];\r\n originalLawId?: number ;\r\n originRegion?: string ;\r\n origin?: number ;\r\n originAlternativeDescription?: string ;\r\n description?: string ;\r\n documentShortTitle?: string ;\r\n documentTitle?: string ;\r\n documentNumber?: string ;\r\n documentDate?: Date ;\r\n documentLastUpdate?: string ;\r\n documentLastUpdateShortTitle?: string ;\r\n documentUpdateNotes?: string ;\r\n documentValidated?: boolean ;\r\n documentId?: string ;\r\n documentModel?: number ;\r\n documentReferences?: string ;\r\n documentNotes?: string ;\r\n documentForceGlobalCheckForUpdates?: boolean;\r\n complianceCheckItem1?: boolean ;\r\n complianceCheckItem2?: boolean ;\r\n complianceCheckItem3?: boolean ;\r\n complianceCheckItem4?: boolean ;\r\n complianceCheckItem5?: boolean ;\r\n complianceCheckItem6?: boolean ;\r\n complianceCheckItem7?: boolean ;\r\n complianceCheckItem8?: boolean ;\r\n complianceCheckItem9?: boolean ;\r\n complianceCheckItem10?: boolean ;\r\n complianceCheckItem11?: boolean ;\r\n complianceCheckItem12?: boolean ;\r\n alternativeComplianceCheckItem?: boolean ;\r\n alternativeComplianceDescription?: string ;\r\n applicability?: number ;\r\n analyzedBy?: string ;\r\n analystOperatorId?: number ;\r\n analysisExpiringDate?: Date ;\r\n analysisDate?: Date ;\r\n analysisNotes?: string ;\r\n analysisNoticeDate?: string ;\r\n group1?: string ;\r\n group2?: string ;\r\n count?: number ;\r\n created?: Date ;\r\n createdBy?: string ;\r\n lastUpdated?: Date ;\r\n lastUpdatedBy?: string ;\r\n}\r\n\r\nexport interface EvolutionQueryRegisterProfilesModel extends QueryModel {\r\n complianceRegisterId?: number;\r\n siteId?: number;\r\n userId?: number;\r\n licenceId?: number;\r\n name?: string;\r\n role?: number;\r\n allowObservers?: boolean;\r\n allowDisabled?: boolean;\r\n state?: number;\r\n}\r\n\r\nexport interface EvolutionComplianceRegisterProfile {\r\n id: number;\r\n licenceId?: number;\r\n userId?: number;\r\n passiveUserName?: string;\r\n passiveUserOperatorId?: number;\r\n complianceRegisterId?: number;\r\n complianceSiteId?: number;\r\n scopes?: number;\r\n selectedScopes?: number[];\r\n roles?: number;\r\n selectedRoles?: number[];\r\n notifications?: number;\r\n flags?: number;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n lastUpdatedBy?: string;\r\n subjectId?: number;\r\n subjectName?: string;\r\n siteId?: number;\r\n siteName?: string;\r\n siteDisabled?: boolean;\r\n departmentId?: number;\r\n departmentName?: string;\r\n passiveUserEmail?: string;\r\n placeId?: number;\r\n userEmail?: string;\r\n userOperatorId?: number;\r\n userDisabled?: boolean;\r\n registerDisabled?: boolean;\r\n registerTitle?: string;\r\n name?: string;\r\n scopeNames?: string;\r\n isAdministrator?: boolean;\r\n isObserver?: boolean;\r\n denied?: boolean;\r\n oldId?: string;\r\n operatorId?: number;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n context?: EvolutionComplianceContextInfo;\r\n}\r\nexport interface EvolutionComplianceLawDocumentInfo {\r\n documentId?: string;\r\n documentId2?: string;\r\n title2?: string;\r\n title1?: string;\r\n number?: string;\r\n date?: Date;\r\n origin?: number;\r\n originDescription?: string;\r\n originAlternativeDescription?: string;\r\n originRegion?: string;\r\n notes?: string;\r\n references?: EvolutionComplianceLawReference[];\r\n forceGlobalCheckForUpdates?: boolean;\r\n validated?: boolean;\r\n description?: string;\r\n}\r\n\r\nexport interface EvolutionComplianceLawsAddParams extends EvolutionComplianceLaw {\r\n context?: EvolutionComplianceContextInfo;\r\n documents?: EvolutionComplianceLawDocumentInfo[];\r\n shouldNotifyAnalysisCompletionAgain?: boolean;\r\n scopes?: number[];\r\n sites?: number[];\r\n registers?: number[];\r\n}\r\n\r\nexport interface EvolutionComplianceLaswExportParams extends EvolutionExportModel<any> {}\r\n\r\nexport interface EvolutionComplianceLawReference {\r\n id?: number ;\r\n complianceLawId?: number ;\r\n text: string;\r\n description?: string ;\r\n anchor: string;\r\n}\r\n\r\nexport interface EvolutionComplianceActivity extends EvolutionPlaceable {\r\n id: number;\r\n state: number;\r\n monitoringActivityId?: number;\r\n monitoringActivityTaskId?: number;\r\n complianceRegisterId?: number;\r\n childId?: number ;\r\n parentId?: number ;\r\n lot?: number ; \r\n summary?: string;\r\n scope?: number;\r\n topicId?: string ;\r\n topicPath?: string;\r\n topicName?: string;\r\n mandatory?: boolean ;\r\n obligationType?: number ;\r\n obligationAuthorityId?: number ;\r\n obligationNotes?: string;\r\n obligationCheckPoint?: boolean ;\r\n description?: string;\r\n deadlineRecurrent?: boolean ;\r\n deadlineFrequency?: number ;\r\n deadlineFrequencyType?: number ;\r\n deadlineFrequencyEndOfMonth?: boolean ;\r\n deadlineFirstNoticeDays?: number ;\r\n deadlineLastNoticeDays?: number ;\r\n deadlineFirstNoticeDate?: Date ;\r\n deadlineLastNoticeDate?: Date ;\r\n deadlineExpiringDate?: Date ;\r\n planningNoticeDate?: Date ;\r\n planningExpiringDate?: Date ;\r\n planningDate?: Date ;\r\n plannedBy?: string;\r\n plannerOperatorId?: number ;\r\n planningApplicability?: number ;\r\n planningNotificationAdditionalEmailHeader?: string;\r\n planningNotificationAdditionalEmails?: string;\r\n planningNotificationAdditionalEmailsForAlertsOnly?: string;\r\n planningNamedExecutorOperatorId?: number ;\r\n planningNamedExecutorName?: string;\r\n planningNamedExecutorManagerOperatorId?: number ;\r\n planningNamedExecutorManagerName?: string;\r\n planningScheduleNextFromExecutionDate?: boolean ;\r\n planningNotes?: string;\r\n executorOperatorId?: number ;\r\n executed?: boolean;\r\n executedBy?: string;\r\n executionDate?: Date;\r\n externalReference?: string;\r\n externalDescription?: string;\r\n group1?: string;\r\n group2?: string;\r\n notes?: string;\r\n created?: Date;\r\n createdBy?: string;\r\n lastUpdated?: Date ;\r\n lastUpdatedBy?: string;\r\n\r\n}\r\n\r\nexport interface EvolutionComplianceActivitiesAddParams extends EvolutionComplianceActivity {\r\n context?: EvolutionComplianceContextInfo;\r\n complianceLawId?: number;\r\n monitoringLawId?: number;\r\n enableLawChangesTracking?: boolean;\r\n enableActivityLawsPopulation?: boolean;\r\n shouldNotifyPlanningCompletionAgain?: boolean;\r\n scopes?: number[];\r\n sites?: number[];\r\n registers?: number[];\r\n document?: EvolutionComplianceLawDocumentInfo;\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { inject, Injectable, OnDestroy, signal } from '@angular/core';\r\nimport { ApiResult, BroadcastMessageInfo, BroadcastService, FolderTree, INode, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { EMPTY, of, Subscription, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\nimport { EvolutionChangeContextModel, EvolutionChangeContextResultModel, EvolutionComplianceActivitiesAddParams, EvolutionComplianceActivity, EvolutionComplianceLaw, EvolutionComplianceLawsAddParams, EvolutionComplianceRegister, EvolutionComplianceRegisterProfile, EvolutionLoginInfo, EvolutionLoginResult, EvolutionQueryRegisterProfilesModel, EvolutionServiceFlags, EvolutionUserLink } from './../definitions';\r\nimport { EvolutionMessages } from '../messages';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EvolutionService implements OnDestroy {\r\n\r\n\r\n private httpClient = inject(HttpClient);\r\n private broadcastService = inject(BroadcastService);\r\n private broadcastServiceSubscription?: Subscription;\r\n private dialogService = inject(DialogService);\r\n\r\n private _serviceUri: string = undefined;\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n private _flags: EvolutionServiceFlags = EvolutionServiceFlags.None;\r\n get flags(): EvolutionServiceFlags {\r\n return this._flags;\r\n }\r\n private _loginInfo?: EvolutionLoginInfo;\r\n get loginInfo(): EvolutionLoginInfo | undefined {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('evolution_context');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as EvolutionLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n public readonly loggedIn = signal<boolean>(false);\r\n public readonly loggingIn = signal<boolean>(false);\r\n\r\n\r\n\r\n ngOnDestroy() {\r\n if (this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * Initialize service\r\n * @param serviceUri : the service uri\r\n * @param flags: the service flags. Default is none.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n flags: EvolutionServiceFlags = EvolutionServiceFlags.None) {\r\n // Create unique client id\r\n if (!localStorage.getItem('evolution_client_id')) {\r\n localStorage.setItem('evolution_client_id', SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastServiceSubscription) {\r\n this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message: BroadcastMessageInfo) => {\r\n if (message.id === EvolutionMessages.LOGIN_CHANGED) {\r\n this.login(\r\n null,\r\n null,\r\n true).subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(\r\n \"Le credenziali di accesso sono cambiate o non sono più valide. Esegui un nuovo accesso.\",\r\n undefined,\r\n \"Errore di Evolution\");\r\n } else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Connesso a Evolution', 1500, 'power');\r\n }\r\n }\r\n },\r\n error: () => { console.error(\"Evolution non disponibile.\") } // Avoid unwanted errors on client\r\n });\r\n } else if (message.id === EvolutionMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.logout().subscribe(r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(\"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Evolution accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\", null, \"Errore di Evolution\");\r\n }\r\n } else {\r\n if ((this.flags & EvolutionServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (this.loggedIn()) {\r\n // Auto login\r\n this.loggingIn.set(false);\r\n // Notify \r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n\r\n\r\n\r\n /**\r\n * Store login info\r\n */\r\n storeContext() {\r\n localStorage.setItem('evolution_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n\r\n /**\r\n * Update context\r\n * @param result: the new context\r\n */\r\n updateContext(result: EvolutionLoginResult) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n this._loginInfo.context = result.context\r\n this.storeContext();\r\n }\r\n\r\n /**\r\n * Perform auto login using current link data\r\n * @param onSuccess: function to execute on seccess\r\n */\r\n autoLogin(onSuccess?: Function) {\r\n this.login(null, null, true)\r\n .pipe(finalize(() => this.dialogService.clearBusy()))\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n } else {\r\n if (!r.value.requiresMfa) {\r\n this.dialogService.toast('Connesso ad Evolution', 1500, 'power');\r\n }\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n },\r\n error: () => { this.dialogService.error(\"Evolution non disponibile.\") }\r\n });\r\n return true;\r\n }\r\n\r\n /**\r\n * Perform auto logout\r\n * @param onSuccess: function to execute on seccess\r\n */\r\n autoLogout(onSuccess?: Function) {\r\n this.logout()\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.dialogService.error(r.message, null, \"Errore in Evolution\");\r\n }\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_CHANGED);\r\n } else {\r\n this.dialogService.toast('Disconnesso da Evolution', 1500, 'power_off');\r\n }\r\n },\r\n error: () => { },\r\n complete: () => {\r\n this.dialogService.clearBusy()\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Perform login \r\n * @param email: the optional email if using OAuth2\r\n * @parma password: the optional password if using OAuth2\r\n * @param remember: remember credentials \r\n * @param oauth: the optional open authentication supported\r\n * @param oauthAccessToken: the optional OAuth2 access token\r\n */\r\n login(email?: string,\r\n password?: string,\r\n remember?: boolean,\r\n oauth?: LoginOAuthType,\r\n oauthAccessToken: string | undefined = sessionStorage.getItem(\"evolution_oauth_token\") ?? undefined) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login2',\r\n {\r\n clientId: localStorage.getItem(\"evolution_client_id\"),\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n remember: remember,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth || !oauthAccessToken\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", oauthAccessToken ?? '')\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n if (r.success) {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined }\r\n }\r\n this._loginInfo.oauth = oauth;\r\n this._loginInfo.remember = remember;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_PENDING, {});\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Complete login\r\n * @param result : the login result\r\n */\r\n private completeLogin(\r\n result: EvolutionLoginResult) {\r\n // Update context info \r\n this.updateContext(result);\r\n this.loggedIn.set(!result.context?.isTemporary);\r\n this.loggingIn.set(false);\r\n // Keep alive\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n\r\n /**\r\n * Confirm MFA procedure\r\n * @param code: the confirm code\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n if (r.success) {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Perform logout\r\n * @param forget: true to dispose all user informations\r\n */\r\n logout(forget: boolean = false) {\r\n return this.httpClient.post<any>(this._serviceUri + '/logout/?forget=' + forget, {})\r\n .pipe(\r\n finalize(() => {\r\n this.clear();\r\n // Clean up\r\n localStorage.removeItem('evolution_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n }\r\n\r\n\r\n /**\r\n * Switch the current login to a new one with the same credentials except role possibly (context change)\r\n * @param id : new user id\r\n */\r\n loginSwitch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<EvolutionLoginResult>>(\r\n this._serviceUri + '/login/switch',\r\n {\r\n clientId: localStorage.getItem(\"evolution_client_id\"),\r\n userId: id,\r\n }\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<EvolutionLoginResult>) => {\r\n if (r.success) {\r\n // Update login\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Reset login refresh timer and login state\r\n */\r\n reset() {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n // Logged out\r\n this.loggedIn.set(false);\r\n // Notify\r\n this.broadcastService.sendMessage(EvolutionMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clear login data\r\n * @param clearOAuthToken: true to clear oauth token also\r\n */\r\n clear(clearOAuthToken: boolean = false) {\r\n // Clear local storage\r\n sessionStorage.removeItem('evolution_auth');\r\n sessionStorage.removeItem('evolution_refresh');\r\n sessionStorage.removeItem('evolution_oauth');\r\n if (clearOAuthToken) {\r\n sessionStorage.removeItem('evolution_oauth_token');\r\n }\r\n\r\n // Reset login\r\n this.reset();\r\n }\r\n \r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the subfolders group or null to root\r\n */\r\n toNodes(folders: INode[]): INode[] {\r\n return this._toNodes(folders, null);\r\n }\r\n\r\n /**\r\n * Convert folders in a tree of Node object.\r\n * @param folders : the children group or null to root\r\n */\r\n private _toNodes(folders: INode[], parent?: INode): INode[] {\r\n let nodes: INode[] = [];\r\n folders.forEach(n => {\r\n let node: INode = {\r\n id: n.id,\r\n name: n.name,\r\n count: n.count,\r\n parent: parent,\r\n children: null,\r\n bag: n,\r\n };\r\n node.children =\r\n n.children && n.children.length > 0\r\n ? this._toNodes(n.children, node)\r\n : [];\r\n nodes.push(node);\r\n });\r\n return nodes;\r\n }\r\n\r\n /**\r\n * Retrieve the taxonomy\r\n */\r\n getTaxonomy() {\r\n return this.httpClient.get<ApiResult<FolderTree>>(\r\n this._serviceUri + '/taxonomy'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve groups\r\n * @param group: the group number\r\n * @param register: the optional register id. Default is null.\r\n */\r\n getGroups(group: number = 1, register?: number) {\r\n return this.httpClient.get<ApiResult<string[]>>(\r\n this._serviceUri +\r\n (register\r\n ? '/compliance/groups/?group=' +\r\n group +\r\n '&register=' +\r\n register\r\n : '/compliance/groups/?group=' + group)\r\n );\r\n }\r\n\r\n ////\r\n // CONTEXT\r\n ////\r\n /**\r\n * Change context\r\n */\r\n changeContext(params: EvolutionChangeContextModel) {\r\n return this.httpClient.post<ApiResult<EvolutionChangeContextResultModel>>(\r\n this._serviceUri + '/compliance/context',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // REGISTERS\r\n ////\r\n\r\n\r\n /**\r\n * Retrieve a register\r\n * @param id the register id\r\n */\r\n getRegister(id: number) {\r\n return this.httpClient.get<ApiResult<EvolutionComplianceRegister>>(\r\n this._serviceUri +\r\n '/compliance/registers/' + id\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Collect register profiles\r\n * @param params parameters\r\n */\r\n collectRegisterProfiles(params: EvolutionQueryRegisterProfilesModel) {\r\n return this.httpClient.post<ApiResult<EvolutionComplianceRegisterProfile[]>>(\r\n this._serviceUri +\r\n '/compliance/registers/profiles/collect',\r\n params\r\n );\r\n }\r\n\r\n\r\n ////\r\n // LAWS\r\n ////\r\n\r\n /**\r\n * Add one or more laws\r\n * @param params parameters\r\n */\r\n addLaws(params: EvolutionComplianceLawsAddParams) {\r\n return this.httpClient.post<ApiResult<EvolutionComplianceLaw[]>>(\r\n this._serviceUri + '/compliance/laws/add',\r\n params\r\n );\r\n }\r\n\r\n ////\r\n // ACTIVITIES\r\n ////\r\n\r\n\r\n\r\n /**\r\n * Add one or more activities\r\n * @param params parameters\r\n */\r\n addActivities(params: EvolutionComplianceActivitiesAddParams) {\r\n return this.httpClient.post<ApiResult<EvolutionComplianceActivity>>(\r\n this._serviceUri + '/compliance/activities/add',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Export laws\r\n * @param params parameters\r\n */\r\n exportLaws(params: any) {\r\n return this.httpClient.post(\r\n this._serviceUri + '/compliance/laws/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n ///\r\n // LINKS\r\n ///\r\n\r\n /**\r\n * Save a user link\r\n * @param item: the user link\r\n */\r\n saveLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Delete a user link\r\n * @param item: the user link\r\n */\r\n deleteLink(item: EvolutionUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this._serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { EvolutionService } from '../services/evolution.service';\r\nimport { EvolutionServiceFlags } from '../definitions';\r\nimport { EvolutionMessages } from '../messages';\r\n\r\n\r\n@Injectable()\r\nexport class EvolutionAuthInterceptor implements HttpInterceptor {\r\n private evolutionService = inject(EvolutionService);\r\n private broadcastService = inject(BroadcastService);\r\n private lastErrorTime: number = -1;\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (request.url.startsWith(this.evolutionService.serviceUri ?? '')) {\r\n request = request.clone({ withCredentials: true });\r\n return next.handle(request)\r\n .pipe(\r\n catchError(error => {\r\n if (error.url.startsWith(this.evolutionService.serviceUri)) {\r\n const errorStatus = parseInt(error.status ?? \"0\");\r\n if ((errorStatus > 0 && errorStatus < 500) || (this.evolutionService.flags & EvolutionServiceFlags.NotifySystemErrors) > 0) {\r\n const errorTime = new Date().getTime();\r\n if (errorTime - this.lastErrorTime > 5000) {\r\n this.lastErrorTime = errorTime;\r\n let message = \"\"\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento Evolution non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (error.error?.message ?? error.message ?? \"Impossibile eseguire l'operazione richiesta.\").replaceAll(\"\\r\\n\", \"</p><p>\");\r\n break;\r\n }\r\n this.broadcastService.sendMessage(\r\n EvolutionMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message: message,\r\n title: \"Errore in Clipper\",\r\n errorStatus: errorStatus,\r\n service: this.evolutionService.serviceUri\r\n } as ErrorInfo);\r\n }\r\n }\r\n }\r\n return throwError(() => error);\r\n }));\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class EvolutionCommonModule {}\r\n\r\n// Other exports\r\nexport * from './messages';\r\nexport * from './definitions';\r\nexport * from './interceptors/auth.interceptor';\r\nexport * from './services/evolution.service';\r\n","/*\r\n * Public API Surface of ars-utils\r\n */\r\n\r\nexport * from './common/common.module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}