itc-components-library20 2.0.0 → 2.0.2
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itc-components-library20.mjs","sources":["../../../projects/itc-library20/src/lib/itc-library20.ts","../../../projects/itc-library20/src/lib/primary-button/primary-button.ts","../../../projects/itc-library20/src/lib/primary-button/primary-button.html","../../../projects/itc-library20/src/lib/secondary-button/secondary-button.ts","../../../projects/itc-library20/src/lib/secondary-button/secondary-button.html","../../../projects/itc-library20/src/lib/third-button/third-button.ts","../../../projects/itc-library20/src/lib/third-button/third-button.html","../../../projects/itc-library20/src/lib/basic-table/basic-table.ts","../../../projects/itc-library20/src/lib/basic-table/basic-table.html","../../../projects/itc-library20/src/lib/sortable-table/sortable-table.ts","../../../projects/itc-library20/src/lib/sortable-table/sortable-table.html","../../../projects/itc-library20/src/lib/services/primeng-italian-locale.ts","../../../projects/itc-library20/src/lib/calendar/calendar.ts","../../../projects/itc-library20/src/lib/calendar/calendar.html","../../../projects/itc-library20/src/lib/message/message.ts","../../../projects/itc-library20/src/lib/message/message.html","../../../projects/itc-library20/src/lib/services/api-config.token.ts","../../../projects/itc-library20/src/lib/microservices/survey/serviceSurvey/survey.ts","../../../projects/itc-library20/src/lib/survey/survey-radio/survey-radio.ts","../../../projects/itc-library20/src/lib/survey/survey-radio/survey-radio.html","../../../projects/itc-library20/src/lib/survey/survey-text/survey-text.ts","../../../projects/itc-library20/src/lib/survey/survey-text/survey-text.html","../../../projects/itc-library20/src/lib/survey/survey-label/survey-label.ts","../../../projects/itc-library20/src/lib/survey/survey-label/survey-label.html","../../../projects/itc-library20/src/lib/survey/survey-valuebox/survey-valuebox.ts","../../../projects/itc-library20/src/lib/survey/survey-valuebox/survey-valuebox.html","../../../projects/itc-library20/src/lib/survey/survey.ts","../../../projects/itc-library20/src/lib/survey/survey.html","../../../projects/itc-library20/src/lib/services/minio.ts","../../../projects/itc-library20/src/lib/services/format-date.ts","../../../projects/itc-library20/src/lib/microservices/account/serviceAccount/account.ts","../../../projects/itc-library20/src/lib/microservices/account/serviceAccount/account-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam-appointment.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam-kit.ts","../../../projects/itc-library20/src/lib/microservices/geography/serviceGeography/geography.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/administration.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/patient.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/patient-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/request/serviceRequest/request.ts","../../../projects/itc-library20/src/lib/microservices/request/serviceRequest/request-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/structure/serviceStructure/structure.ts","../../../projects/itc-library20/src/lib/microservices/structure/serviceStructure/structure-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/survey/serviceSurvey/survey-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/event.ts","../../../projects/itc-library20/src/lib/microservices/report/reportService/report.ts","../../../projects/itc-library20/src/lib/button/button.ts","../../../projects/itc-library20/src/lib/button/button.html","../../../projects/itc-library20/src/public-api.ts","../../../projects/itc-library20/src/itc-components-library20.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-itc-library20',\r\n imports: [],\r\n template: `\r\n <p>\r\n itc-library20 works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class ItcLibrary20 {\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-primary-button',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './primary-button.html',\r\n styleUrl: './primary-button.css'\r\n})\r\nexport class PrimaryButton {\r\n\r\n @Input() text: string = 'Primary Button';\r\n @Input() bgColor: string = 'black';\r\n @Input() isNegative: boolean = false; //controllare se è un bottone negative o meno\r\n @Input() icon?: any;\r\n @Input() position: string = 'left';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() textColor: string = 'white'\r\n @Input() border: string = '1px solid black'\r\n @Input() borderRadius: string = '5px'\r\n\r\n @Output() onClick = new EventEmitter<void>(); // Evento di click per il genitore\r\n\r\n // La funzione onClick emette l'evento cliccato al genitore\r\n click(): void {\r\n this.onClick.emit(); // Emette l'evento al genitore\r\n }\r\n\r\n\r\n}\r\n","<button \r\n [ngClass]=\"{\r\n 'active': !isNegative,\r\n 'inactive': isNegative,\r\n }\"\r\n [ngStyle]=\"{\r\n 'background-color': isNegative ? 'transparent' : bgColor,\r\n 'font-weight': fontWeight,\r\n 'color': textColor,\r\n 'border': border,\r\n 'border-radius': borderRadius\r\n }\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-secondary-button',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './secondary-button.html',\r\n styleUrl: './secondary-button.css'\r\n})\r\nexport class SecondaryButton {\r\n\r\n @Input() text: string = 'secondary button';\r\n @Input() bgColor: string = 'black';\r\n @Input() textColor: string = 'white';\r\n @Input() icon?: any;\r\n @Input() position: string = 'left';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() borderRadius: string = '5px'\r\n @Input() border: string = ''\r\n\r\n @Output() onClick = new EventEmitter<void>(); // Evento di click per il genitore\r\n\r\n // La funzione onClick emette l'evento cliccato al genitore\r\n click(): void {\r\n this.onClick.emit(); // Emette l'evento al genitore\r\n }\r\n\r\n\r\n}\r\n","<button\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'border-radius': borderRadius,\r\n 'border': border\r\n }\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-third-button',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './third-button.html',\r\n styleUrl: './third-button.css'\r\n})\r\nexport class ThirdButton {\r\n\r\n @Input() text: string = 'secondary button';\r\n @Input() bgColor: string = 'black';\r\n @Input() textColor: string = 'white';\r\n @Input() icon?: any;\r\n @Input() position: string = 'left';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() width: string = '110px';\r\n @Input() height: string = '35px'\r\n @Input() borderRadius: string = '5px'\r\n @Input() border: string = ''\r\n\r\n @Input() disabled: boolean = false;\r\n @Input() iconSpin: boolean = false;\r\n\r\n @Input() fontSize: string = '17px';\r\n\r\n @Output() onClick = new EventEmitter<void>(); // Evento di click per il genitore\r\n\r\n // La funzione onClick emette l'evento cliccato al genitore\r\n click(): void {\r\n if (!this.disabled) {\r\n this.onClick.emit(); // Emette l'evento al genitore\r\n }\r\n }\r\n\r\n\r\n}\r\n","<button\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'width': width,\r\n 'height': height,\r\n 'border-radius': borderRadius,\r\n 'border': border,\r\n 'font-size': fontSize\r\n }\"\r\n [disabled]=\"disabled\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" [ngClass]=\"{'fa-spin': iconSpin}\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" [ngClass]=\"{'fa-spin': iconSpin}\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FontAwesomeModule, IconDefinition } from '@fortawesome/angular-fontawesome';\r\nimport { faCircle, faStroopwafel } from '@fortawesome/free-solid-svg-icons';\r\nimport { TableModule } from 'primeng/table';\r\n\r\nexport interface IColumn {\r\n field: string,\r\n header: string,\r\n sortable?: boolean,\r\n}\r\n\r\n@Component({\r\n selector: 'lib-basic-table',\r\n imports: [CommonModule, FontAwesomeModule, TableModule],\r\n templateUrl: './basic-table.html',\r\n styleUrl: './basic-table.css'\r\n})\r\nexport class BasicTable {\r\n\r\n router = inject(Router)\r\n \r\n @Input() columns: IColumn[] = [];\r\n @Input() data: any[] = [];\r\n @Input() rows: number = 1;\r\n @Input() detailRoute: string = ''; // Route di default\r\n @Input() actions: Record<string, (rowData: any) => void> = {}; //azioni per le icone\r\n\r\n first: number = 0;\r\n faCircle: IconDefinition = faCircle;\r\n faStroopwafel: IconDefinition = faStroopwafel;\r\n\r\n isDateColumn(value: any): boolean {\r\n return value instanceof Date && !isNaN(value.getTime());\r\n }\r\n \r\n // Funzione per verificare se una colonna contiene un'icona\r\n isIconColumn(columnField: string): boolean {\r\n const iconCheck = (value: any): boolean => {\r\n if (typeof value === 'string' && /^fa[A-Z]/.test(value)) return true; //classi css\r\n if (typeof value === 'object' && value?.iconName) return true; //oggetto IconDefinition\r\n if (typeof value === 'string' && /<i.*class=\".*fa.*\".*>.*<\\/i>/i.test(value)) return true; //html grezzo\r\n return false;\r\n }\r\n return this.data.some(row => iconCheck(row[columnField]));\r\n }\r\n\r\n //andare alla pagina specifica del dettaglio salvando l'id nel sessionStorage\r\n navigateRoute(id: number) {\r\n if (id === undefined || id === null) {\r\n console.error('ID non valido:', id);\r\n return; // Non fare nulla se l'ID non è valido\r\n }\r\n\r\n console.log(id)\r\n\r\n sessionStorage.setItem('id', id.toString());\r\n this.router.navigate([this.detailRoute])\r\n }\r\n\r\n pageChange(event: any): void {\r\n this.first = event.first;\r\n this.rows = event.rows;\r\n // console.log(this.first + ', ' + this.rows)\r\n }\r\n\r\n get tableData(): any[] {\r\n const rowsPerPage = this.rows + this.first;\r\n const emptyRowsCount = rowsPerPage - this.data.length; // Calcola il numero di righe vuote\r\n // console.log('Rows Per Page:', rowsPerPage); // Log per vedere il valore di rows\r\n // console.log('Data Length:', this.data.length); // Log per vedere il numero di righe in data\r\n // console.log('Empty Rows Count:', emptyRowsCount); // Log per vedere quante righe vuote vengono calcolate\r\n\r\n const emptyRows = Array.from({ length: emptyRowsCount }, () =>\r\n this.columns.reduce((acc: Record<string, any>, col) => {\r\n // Se la colonna è quella per l'icona (ad esempio, 'detail'), assegna un'icona di fallback\r\n if (this.isIconColumn(col.field)) {\r\n acc[col.field] = this.faStroopwafel; // Fallback con un'icona vuota o di default\r\n } else {\r\n acc[col.field] = null; // Altrimenti, metti null per le altre colonne\r\n }\r\n return acc;\r\n }, {})\r\n );\r\n\r\n // console.log('Empty Rows:', emptyRows); // Log per vedere le righe vuote generate\r\n\r\n // Combina i dati esistenti con le righe vuote\r\n return [...this.data, ...emptyRows];\r\n }\r\n\r\n\r\n}\r\n","<div class=\"card\">\r\n <p-table\r\n [columns]=\"columns\"\r\n [value]=\"tableData\"\r\n [paginator]=\"true\"\r\n [rows]=\"rows\"\r\n [first]=\"first\"\r\n (onPage)=\"pageChange($event)\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @for(column of columns; track $index) {\r\n <th class=\"column-header\" [ngStyle]=\"{ 'width': column.width }\">\r\n {{ column.header }}\r\n </th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\" \r\n let-rowData \r\n let-columns=\"columns\"\r\n >\r\n <tr>\r\n @for (column of columns; track $index) {\r\n <td class=\"data-container\">\r\n <!-- Verifica il campo data -->\r\n @if (isDateColumn(rowData[column.field])) {\r\n <ng-container>\r\n {{ rowData[column.field] | date: 'dd/MM/yyyy - HH:mm' }}\r\n </ng-container>\r\n }\r\n <!-- Verifica se il campo della colonna è uno di quelli che contiene un'icona -->\r\n @else if (isIconColumn(column.field)) {\r\n <ng-container>\r\n <fa-icon \r\n [icon]=\"rowData[column.field]\"\r\n [ngClass]=\"{ \r\n 'invisible-icon': rowData[column.field] === faStroopwafel, \r\n 'default-style': rowData[column.field] !== faStroopwafel \r\n }\"\r\n (click)=\"actions[column.field] ? actions[column.field](rowData) : null\"\r\n ></fa-icon>\r\n </ng-container>\r\n } @else {\r\n {{ rowData[column.field]?.label || rowData[column.field] }}\r\n }\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>","import { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { IColumn } from '../basic-table/basic-table';\r\nimport { Router } from '@angular/router';\r\nimport { FontAwesomeModule, IconDefinition } from '@fortawesome/angular-fontawesome';\r\nimport * as fas from '@fortawesome/free-solid-svg-icons';\r\nimport { Table, TableModule } from 'primeng/table';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SortEvent } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'lib-sortable-table',\r\n imports: [CommonModule, FontAwesomeModule, TableModule, FormsModule],\r\n templateUrl: './sortable-table.html',\r\n styleUrl: './sortable-table.css'\r\n})\r\nexport class SortableTable implements OnChanges {\r\n\r\n router = inject(Router)\r\n \r\n @Input() columns: IColumn[] = [];\r\n @Input() data: any[] = [];\r\n @Input() rows: number = 1;\r\n @Input() detailRoute: string = ''; // Route di default\r\n @Input() actions: Record<string, (rowData: any) => void> = {}; //azioni per le icone\r\n @Input() colorPicker: (rowData: any, field: string) => string = () => 'var(--primary-blue-color)';\r\n @Input() selected: any[] = [];\r\n @Input() tableCheckbox = '';\r\n @Input() selectionMode: 'none' | 'single' | 'multiple' = 'multiple';\r\n\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n // @Output() unselect = new EventEmitter<any[]>();\r\n @Output() resetData = new EventEmitter<void>();\r\n\r\n first: number = 0;\r\n faCircle = fas.faCircle;\r\n faStroopwafel = fas.faStroopwafel;\r\n faMagnifyingGlass = fas.faMagnifyingGlass;\r\n \r\n selectedData: any[] = [];\r\n\r\n get primeSelectionMode(): 'single' | 'multiple' | null {\r\n if (this.selectionMode === 'none') {\r\n return null;\r\n }\r\n\r\n return this.selectionMode;\r\n }\r\n\r\n get showSelectionCheckboxes(): boolean {\r\n return this.selectionMode === 'multiple';\r\n }\r\n\r\n isDateColumn(value: any): boolean {\r\n return value instanceof Date && !isNaN(value.getTime());\r\n }\r\n \r\n // Funzione per verificare se una colonna contiene un'icona\r\n isIconColumn(columnField: string): boolean {\r\n\r\n if (this.isPriorityColumn(columnField)) {\r\n return true;\r\n }\r\n\r\n const iconCheck = (value: any): boolean => {\r\n if (typeof value === 'string' && value.includes('fa')) return true; //classi css\r\n if (typeof value === 'object' && value?.iconName) return true; //oggetto IconDefinition\r\n if (typeof value === 'string' && /<i.*class=\".*fa.*\".*>.*<\\/i>/i.test(value)) return true; //html grezzo\r\n return false;\r\n }\r\n return this.data.some(row => iconCheck(row[columnField]));\r\n }\r\n\r\n //andare alla pagina specifica del dettaglio salvando l'id nel sessionStorage\r\n navigateRoute(id: number) {\r\n if (id === undefined || id === null) {\r\n console.error('ID non valido:', id);\r\n return; // Non fare nulla se l'ID non è valido\r\n }\r\n\r\n console.log(id)\r\n\r\n sessionStorage.setItem('id', id.toString());\r\n this.router.navigate([this.detailRoute])\r\n }\r\n\r\n pageChange(event: any): void {\r\n this.first = event.first;\r\n this.rows = event.rows;\r\n // console.log(this.first + ', ' + this.rows)\r\n }\r\n \r\n // get tableData(): any[] {\r\n // const rowsPerPage = this.rows + this.first;\r\n // const emptyRowsCount = rowsPerPage - this.data.length; // Calcola il numero di righe vuote\r\n // // console.log('Rows Per Page:', rowsPerPage); // Log per vedere il valore di rows\r\n // // console.log('Data Length:', this.data.length); // Log per vedere il numero di righe in data\r\n // // console.log('Empty Rows Count:', emptyRowsCount); // Log per vedere quante righe vuote vengono calcolate\r\n \r\n // const emptyRows = Array.from({ length: emptyRowsCount }, () =>\r\n // this.columns.reduce((acc: Record<string, any>, col) => {\r\n // // Se la colonna è quella per l'icona (ad esempio, 'detail'), assegna un'icona di fallback\r\n // if (this.isIconColumn(col.field)) {\r\n // acc[col.field] = this.faStroopwafel; // Fallback con un'icona vuota o di default\r\n // } else {\r\n // acc[col.field] = null; // Altrimenti, metti null per le altre colonne\r\n // }\r\n // return acc;\r\n // }, {})\r\n // );\r\n \r\n // // console.log('Empty Rows:', emptyRows); // Log per vedere le righe vuote generate\r\n \r\n // // Combina i dati esistenti con le righe vuote\r\n // return [...this.data, ...emptyRows];\r\n // }\r\n\r\n @ViewChild('dt') dt!: Table;\r\n\r\n initialValue: any[] = [];\r\n\r\n isSorted: boolean | null = null;\r\n currentSortedField: string | null = null;\r\n\r\n\r\n ngOnInit() {\r\n this.initialValue = [...this.data];\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectionMode'] && this.selectionMode === 'none') {\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n customSort(event: SortEvent) {\r\n if (this.currentSortedField !== event.field) {\r\n // Se si clicca su una colonna diversa, resetta lo stato e imposta ascendente\r\n this.currentSortedField = event.field!;\r\n this.isSorted = true;\r\n this.sortTableData(event);\r\n } else {\r\n if (this.isSorted == null || this.isSorted === undefined) {\r\n this.isSorted = true;\r\n this.sortTableData(event);\r\n } else if (this.isSorted == true) {\r\n this.isSorted = false;\r\n this.sortTableData(event);\r\n } else if (this.isSorted == false) {\r\n this.isSorted = null;\r\n this.data = [...this.initialValue];\r\n this.resetData.emit();\r\n this.dt.reset();\r\n }\r\n }\r\n }\r\n\r\n sortTableData(event: SortEvent) {\r\n event.data!.sort((data1: any, data2: any) => {\r\n let value1 = data1[event.field!];\r\n let value2 = data2[event.field!];\r\n\r\n if (event.field === 'priorityIcon') {\r\n value1 = data1['priority'];\r\n value2 = data2['priority'];\r\n }\r\n\r\n let result = null;\r\n if (value1 == null && value2 != null) result = -1;\r\n else if (value1 != null && value2 == null) result = 1;\r\n else if (value1 == null && value2 == null) result = 0;\r\n else {\r\n if (this.isPriorityField(event.field!)) {\r\n result = this.comparePriorities(value1, value2);\r\n } else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2);\r\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\r\n }\r\n\r\n return event.order! * result;\r\n });\r\n }\r\n\r\n private isPriorityField(fieldName: string): boolean {\r\n if (fieldName.toLowerCase().includes('priority') || fieldName === 'priorityIcon') {\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n isPriorityColumn(columnField: string): boolean {\r\n return columnField === 'priority' && this.data.some(row => row['priorityIcon']);\r\n }\r\n\r\n private comparePriorities(priority1: string, priority2: string): number {\r\n const priorityOrder: {[key: string]: number} = {\r\n 'P1': 1,\r\n 'P2': 2,\r\n 'P3': 3\r\n };\r\n\r\n const order1 = priorityOrder[priority1] || 999;\r\n const order2 = priorityOrder[priority2] || 999;\r\n\r\n return order1 - order2;\r\n }\r\n\r\n\r\n onRowSelect() {\r\n this.selectionChange.emit(this.selectedData);\r\n // console.log('onrowselect', this.selectedData)\r\n }\r\n\r\n clearSelection(): void {\r\n this.selectedData = [];\r\n this.selectionChange.emit(this.selectedData);\r\n // console.log('Selezione tabella resettata');\r\n }\r\n\r\n resetSorting(): void {\r\n this.isSorted = null;\r\n this.currentSortedField = null;\r\n this.data = [...this.initialValue];\r\n if (this.dt) {\r\n this.dt.reset();\r\n }\r\n this.resetData.emit();\r\n }\r\n\r\n\r\n}\r\n","<div class=\"card\">\r\n <p-table\r\n #dt\r\n [columns]=\"columns\"\r\n [value]=\"data\"\r\n [(selection)]=\"selectedData\"\r\n [paginator]=\"true\"\r\n [rows]=\"rows\"\r\n [first]=\"first\"\r\n [customSort]=\"true\"\r\n (onPage)=\"pageChange($event)\"\r\n (sortFunction)=\"customSort($event)\"\r\n (onRowSelect)=\"onRowSelect()\"\r\n (onRowUnselect)=\"onRowSelect()\"\r\n [selectionMode]=\"primeSelectionMode\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @if(showSelectionCheckboxes) {\r\n <th style=\"width: 10px\"></th>\r\n }\r\n @for(column of columns; track $index) {\r\n <th class=\"column-header\" [ngStyle]=\"{ 'width': column.width }\" [pSortableColumn]=\"column.sortable === false ? null : column.field\">\r\n {{ column.header }}\r\n @if(column.sortable !== false) {\r\n <p-sortIcon [field]=\"column.field\"></p-sortIcon>\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\" \r\n let-rowData \r\n let-columns=\"columns\"\r\n let-selected=\"selected\"\r\n >\r\n <tr [pSelectableRow]=\"primeSelectionMode ? rowData : null\" [attr.data-id]=\"rowData.id\">\r\n @if(showSelectionCheckboxes) {\r\n <td (click)=\"$event.stopPropagation()\">\r\n <p-tableCheckbox [value]=\"rowData\" [ngClass]=\"tableCheckbox\"/>\r\n </td>\r\n }\r\n @for (column of columns; track $index) {\r\n <td class=\"data-container\">\r\n <!-- Verifica il campo data -->\r\n @if (isDateColumn(rowData[column.field])) {\r\n <ng-container>\r\n {{ rowData[column.field] | date: 'dd/MM/yyyy - HH:mm' }}\r\n </ng-container>\r\n }\r\n <!-- Gestione speciale per la colonna priority -->\r\n @else if (column.field === 'priority' && rowData['priorityIcon']) {\r\n <ng-container>\r\n <fa-icon\r\n [icon]=\"rowData['priorityIcon']\"\r\n [ngStyle]=\"{ color: colorPicker(rowData, 'priority') }\"\r\n ></fa-icon>\r\n </ng-container>\r\n }\r\n <!-- Verifica se il campo della colonna è uno di quelli che contiene un'icona -->\r\n @else if (isIconColumn(column.field)) {\r\n <ng-container>\r\n <fa-icon \r\n [icon]=\"rowData[column.field]\"\r\n [ngClass]=\"{ \r\n 'invisible-icon': rowData[column.field] === faStroopwafel, \r\n 'default-style': rowData[column.field] !== faStroopwafel,\r\n 'color-style': rowData[column.field] === faMagnifyingGlass\r\n }\"\r\n [ngStyle]=\"{ color: colorPicker(rowData, column.field) }\"\r\n (click)=\"$event.stopPropagation(); actions[column.field] ? actions[column.field](rowData) : null\"\r\n ></fa-icon>\r\n </ng-container>\r\n } @else {\r\n {{ rowData[column.field]?.label || rowData[column.field] }}\r\n }\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>","export class PrimengItalianLocale {\r\n\r\n}\r\n\r\nexport const PRIMENG_ITALIAN_LOCALE = {\r\n firstDayOfWeek: 1,\r\n dayNames: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n dayNamesShort: [ \"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\r\n dayNamesMin: [ \"Do\", \"Lu\", \"Ma\", \"Me\", \"Gi\", \"Ve\", \"Sa\"],\r\n monthNames: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n monthNamesShort: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n today: 'Oggi',\r\n clear: 'Cancella',\r\n dateFormat: 'dd/mm/yy',\r\n weekHeader: 'Sm'\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faChevronLeft, faChevronRight, faCircleCheck, faCirclePlus } from '@fortawesome/free-solid-svg-icons';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { PrimeNG } from 'primeng/config';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { PRIMENG_ITALIAN_LOCALE } from '../services/primeng-italian-locale';\r\nimport { ThirdButton } from '../third-button/third-button';\r\nimport { TabsModule } from 'primeng/tabs';\r\n\r\n\r\nexport interface IAppointment {\r\n id: string,\r\n patientId: string,\r\n startDate: Date,\r\n endDate: Date,\r\n name: string,\r\n createDate: Date,\r\n accountProfileId: string\r\n}\r\n\r\nexport enum CalendarView {\r\n Month = 'month',\r\n Week = 'week'\r\n}\r\n\r\ninterface AppointmentCache {\r\n [dateKey: string]: {\r\n hasAppointments: boolean,\r\n appointments: IAppointment[],\r\n firstAppointment: IAppointment | null,\r\n timeSlotMap: { [timeSlot: string]: IAppointment[] }\r\n }\r\n}\r\n\r\n// Costante per il limite massimo della cache\r\nconst MAX_CACHE_SIZE = 100;\r\n\r\n\r\n@Component({\r\n selector: 'lib-calendar',\r\n imports: [CommonModule, FontAwesomeModule, DialogModule, ThirdButton, TabsModule],\r\n templateUrl: './calendar.html',\r\n styleUrl: './calendar.css'\r\n})\r\nexport class Calendar {\r\n\r\n @Input() appointments: IAppointment[] = [];\r\n //tab\r\n @Input() items: MenuItem[] = [];\r\n //timeslot\r\n @Input() startHour: number = 0;\r\n @Input() endHour: number = 24;\r\n @Input() timeInterval: number = 30;\r\n\r\n @Output() dateSelected = new EventEmitter<{date: Date, startTime: string}>();\r\n @Output() closeModal = new EventEmitter<void>();\r\n @Output() tabChanged = new EventEmitter<string>();\r\n\r\n faChevronLeft = faChevronLeft;\r\n faChevronRight = faChevronRight;\r\n faCirclePlus = faCirclePlus;\r\n faCircleCheck = faCircleCheck;\r\n viewDate: Date = new Date();\r\n selectedDate: Date | null = null;\r\n blinkDate: Date | null = null;\r\n selectedDateString: string = '';\r\n selectedStartTime: string | undefined;\r\n weekDays: string[] = ['LUN', 'MAR', 'MER', 'GIO', 'VEN', 'SAB', 'DOM'];\r\n monthDays: Date[] = [];\r\n currentView: CalendarView = CalendarView.Month;\r\n timeSlots: string[] = [];\r\n weeks: Date[][] = [];\r\n visibleList: boolean = false;\r\n newAppointment: boolean = false;\r\n //tabmenu\r\n activeItem: MenuItem | undefined; // Per compatibilità con il resto del codice\r\n activeValue: string = ''; // Per il nuovo componente Tabs\r\n //dialog list appointment\r\n selectedAppointments: IAppointment[] = [];\r\n //hover appuntamenti\r\n hoveredAppointment: any = null;\r\n tooltipStyle: any = {};\r\n\r\n private appointmentCache: AppointmentCache = {};\r\n private monthViewData: any = null;\r\n private weekViewData: any = null;\r\n private formattedDateCache: Map<string, string> = new Map(); // Cache per le date formattate\r\n private cacheKeys: string[] = []; // Per implementare LRU (Least Recently Used) cache\r\n\r\n //\r\n isLoading: boolean = false;\r\n\r\n public CalendarView = CalendarView;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private primengConfig: PrimeNG) {\r\n this.configuraLingua();\r\n this.generateTimeSlots();\r\n this.generateView(this.currentView, this.viewDate);\r\n\r\n this.setDialogWidth();\r\n }\r\n\r\n configuraLingua() {\r\n this.primengConfig.setTranslation(PRIMENG_ITALIAN_LOCALE);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n let needsRefresh = false;\r\n \r\n if (changes['startHour'] || changes['endHour'] || changes['timeInterval']) {\r\n this.generateTimeSlots();\r\n needsRefresh = true;\r\n }\r\n\r\n if (changes['appointments']) {\r\n this.invalidateAppointmentCache();\r\n needsRefresh = true;\r\n }\r\n \r\n if (needsRefresh) {\r\n this.generateView(this.currentView, this.viewDate);\r\n }\r\n }\r\n\r\n // Metodo per invalidare la cache in modo selettivo\r\n private invalidateAppointmentCache() {\r\n this.appointmentCache = {};\r\n this.cacheKeys = [];\r\n }\r\n\r\n // Metodo per generare la chiave della cache basata sulla data\r\n private formatDateKey(date: Date): string {\r\n return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\r\n }\r\n\r\n // Metodo per gestire la cache LRU (Least Recently Used)\r\n private cacheAppointmentData(dateKey: string, data: any) {\r\n // Se la chiave è già nella cache, rimuoverla dall'array delle chiavi\r\n const existingIndex = this.cacheKeys.indexOf(dateKey);\r\n if (existingIndex > -1) {\r\n this.cacheKeys.splice(existingIndex, 1);\r\n }\r\n \r\n // Aggiungi la chiave alla fine (più recente)\r\n this.cacheKeys.push(dateKey);\r\n \r\n // Imposta i dati nella cache\r\n this.appointmentCache[dateKey] = data;\r\n \r\n // Se la cache supera la dimensione massima, rimuovi l'elemento meno recente\r\n if (this.cacheKeys.length > MAX_CACHE_SIZE) {\r\n const oldestKey = this.cacheKeys.shift();\r\n if (oldestKey) {\r\n delete this.appointmentCache[oldestKey];\r\n }\r\n }\r\n }\r\n\r\n private precomputeAppointments() {\r\n // Processa solo i giorni visibili per prestazioni ottimali\r\n const visibleDays = this.getVisibleDays();\r\n this.precomputeForDays(visibleDays);\r\n \r\n // Poi elabora i giorni rimanenti in background con un ritardo\r\n if (this.currentView === CalendarView.Month) {\r\n setTimeout(() => {\r\n const allDays = this.weeks.flat();\r\n const remainingDays = allDays.filter(day => \r\n !visibleDays.some(vDay => this.isSameDate(day, vDay))\r\n );\r\n // Elabora in batch di 20 giorni alla volta per evitare di bloccare l'interfaccia\r\n this.precomputeInBatches(remainingDays, 20);\r\n }, 200);\r\n }\r\n }\r\n \r\n // Precomputa in batch per evitare il blocco dell'interfaccia\r\n private precomputeInBatches(days: Date[], batchSize: number) {\r\n if (days.length === 0) return;\r\n \r\n const batch = days.slice(0, batchSize);\r\n const remaining = days.slice(batchSize);\r\n \r\n this.precomputeForDays(batch);\r\n \r\n if (remaining.length > 0) {\r\n setTimeout(() => {\r\n this.precomputeInBatches(remaining, batchSize);\r\n }, 0);\r\n }\r\n }\r\n \r\n private getVisibleDays(): Date[] {\r\n // Per la vista mensile, consideriamo solo le settimane più visibili\r\n if (this.currentView === CalendarView.Month && this.weeks.length > 0) {\r\n return this.weeks.slice(0, 3).flat();\r\n }\r\n return this.monthDays;\r\n }\r\n \r\n private precomputeForDays(days: Date[]) {\r\n // Elabora la cache per un gruppo di giorni\r\n for (const date of days) {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n // Se già in cache, salta\r\n if (this.appointmentCache[dateKey]) continue;\r\n \r\n // Filtra gli appuntamenti per questa data\r\n const appointmentsForDay = this.appointments.filter(\r\n appointment => this.isSameDate(appointment.startDate, date)\r\n ).sort((a, b) => \r\n this.extractTime(a.startDate).localeCompare(this.extractTime(b.startDate))\r\n );\r\n \r\n // Mappa appuntamenti per time slot\r\n const timeSlotMap: { [timeSlot: string]: IAppointment[] } = {};\r\n \r\n for (const timeSlot of this.timeSlots) {\r\n timeSlotMap[timeSlot] = this.appointments.filter(appointment => {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n \r\n return this.isSameDate(appointment.startDate, date) &&\r\n startTime <= timeSlot &&\r\n endTime > timeSlot;\r\n });\r\n }\r\n \r\n // Memorizza nella cache\r\n const cacheData = {\r\n hasAppointments: appointmentsForDay.length > 0,\r\n appointments: appointmentsForDay,\r\n firstAppointment: appointmentsForDay.length > 0 ? appointmentsForDay[0] : null,\r\n timeSlotMap: timeSlotMap\r\n };\r\n \r\n this.cacheAppointmentData(dateKey, cacheData);\r\n }\r\n }\r\n\r\n generateView(view: CalendarView, date: Date) {\r\n this.isLoading = true;\r\n \r\n // non rigenerare dati già esistenti\r\n if (view === CalendarView.Month && this.monthViewData && \r\n this.monthViewData.month === date.getMonth() && \r\n this.monthViewData.year === date.getFullYear()) {\r\n this.weeks = [...this.monthViewData.weeks];\r\n this.monthDays = [...this.monthViewData.monthDays];\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n return;\r\n } else if (view === CalendarView.Week && this.weekViewData &&\r\n this.isSameWeek(this.weekViewData.date, date)) {\r\n this.monthDays = [...this.weekViewData.monthDays];\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n return;\r\n }\r\n\r\n switch (view) {\r\n case CalendarView.Month:\r\n this.generateMonthView(date);\r\n this.monthViewData = { \r\n month: date.getMonth(), \r\n year: date.getFullYear(),\r\n weeks: [...this.weeks], \r\n monthDays: [...this.monthDays] \r\n };\r\n break;\r\n case CalendarView.Week:\r\n this.generateWeekView(date);\r\n this.weekViewData = { \r\n date: new Date(date),\r\n monthDays: [...this.monthDays] \r\n };\r\n break;\r\n }\r\n\r\n // Calcola gli appuntamenti solo per i giorni visibili inizialmente\r\n this.precomputeAppointments();\r\n \r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n // Verifica se due date sono nella stessa settimana\r\n private isSameWeek(date1: Date, date2: Date): boolean {\r\n const d1 = new Date(date1);\r\n const d2 = new Date(date2);\r\n \r\n // Ottieni l'inizio settimana per entrambe le date\r\n const start1 = this.startOfWeek(d1);\r\n const start2 = this.startOfWeek(d2);\r\n \r\n return start1.getTime() === start2.getTime();\r\n }\r\n\r\n generateMonthView(date: Date) {\r\n const start = new Date(date.getFullYear(), date.getMonth(), 1);\r\n const firstMonday = this.startOfWeek(start);\r\n \r\n this.weeks = [];\r\n this.monthDays = [];\r\n let week: Date[] = [];\r\n\r\n // Itera tutti i giorni necessari per coprire il mese più i giorni fuori mese\r\n for (let day = 0; day < 42; day++) { // 6 settimane * 7 giorni\r\n let currentDate = new Date(firstMonday);\r\n currentDate.setDate(firstMonday.getDate() + day);\r\n \r\n week.push(currentDate);\r\n this.monthDays.push(currentDate);\r\n\r\n if (week.length === 7) {\r\n this.weeks.push(week);\r\n week = [];\r\n }\r\n }\r\n }\r\n\r\n generateWeekView(date: Date) {\r\n const startOfWeek = this.startOfWeek(date);\r\n this.monthDays = [];\r\n\r\n for (let day = 0; day < 7; day++) {\r\n const weekDate = new Date(startOfWeek);\r\n weekDate.setDate(startOfWeek.getDate() + day);\r\n this.monthDays.push(weekDate);\r\n }\r\n }\r\n\r\n generateTimeSlots() {\r\n this.timeSlots = [];\r\n for (let hour = this.startHour; hour <= this.endHour; hour++) {\r\n // Calcola gli slot in base all'intervallo specificato\r\n const minuteIntervals = [];\r\n for (let minute = 0; minute < 60; minute += this.timeInterval) {\r\n minuteIntervals.push(minute);\r\n }\r\n \r\n for (let minute of minuteIntervals) {\r\n // Salta l'ultimo slot se è oltre l'ora finale\r\n if (hour === this.endHour && minute > 0) break;\r\n \r\n const formattedHour = hour < 10 ? `0${hour}` : `${hour}`;\r\n const formattedMinute = minute === 0 ? '00' : `${minute}`;\r\n this.timeSlots.push(`${formattedHour}:${formattedMinute}`);\r\n }\r\n }\r\n }\r\n\r\n switchToView(view: CalendarView) {\r\n if (this.currentView === view) return; // Non fare nulla se la vista è già quella corrente\r\n \r\n this.isLoading = true;\r\n this.currentView = view;\r\n this.visibleList = false;\r\n \r\n // Usa setTimeout per permettere all'indicatore di caricamento di essere visualizzato\r\n setTimeout(() => {\r\n if (view === CalendarView.Week && this.selectedDate) {\r\n this.viewDate = new Date(this.selectedDate);\r\n }\r\n \r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n startOfWeek(date: Date) {\r\n const start = new Date(date);\r\n const day = start.getDay();\r\n const diff = start.getDate() - (day === 0 ? 6 : day - 1);\r\n return new Date(start.setDate(diff));\r\n }\r\n\r\n previous() {\r\n this.isLoading = true;\r\n \r\n setTimeout(() => {\r\n if (this.currentView === CalendarView.Month) {\r\n this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() - 1, 1);\r\n } else {\r\n const newDate = new Date(this.viewDate);\r\n newDate.setDate(newDate.getDate() - 7);\r\n this.viewDate = newDate;\r\n }\r\n \r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n next() {\r\n this.isLoading = true;\r\n \r\n setTimeout(() => {\r\n if (this.currentView === CalendarView.Month) {\r\n this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() + 1, 1);\r\n } else {\r\n const newDate = new Date(this.viewDate);\r\n newDate.setDate(newDate.getDate() + 7);\r\n this.viewDate = newDate;\r\n }\r\n \r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n isToday(date: Date): boolean {\r\n const today = new Date();\r\n return (\r\n date.getDate() === today.getDate() &&\r\n date.getMonth() === today.getMonth() &&\r\n date.getFullYear() === today.getFullYear()\r\n );\r\n }\r\n\r\n isPastDate(date: Date): boolean {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return date < today;\r\n }\r\n\r\n isPastTime(date: Date, timeSlot: string): boolean {\r\n const currentTime = new Date();\r\n const [hour, minute] = timeSlot.split(':').map((x) => parseInt(x));\r\n const appointmentTime = new Date(date);\r\n appointmentTime.setHours(hour, minute, 0, 0);\r\n return appointmentTime < currentTime;\r\n }\r\n\r\n hasAppointments(date: Date): boolean {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey]) {\r\n return this.appointmentCache[dateKey].hasAppointments;\r\n }\r\n \r\n // Se non è in cache, calcola e memorizza\r\n const hasApps = this.getAppointmentsForDate(date, this.timeSlots).length > 0;\r\n\r\n return hasApps;\r\n }\r\n\r\n isTimeSlotOccupied(date: Date, timeSlot: string): boolean {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey] && this.appointmentCache[dateKey].timeSlotMap[timeSlot]) {\r\n return this.appointmentCache[dateKey].timeSlotMap[timeSlot].length > 0;\r\n }\r\n \r\n return this.getAppointmentsForDataTime(date, timeSlot).length > 0;\r\n }\r\n\r\n isCurrentMonth(date: Date): boolean {\r\n return (\r\n date.getMonth() === this.viewDate.getMonth() &&\r\n date.getFullYear() === this.viewDate.getFullYear()\r\n );\r\n }\r\n\r\n isSameDate(date1: Date, date2: Date): boolean {\r\n if (!date1 || !date2) return false;\r\n \r\n const d1 = new Date(date1);\r\n const d2 = new Date(date2);\r\n \r\n return (\r\n d1.getDate() === d2.getDate() &&\r\n d1.getMonth() === d2.getMonth() &&\r\n d1.getFullYear() === d2.getFullYear()\r\n );\r\n }\r\n\r\n formatDate(date: Date): string {\r\n if (!date) return '';\r\n \r\n const dateKey = this.formatDateKey(date);\r\n if (this.formattedDateCache.has(dateKey)) {\r\n return this.formattedDateCache.get(dateKey)!;\r\n }\r\n \r\n const formatted = date.toLocaleDateString('it-IT', {\r\n weekday: 'long',\r\n day: '2-digit',\r\n month: 'long',\r\n year: 'numeric'\r\n });\r\n \r\n this.formattedDateCache.set(dateKey, formatted);\r\n return formatted;\r\n }\r\n\r\n extractTime(dateInput: Date): string {\r\n const date = new Date(dateInput);\r\n if (isNaN(date.getTime())) {\r\n return '00:00';\r\n }\r\n \r\n const hours = date.getHours().toString().padStart(2, '0');\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n return `${hours}:${minutes}`;\r\n }\r\n\r\n selectDate(date?: Date, startTime?: string) {\r\n if (!date) return;\r\n \r\n const previousDate = this.selectedDate;\r\n this.selectedDate = date;\r\n \r\n if (this.currentView === CalendarView.Month || this.viewDate.getMonth() !== date.getMonth()) {\r\n this.viewDate = new Date(date);\r\n }\r\n \r\n // Usa la cache per gli appuntamenti quando possibile\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey]) {\r\n this.selectedAppointments = this.appointmentCache[dateKey].appointments;\r\n } else {\r\n // Se non è in cache, calcola normalmente\r\n this.selectedAppointments = this.getAppointmentsForDate(date, this.timeSlots);\r\n }\r\n \r\n this.selectedDateString = this.formatDate(date);\r\n \r\n if (startTime) {\r\n if (this.isTimeSlotOccupied(date, startTime) || this.isPastTime(date, startTime)) {\r\n return;\r\n }\r\n \r\n this.newAppointment = true;\r\n this.selectedStartTime = startTime;\r\n this.dateSelected.emit({date, startTime});\r\n } else {\r\n if (this.selectedAppointments.length > 1 || \r\n (this.selectedAppointments.length === 1 && this.isPastDate(date))) {\r\n this.visibleList = true;\r\n this.dateSelected.emit({date, startTime: '00:00'});\r\n } else {\r\n this.visibleList = false;\r\n \r\n if (this.currentView !== CalendarView.Week) {\r\n this.weekViewData = null;\r\n this.switchToView(CalendarView.Week);\r\n } else if (previousDate && this.isSameDate(previousDate, date)) {\r\n this.selectedDate = null;\r\n this.cdr.detectChanges();\r\n setTimeout(() => {\r\n this.selectedDate = date;\r\n this.cdr.detectChanges();\r\n }, 10);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getAppointmentsForDate(day: Date, timeSlots: string[]): IAppointment[] {\r\n return this.appointments\r\n .filter((appointment) => this.isSameDate(appointment.startDate, day))\r\n .map((appointment) => {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n return { ...appointment, startTime, endTime };\r\n });\r\n }\r\n\r\n getAppointmentDuration(appointment: any): number {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n \r\n const startIndex = this.timeSlots.findIndex(slot => slot === startTime);\r\n const endIndex = this.timeSlots.findIndex(slot => slot === endTime);\r\n \r\n if (startIndex === -1 || endIndex === -1) return 1;\r\n return endIndex - startIndex;\r\n }\r\n\r\n getAppointmentHeightStyle(appointment: any): object {\r\n const duration = this.getAppointmentDuration(appointment);\r\n const borderThickness = 6; // spessore del bordo in pixel\r\n const cellHeight = 50; // altezza di una cella in pixel\r\n \r\n // Se la tabella usa border-collapse: collapse\r\n const totalBorders = 1; // solo un bordo per ogni confine tra celle\r\n \r\n // Se la tabella usa border-collapse: separate\r\n // const totalBorders = duration + 1; // ogni cella ha il suo bordo\r\n \r\n const heightInPixels = (duration * cellHeight) - (totalBorders * borderThickness);\r\n \r\n return {\r\n 'background-color': 'var(--appointment-blue-color)',\r\n 'height': heightInPixels + 'px',\r\n 'z-index': '10',\r\n 'top': 0\r\n };\r\n }\r\n\r\n getFirstAppointmentForDate(day: Date, timeSlots: string[]) {\r\n const dateKey = this.formatDateKey(day);\r\n \r\n if (this.appointmentCache[dateKey]) {\r\n return this.appointmentCache[dateKey].firstAppointment;\r\n }\r\n \r\n const appointmentsForDay = this.getAppointmentsForDate(day, timeSlots);\r\n return appointmentsForDay.length > 0 ? appointmentsForDay[0] : null;\r\n }\r\n\r\n getAppointmentsForDataTime(date: Date, timeSlot: string): IAppointment[] {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey] && this.appointmentCache[dateKey].timeSlotMap[timeSlot]) {\r\n return this.appointmentCache[dateKey].timeSlotMap[timeSlot];\r\n }\r\n \r\n return this.appointments.filter(appointment => {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n \r\n return this.isSameDate(appointment.startDate, date) &&\r\n startTime <= timeSlot &&\r\n endTime > timeSlot;\r\n });\r\n }\r\n\r\n private formatHourToTimeString(hour: number): string {\r\n const formattedHour = hour < 10 ? `0${hour}` : `${hour}`;\r\n return `${formattedHour}:00`;\r\n }\r\n\r\n toggleNewAppointment() {\r\n if (this.currentView !== CalendarView.Week) {\r\n this.weekViewData = null;\r\n this.switchToView(CalendarView.Week);\r\n }\r\n \r\n this.selectedStartTime = this.formatHourToTimeString(this.startHour);\r\n this.newAppointment = true;\r\n this.dateSelected.emit({date: this.selectedDate!, startTime: this.selectedStartTime});\r\n }\r\n\r\n closeAppointmentModal() {\r\n this.closeModal.emit();\r\n this.newAppointment = false;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onDialogHide() {\r\n this.closeModal.emit();\r\n }\r\n\r\n viewToday(): void {\r\n this.isLoading = true;\r\n \r\n setTimeout(() => {\r\n this.viewDate = new Date();\r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n // Tooltip\r\n\r\n showTooltip(appointment: any, event: MouseEvent) {\r\n this.hoveredAppointment = appointment;\r\n \r\n this.cdr.detectChanges();\r\n \r\n //posiziono il tooltip dopo che è stato creato\r\n setTimeout(() => {\r\n const tooltip = document.querySelector('.tooltip') as HTMLElement;\r\n if (!tooltip) return;\r\n \r\n //non si mostra finché non è posizionato\r\n tooltip.style.opacity = '0';\r\n \r\n //dove si trova l'appuntamento hoverato\r\n const appointmentRect = (event.target as HTMLElement).getBoundingClientRect();\r\n const tooltipWidth = tooltip.offsetWidth;\r\n const tooltipHeight = tooltip.offsetHeight;\r\n \r\n //controlla in che colonna si trova l'appuntamento\r\n const cell = (event.target as HTMLElement).closest('td');\r\n if (!cell) return;\r\n \r\n const cellIndex = cell.cellIndex;\r\n \r\n //calcolo lo spazio disponibile nelle varie direzioni\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n const spaceRight = viewportWidth - appointmentRect.right;\r\n const spaceLeft = appointmentRect.left;\r\n const spaceAbove = appointmentRect.top;\r\n const spaceBelow = viewportHeight - appointmentRect.bottom;\r\n \r\n let left = 0;\r\n let top = 0;\r\n \r\n if (cellIndex === 1) { //per il lunedì lo posiziono a destra\r\n left = appointmentRect.right + 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n } \r\n else if (cellIndex === 7) { //per la domenica lo posiziono a sinistra\r\n left = appointmentRect.left - tooltipWidth - 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n }\r\n else { //per le altre colonne lo posiziono dove è più comodo\r\n if (spaceRight >= tooltipWidth + 10) { //se c'è spazio lo metto a destra\r\n left = appointmentRect.right + 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n }\r\n else if (spaceLeft >= tooltipWidth + 10) { //altrimenti a sinistra\r\n left = appointmentRect.left - tooltipWidth - 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n }\r\n else { //se non c'è spazio laterale lo metto sopra o sotto\r\n left = appointmentRect.left + (appointmentRect.width / 2);\r\n tooltip.style.transform = 'translateX(-50%)';\r\n \r\n if (spaceAbove >= tooltipHeight + 10) { //sopra se c'è spazio\r\n top = appointmentRect.top - tooltipHeight - 10;\r\n }\r\n else { //sotto\r\n top = appointmentRect.bottom + 10;\r\n }\r\n }\r\n }\r\n \r\n if (left + tooltipWidth > viewportWidth) {\r\n left = viewportWidth - tooltipWidth - 10;\r\n tooltip.style.transform = 'none';\r\n }\r\n \r\n if (left < 0) {\r\n left = 10;\r\n tooltip.style.transform = 'none';\r\n }\r\n \r\n if (top + tooltipHeight > viewportHeight) {\r\n top = viewportHeight - tooltipHeight - 10;\r\n }\r\n \r\n if (top < 0) {\r\n top = 10;\r\n }\r\n \r\n tooltip.style.left = `${left}px`;\r\n tooltip.style.top = `${top}px`;\r\n \r\n //mostrare il tooltip\r\n setTimeout(() => {\r\n tooltip.style.opacity = '1';\r\n }, 10);\r\n }, 0);\r\n }\r\n\r\n hideTooltip() {\r\n this.hoveredAppointment = null;\r\n \r\n this.cdr.detectChanges();\r\n \r\n //nascondo tooltip se rimasto in visualizzazione per errore\r\n const tooltip = document.querySelector('.tooltip') as HTMLElement;\r\n if (tooltip) {\r\n tooltip.style.opacity = '0';\r\n }\r\n }\r\n\r\n // Tab menu\r\n // onActiveItemChange(event: MenuItem) {\r\n // this.activeItem = event;\r\n // this.cdr.markForCheck();\r\n // }\r\n // onActiveItemChange(value: string) {\r\n // this.activeItem = value;\r\n \r\n // // Trova l'item corrispondente per mantenere compatibilità\r\n // const selectedItem = this.items.find(item => \r\n // (item.value && item.value === value) || item.label === value\r\n // );\r\n \r\n // if (selectedItem) {\r\n // this.activeItem = selectedItem;\r\n // if (selectedItem.label) {\r\n // this.tabChanged.emit(selectedItem.label);\r\n // }\r\n // }\r\n \r\n // this.cdr.markForCheck();\r\n // }\r\n onValueChange(value: string | number) {\r\n const stringValue = String(value);\r\n this.activeValue = stringValue;\r\n \r\n // Trova l'item corrispondente per mantenere compatibilità\r\n const selectedItem = this.items.find(item => \r\n (item['value'] && item['value'] === value) || item.label === value\r\n );\r\n \r\n if (selectedItem) {\r\n this.activeItem = selectedItem; // Mantieni per compatibilità con il resto del codice\r\n if (selectedItem.label) {\r\n this.tabChanged.emit(selectedItem.label);\r\n }\r\n }\r\n \r\n this.cdr.markForCheck();\r\n }\r\n\r\n ngOnInit() {\r\n this.primengConfig.setTranslation(PRIMENG_ITALIAN_LOCALE);\r\n if (this.items.length > 0) {\r\n this.activeValue = this.items[0]['value'] || this.items[0].label || ''; // Per il nuovo Tabs\r\n this.activeItem = this.items[0]; // Per compatibilità con il resto del codice\r\n }\r\n this.generateTimeSlots();\r\n this.precomputeAppointments();\r\n }\r\n\r\n\r\n dialogWidth: string = '60%';\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.setDialogWidth();\r\n }\r\n\r\n setDialogWidth() {\r\n this.dialogWidth = window.innerWidth <= 1000 ? '87%' : '60%';\r\n }\r\n\r\n\r\n}\r\n","<div class=\"container\">\r\n <div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n @if (currentView === 'week') {\r\n <lib-third-button\r\n text=\"\"\r\n [icon]=\"faChevronLeft\"\r\n [bgColor]=\"'transparent'\"\r\n [textColor]=\"'#2d519f'\"\r\n [width]=\"'40px'\"\r\n [height]=\"'40px'\"\r\n [border]=\"'none'\"\r\n (onClick)=\"switchToView(CalendarView.Month)\"\r\n >\r\n </lib-third-button>\r\n }\r\n <div>\r\n <h2 class=\"calendar-month\">\r\n {{ viewDate | date : \"MMMM\" | titlecase }}\r\n <span>{{ viewDate | date: \"y\" }}</span>\r\n </h2>\r\n </div>\r\n <div class=\"calendar-controls\">\r\n <fa-icon \r\n [icon]=\"faChevronLeft\"\r\n (click)=\"previous()\"\r\n style=\"margin-right: 10px; color: #2d519f;\"\r\n ></fa-icon>\r\n <lib-third-button\r\n text=\"Oggi\"\r\n [bgColor]=\"'transparent'\"\r\n [textColor]=\"'#2d519f'\"\r\n [width]=\"'80px'\"\r\n [height]=\"'40px'\"\r\n [border]=\"'1px solid #2d519f'\"\r\n (onClick)=\"viewToday()\"\r\n >\r\n </lib-third-button>\r\n <fa-icon \r\n [icon]=\"faChevronRight\"\r\n (click)=\"next()\"\r\n style=\"margin-left: 10px; color: #2d519f;\"\r\n ></fa-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Month view -->\r\n @if (currentView === 'month') {\r\n <table\r\n width=\"100%\"\r\n cellspacing=\"0\"\r\n cellpadding=\"0\"\r\n class=\"calendar-view-month\"\r\n >\r\n <thead>\r\n <tr>\r\n @for (day of weekDays; track $index) {\r\n <th>{{ day }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (week of weeks; track $index) {\r\n <tr>\r\n @for (date of week; track $index) {\r\n <td \r\n [class.today]=\"isToday(date)\" \r\n [ngStyle]=\"{ opacity: isCurrentMonth(date) ? '1' : '0.5' }\"\r\n [ngClass]=\"{'past-day': isPastDate(date), 'clickable-past': isPastDate(date) && hasAppointments(date)}\"\r\n >\r\n <div\r\n (click)=\"selectDate(date)\"\r\n class=\"cell-overlay\"\r\n tabindex=\"0\"\r\n ></div>\r\n <div class=\"date\">\r\n {{ date.getDate() }}\r\n </div>\r\n <div class=\"appointments\">\r\n @if (getFirstAppointmentForDate(date, timeSlots)) {\r\n <div\r\n tabindex=\"0\"\r\n class=\"appointment\"\r\n [ngStyle]=\"{ 'background-color': 'var(--appointment-blue-color)' }\"\r\n >\r\n <span>{{ getFirstAppointmentForDate(date, timeSlots)?.name }}</span>\r\n </div>\r\n \r\n @if (getAppointmentsForDate(date, timeSlots).length > 1) {\r\n <div class=\"more-appointments\">\r\n +{{ getAppointmentsForDate(date, timeSlots).length - 1 }} altr{{ getAppointmentsForDate(date, timeSlots).length - 1 > 1 ? 'i' : 'o' }}\r\n </div>\r\n }\r\n }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n <p-dialog [header]=\"'Lista appuntamenti per il ' + this.selectedDateString\" [modal]=\"true\" [(visible)]=\"visibleList\" [style]=\"{ width: '35%' }\">\r\n <div class=\"appointment-list\">\r\n @for (appointment of selectedAppointments; track $index) {\r\n <div class=\"appointment-item\">\r\n <span class=\"appointment-time\">{{ extractTime(appointment.startDate) }} - {{ extractTime(appointment.endDate) }}</span>\r\n <span class=\"appointment-name\">{{ appointment.name }}</span> \r\n </div>\r\n }\r\n </div>\r\n @if (!isPastDate(selectedDate!)) {\r\n <div class=\"button-container\">\r\n <lib-third-button\r\n text=\"Aggiungi nuovo\"\r\n [bgColor]=\"'var(--primary-blue-color)'\"\r\n [textColor]=\"'white'\"\r\n [width]=\"'200px'\"\r\n [height]=\"'40px'\"\r\n [fontWeight]=\"'600'\"\r\n [border]=\"'1px solid var(--primary-blue-color)'\"\r\n [icon]=\"faCirclePlus\"\r\n (onClick)=\"toggleNewAppointment()\"\r\n >\r\n </lib-third-button>\r\n </div>\r\n }\r\n </p-dialog>\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <!-- Week view -->\r\n @if (currentView === 'week') {\r\n <table\r\n width=\"100%\"\r\n height=\"100%\"\r\n cellspacing=\"0\"\r\n cellpadding=\"0\"\r\n class=\"calendar-view-week\"\r\n >\r\n <thead>\r\n <tr>\r\n <th></th>\r\n @for (day of weekDays; track $index) {\r\n <th>{{ day }} {{ monthDays[$index].getDate() }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody class=\"contenitore-calendario\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <tr>\r\n <td [width]=\"10\" class=\"calendar-slot-cell\">\r\n <span>{{ timeSlot }}</span>\r\n </td>\r\n @for (day of weekDays; track $index) {\r\n <td [class.today]=\"isToday(monthDays[$index])\" \r\n [ngClass]=\"\r\n {'blink': selectedDate && isSameDate(monthDays[$index], selectedDate), \r\n 'past-day': isPastDate(monthDays[$index]), \r\n 'clickable-past': isPastDate(monthDays[$index]) && hasAppointments(monthDays[$index]),\r\n 'disabled': isPastTime(monthDays[$index], timeSlot) && !isTimeSlotOccupied(monthDays[$index], timeSlot),\r\n 'occupied': isTimeSlotOccupied(monthDays[$index], timeSlot)\r\n }\"\r\n >\r\n <div \r\n class=\"cell-overlay\"\r\n style=\"z-index: 0;\"\r\n tabindex=\"0\"\r\n [class.occupied]=\"isTimeSlotOccupied(monthDays[$index], timeSlot)\"\r\n (click)=\"!isTimeSlotOccupied(monthDays[$index], timeSlot) && selectDate(monthDays[$index], timeSlot)\"\r\n ></div>\r\n @for (appointment of getAppointmentsForDataTime(monthDays[$index], timeSlot); track $index) {\r\n @if (extractTime(appointment.startDate) === timeSlot) {\r\n <div\r\n tabindex=\"0\"\r\n class=\"appointment\"\r\n [ngStyle]=\"getAppointmentHeightStyle(appointment)\"\r\n (mouseenter)=\"showTooltip(appointment, $event)\"\r\n (mouseleave)=\"hideTooltip()\"\r\n >\r\n <span>{{ appointment.name }}</span>\r\n </div>\r\n @if (hoveredAppointment === appointment) {\r\n <div class=\"tooltip\">\r\n <strong>{{ appointment.name }}</strong>\r\n <br>\r\n <span>Inizio: <span style=\"font-weight: 600;\">{{ extractTime(appointment.startDate) }}</span></span>\r\n <br>\r\n <span>Fine: <span style=\"font-weight: 600;\">{{ extractTime(appointment.endDate) }}</span></span>\r\n <br>\r\n <span>Creato il <span style=\"font-weight: 600;\">{{ appointment.createDate | date: 'dd/MM/yyyy HH:mm' }}</span> da <span style=\"font-weight: 600;\">{{ appointment.accountProfileId }}</span></span>\r\n </div>\r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n <p-dialog [header]=\"'Nuova Prestazione per ' + this.selectedDateString + (this.selectedStartTime !== undefined || '00:00' ? ' alle ore ' + this.selectedStartTime : '')\" [modal]=\"true\" [(visible)]=\"newAppointment\" [style]=\"{ width: dialogWidth, height: '75%' }\" (onHide)=\"onDialogHide()\">\r\n <!-- <p-tabMenu \r\n [model]=\"items\"\r\n [activeItem]=\"activeItem\" \r\n (activeItemChange)=\"onActiveItemChange($event)\" \r\n /> -->\r\n <p-tabs\r\n [value]=\"activeValue || ''\"\r\n (valueChange)=\"onValueChange($event)\"\r\n >\r\n <p-tablist>\r\n @for (item of items; track $index) {\r\n <p-tab\r\n [value]=\"item['value'] || item.label || ''\"\r\n [disabled]=\"item.disabled\"\r\n class=\"flex items-center !gap-2 text-inherit\"\r\n >\r\n @if (item.icon) {\r\n <fa-icon [icon]=\"item.icon\"></fa-icon>\r\n }\r\n <span>{{ item.label }}</span>\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n <div class=\"dialog-container\">\r\n <div class=\"list-add-appointment\">\r\n @if (activeItem?.label === 'Appuntamento') {\r\n <div class=\"appointment-list-new-appointment\">\r\n @if (selectedAppointments.length !== 0) {\r\n <div class=\"appointment-title\">Appuntamenti per la giornata</div>\r\n }\r\n @if (selectedAppointments.length === 0) {\r\n <div class=\"appointment-none\">Non ci sono appuntamenti fissati</div>\r\n } @else {\r\n @for (appointment of selectedAppointments; track $index) {\r\n <div class=\"appointment-item\">\r\n <span class=\"appointment-time\">{{ extractTime(appointment.startDate) }} - {{ extractTime(appointment.endDate) }}</span>\r\n <span class=\"appointment-name\">{{ appointment.name }}</span> \r\n </div>\r\n }\r\n }\r\n </div>\r\n <div class=\"add-container\">\r\n <ng-content select=\".custom-input\"></ng-content>\r\n </div>\r\n } @else {\r\n <div class=\"add-prescription\">\r\n <ng-content select=\".custom-prescription\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"save-button-container\">\r\n <ng-content select=\".save-button\"></ng-content>\r\n </div>\r\n </div>\r\n </p-dialog>\r\n </tbody>\r\n </table>\r\n }\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-message',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './message.html',\r\n styleUrl: './message.css'\r\n})\r\nexport class Message {\r\n\r\n @Input() text: string = 'Messaggio di test';\r\n @Input() date: string = '12/03/2025 10:00';\r\n @Input() from: string = 'Test';\r\n @Input() bgColor: string = 'gainsboro';\r\n @Input() textColor: string = 'black';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() width: string = '335px';\r\n @Input() minHeight: string = '100px'\r\n @Input() borderRadius: string = '5px'\r\n @Input() border: string = ''\r\n @Input() padding: string = '1% 2%'\r\n @Input() viewed?: any;\r\n\r\n\r\n}\r\n","<!-- <button\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'width': width,\r\n 'height': height,\r\n 'border-radius': borderRadius,\r\n 'border': border\r\n }\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button> -->\r\n\r\n<div\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'text': text,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'width': width,\r\n 'min-height': minHeight,\r\n 'border-radius': borderRadius,\r\n 'border': border,\r\n 'padding': padding, \r\n }\"\r\n style=\"display: flex; flex-direction: column; justify-content: space-between\"\r\n> \r\n<div>\r\n <b>{{ from }}</b>\r\n <br>\r\n {{ text }}\r\n <br>\r\n</div>\r\n<div style=\"justify-content: end; display: flex;\">\r\n {{date}} <fa-icon [icon]=\"viewed\" style=\"margin-left: 10px;\"></fa-icon>\r\n</div>\r\n</div>","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_CONFIG = new InjectionToken('API_CONFIG');","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../DTOSurvey/Response/IDictionaryQuestionResponse';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryStepResponse } from '../DTOSurvey/Response/IDictionaryStepResponse';\r\nimport { IPatientSurveyResponse } from '../DTOSurvey/Response/IPatientSurveyResponse';\r\nimport { IPatientSurveyRequest } from '../DTOSurvey/Request/IPatientSurveyRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\nimport { ISurveyGroupResponse } from '../DTOSurvey/Response/ISurveyGroupResponse';\r\nimport { ISurveyBodyPainAnswerResponse } from '../DTOSurvey/Response/ISurveyBodyPainAnswerResponse';\r\nimport { IBodyPartQuestionResponse } from '../DTOSurvey/Response/IBodyPartQuestionResponse';\r\nimport { IDictionaryBodyPartsResponse } from '../DTOSurvey/Response/IDictionaryBodyPartsResponse';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSurveyService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Survey/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n\r\n getQuestionByParameters(typeSurvey: number | \"\", stepNumber: number | \"\"): Observable<IDictionaryQuestionResponse[]> {\r\n const params = new HttpParams().set('typeSurvey', typeSurvey).set('stepNumber', stepNumber);\r\n return this.http.get<IDictionaryQuestionResponse[]>(`${this.endpoint}Question`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getQuestionByTypeSurvey(typeSurvey: number): Observable<IDictionaryQuestionResponse[]> {\r\n const params = new HttpParams().set('typeSurvey', typeSurvey);\r\n return this.http.get<IDictionaryQuestionResponse[]>(`${this.endpoint}Question`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getQuestionByQuestionId(questionId: number): Observable<IDictionaryQuestionResponse[]> {\r\n const params = new HttpParams().set('questionId', questionId);\r\n return this.http.get<IDictionaryQuestionResponse[]>(`${this.endpoint}Question`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getStepByTypeSurvey(typeSurvey: number): Observable<IDictionaryStepResponse[]> {\r\n const params = new HttpParams().set('typeSurvey', typeSurvey);\r\n return this.http.get<IDictionaryStepResponse[]>(`${this.endpoint}Step`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getStepByStepNumber(stepNumber: number): Observable<IDictionaryStepResponse[]> {\r\n const params = new HttpParams().set('stepNumber', stepNumber);\r\n return this.http.get<IDictionaryStepResponse[]>(`${this.endpoint}Step`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveys(): Observable<IPatientSurveyResponse[]> {\r\n return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getSurvey(patientId: string | \"\", surveyType: number | \"\", surveyId: string | \"\", lastSurvey: false): Observable<IPatientSurveyResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('surveyType', surveyType).set('surveyId', surveyId).set('lastSurvey', lastSurvey);\r\n return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyById(surveyId: string): Observable<IPatientSurveyResponse> {\r\n const params = new HttpParams().set('surveyId', surveyId);\r\n return this.http.get<IPatientSurveyResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n getLastSurvey(patientId: string, surveyType: number, lastSurvey: true): Observable<IPatientSurveyResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('surveyType', surveyType).set('lastSurvey', lastSurvey);\r\n return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n params: params,\r\n });\r\n }\r\n\r\n // getSurveyByPatientId(patientId: string): Observable<IPatientSurveyResponse[]> {\r\n // const params = new HttpParams().set('patientId', patientId);\r\n // return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n\r\n // getSurveyBySurveyType(surveyType: number): Observable<IPatientSurveyResponse[]> {\r\n // const params = new HttpParams().set('surveyType', surveyType);\r\n // return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n // getLastSurvey(lastSurvey: bool): Observable<IPatientSurveyResponse[]> {\r\n // const params = new HttpParams().set('lastSurvey', lastSurvey);\r\n // return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n getSurveyGroupByParameters(id: string, patientId: string): Observable<ISurveyGroupResponse> {\r\n const params = new HttpParams().set('id', id).set('patientId', patientId);\r\n return this.http.get<ISurveyGroupResponse>(`${this.endpoint}SurveyGroup`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyGroupById(id: string): Observable<ISurveyGroupResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ISurveyGroupResponse>(`${this.endpoint}SurveyGroup`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyGroupByPatient(patientId: string): Observable<ISurveyGroupResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<ISurveyGroupResponse[]>(`${this.endpoint}SurveyGroup`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyBodyPainAnswer(): Observable<ISurveyBodyPainAnswerResponse[]> {\r\n return this.http.get<ISurveyBodyPainAnswerResponse[]>(`${this.endpoint}SurveyBodyPainAnswer`);\r\n }\r\n\r\n getSurveyBodyPainAnswerByParameters(id: string, surveyId: string): Observable<ISurveyBodyPainAnswerResponse> {\r\n const params = new HttpParams().set('id', id).set('surveyId', surveyId);\r\n return this.http.get<ISurveyBodyPainAnswerResponse>(`${this.endpoint}SurveyBodyPainAnswer`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyBodyPainAnswerById(id: string): Observable<ISurveyBodyPainAnswerResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ISurveyBodyPainAnswerResponse>(`${this.endpoint}SurveyBodyPainAnswer`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyBodyPainAnswerBySurveyId(surveyId: string): Observable<ISurveyBodyPainAnswerResponse[]> {\r\n const params = new HttpParams().set('surveyId', surveyId);\r\n return this.http.get<ISurveyBodyPainAnswerResponse[]>(`${this.endpoint}SurveyBodyPainAnswer`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getBodyPartQuestion(): Observable<IBodyPartQuestionResponse[]> {\r\n return this.http.get<IBodyPartQuestionResponse[]>(`${this.endpoint}BodyPartQuestion`);\r\n }\r\n\r\n getBodyPartQuestionById(id: string): Observable<IBodyPartQuestionResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IBodyPartQuestionResponse>(`${this.endpoint}BodyPartQuestion`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getBodyPart(): Observable<IDictionaryBodyPartsResponse[]> {\r\n return this.http.get<IDictionaryBodyPartsResponse[]>(`${this.endpoint}BodyPart`);\r\n }\r\n\r\n getBodyPartById(id: string): Observable<IDictionaryBodyPartsResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryBodyPartsResponse>(`${this.endpoint}BodyPart`, {\r\n params: params,\r\n });\r\n }\r\n \r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postSurvey(patientSurveyRequest: IPatientSurveyRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}`, patientSurveyRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n}\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\nimport { IQuestionAnswer } from '../survey';\r\nimport { IPatientSurveyResponse } from '../../microservices/survey/DTOSurvey/Response/IPatientSurveyResponse';\r\nimport { ApiSurveyService } from '../../microservices/survey/serviceSurvey/survey';\r\n\r\n@Component({\r\n selector: 'lib-survey-radio',\r\n imports: [],\r\n templateUrl: './survey-radio.html',\r\n styleUrl: './survey-radio.css'\r\n})\r\nexport class SurveyRadio {\r\n\r\n apiSurvey = inject(ApiSurveyService)\r\n\r\n @Input() question: IDictionaryQuestionResponse | undefined \r\n @Input() typeSurvey: number = 0; \r\n @Input() patientSurvey: string = \"\";\r\n @Input() patientId: string | undefined;\r\n @Output() questionAnswer = new EventEmitter<IQuestionAnswer>()\r\n\r\n filteredSurvey: IPatientSurveyResponse = {} as IPatientSurveyResponse\r\n\r\n //variabile per l'emitter, composta da id domanda e id risposta\r\n questionAnswerObject: IQuestionAnswer = {} as IQuestionAnswer;\r\n\r\n ngOnInit(){\r\n if (this.patientSurvey != null && this.patientSurvey != \"\"){\r\n this.searchSurvey(this.patientSurvey);\r\n }\r\n }\r\n\r\n selectedValue(idQuestion: string | undefined, idAnswer: string | undefined){\r\n this.questionAnswerObject.idQuestion = idQuestion,\r\n this.questionAnswerObject.idAnswer = idAnswer,\r\n this.questionAnswerObject.idTypeSurvey = this.typeSurvey,\r\n this.questionAnswer.emit(this.questionAnswerObject)\r\n }\r\n\r\n searchSurvey(surveyId: string){\r\n // console.log(\"res2: \", this.filteredSurvey)\r\n // console.log(\"params2: \", surveyId)\r\n this.apiSurvey.getSurveyById(surveyId).subscribe((res: IPatientSurveyResponse) => {\r\n // console.log(\"res: \", this.filteredSurvey)\r\n // console.log(\"params: \", surveyId)\r\n this.filteredSurvey = res\r\n }) \r\n }\r\n\r\n // getMatchingAnswer(surveyId: string, answerId: string): boolean {\r\n // // console.log(\"resultArray: \", surveyId + answerId)\r\n // // this.question?.answers.forEach(answer => {\r\n // // if (answer.id == answerId){\r\n // // return true\r\n // // }\r\n // // return false\r\n // // });\r\n // return this.question!.answers.some((item: any) => item.id === answerId);\r\n // }\r\n\r\n\r\n}\r\n","<div class=\"survey-component group-radio\">\r\n <div class=\"group-radio-description\">\r\n <label>{{question?.text}}</label>\r\n </div>\r\n <div class=\"group-radio-radioList\"> \r\n @for (answer of question?.answers; track answer.id) {\r\n @if(patientSurvey != \"\"){\r\n <!-- @if (getMatchingAnswer(patientSurvey, answer.id)) {\r\n <input type=\"radio\" checked [name]=\"question?.text\" class=\"radio-value survey-control\" (change)=\"selectedValue(question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label> \r\n } @else {\r\n <input type=\"radio\" [name]=\"question?.text\" class=\"radio-value survey-control\" (change)=\"selectedValue(question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label> \r\n } -->\r\n } @else {\r\n <input type=\"radio\" [name]=\"question?.text\" class=\"radio-value survey-control\" (change)=\"selectedValue(question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label> \r\n }\r\n }\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-survey-text',\r\n imports: [],\r\n templateUrl: './survey-text.html',\r\n styleUrl: './survey-text.css'\r\n})\r\nexport class SurveyText {\r\n\r\n}\r\n","<p>survey-text works!</p>\r\n","import { Component, Input } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\n\r\n@Component({\r\n selector: 'lib-survey-label',\r\n imports: [],\r\n templateUrl: './survey-label.html',\r\n styleUrl: './survey-label.css'\r\n})\r\nexport class SurveyLabel {\r\n\r\n @Input() question: IDictionaryQuestionResponse | undefined \r\n\r\n}\r\n","<div class=\"label\">\r\n <label>{{question?.text}}</label>\r\n</div>","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\nimport { IQuestionAnswer } from '../survey';\r\nimport { IPatientSurveyResponse } from '../../microservices/survey/DTOSurvey/Response/IPatientSurveyResponse';\r\nimport { ApiSurveyService } from '../../microservices/survey/serviceSurvey/survey';\r\n\r\n@Component({\r\n selector: 'lib-survey-valuebox',\r\n imports: [],\r\n templateUrl: './survey-valuebox.html',\r\n styleUrl: './survey-valuebox.css'\r\n})\r\nexport class SurveyValuebox {\r\n\r\n apiSurvey = inject(ApiSurveyService);\r\n\r\n @Input() question: IDictionaryQuestionResponse | undefined \r\n @Input() typeSurvey: number = 0; \r\n @Input() indexQuestion: number = 0;\r\n @Input() patientSurvey: string = '';\r\n @Input() patientId: string | undefined;\r\n @Output() sumOutput = new EventEmitter<any>();\r\n @Output() questionAnswer = new EventEmitter<IQuestionAnswer>()\r\n\r\n filteredSurvey: IPatientSurveyResponse = {} as IPatientSurveyResponse;\r\n\r\n sum: number = 0\r\n //variabile che indica che sarà un oggetto in cui le chiavi saranno numeri, i valori associati ad ogni chiave sara number o stringa,\r\n //quindi ogni key avrà cosi un suo valore\r\n selectedValues: { [key: number]: number | string } = {};\r\n\r\n //variabile per l'emitter, composta da id domanda e id risposta\r\n questionAnswerObject: IQuestionAnswer = {} as IQuestionAnswer;\r\n\r\n sumValue(valueSelected: number, groupIndex: number, idQuestion: string | undefined, idAnswer: string | undefined){\r\n const radioGroup = document.querySelectorAll('input[type=\"radio\"].radio-value') as NodeListOf<HTMLInputElement>;\r\n\r\n this.sum = 0; // Resetta la somma\r\n radioGroup.forEach((radio: HTMLInputElement) => {\r\n if (radio.checked) {\r\n this.sum += parseInt(radio.value);\r\n }\r\n });\r\n\r\n this.selectedValues[groupIndex] = valueSelected;\r\n this.sumOutput.emit(this.sum);\r\n this.questionAnswerObject.idQuestion = idQuestion,\r\n this.questionAnswerObject.idAnswer = idAnswer,\r\n this.questionAnswerObject.idTypeSurvey = this.typeSurvey,\r\n this.questionAnswer.emit(this.questionAnswerObject)\r\n }\r\n\r\n ngOnInit() {\r\n if (this.patientSurvey != null && this.patientSurvey != '') {\r\n this.searchSurvey(this.patientSurvey);\r\n }\r\n }\r\n\r\n searchSurvey(surveyId: string) {\r\n this.apiSurvey.getSurveyById(surveyId).subscribe((res: IPatientSurveyResponse) => {\r\n this.filteredSurvey = res;\r\n // console.log('Dati ricevuti:', res);\r\n this.initializeSelectedValues();\r\n })\r\n }\r\n\r\n getMatchingAnswer(answerId: string | undefined): boolean {\r\n if (!this.filteredSurvey || !answerId || Object.keys(this.filteredSurvey).length === 0) {\r\n return false;\r\n };\r\n\r\n if (this.filteredSurvey.results && Array.isArray(this.filteredSurvey.results)) {\r\n return this.filteredSurvey.results.some((result: any) => {\r\n if (result.question && result.question.id === this.question?.id) {\r\n return result.answer && result.answer.id === answerId;\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n initializeSelectedValues() {\r\n // console.log('=== INIZIO initializeSelectedValues ===');\r\n \r\n if (this.filteredSurvey && this.filteredSurvey.results) {\r\n this.filteredSurvey.results.forEach((result: any, index: number) => {\r\n // console.log(`--- Result ${index} ---`);\r\n // console.log('result.question.id:', result.question?.id);\r\n // console.log('this.question?.id:', this.question?.id);\r\n \r\n if (result.question && result.question.id === this.question?.id) {\r\n // console.log('✅ DOMANDA TROVATA!');\r\n // console.log('result.value:', result.value);\r\n \r\n // Il valore è direttamente in result.value, non in result.answer.value\r\n if (result.value !== undefined && result.value !== null) {\r\n this.selectedValues[this.indexQuestion] = result.value;\r\n // console.log('✅ Valore inizializzato:', this.selectedValues[this.indexQuestion]);\r\n } else {\r\n console.log('❌ result.value è undefined o null');\r\n }\r\n }\r\n });\r\n }\r\n \r\n // console.log('selectedValues finale:', this.selectedValues);\r\n }\r\n\r\n\r\n}\r\n","<p>survey-valuebox works!</p>\r\n<!-- <div class=\"survey-container\">\r\n <div class=\"survey-question\">\r\n {{question?.text}}\r\n </div>\r\n <div class=\"survey-answer-container group-radio\">\r\n <div class=\"survey-answer-list\">\r\n @for (answer of question?.answers; track $index) {\r\n <div class=\"survey-answer-group\">\r\n <div class=\"survey-answer\">\r\n <input type=\"radio\" [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label>\r\n </div>\r\n </div>\r\n } \r\n </div>\r\n <div class=\"survey-answer-value\">\r\n <span>{{ selectedValues[indexQuestion] !== undefined ? selectedValues[indexQuestion] : '--' }}</span>\r\n </div> \r\n </div>\r\n</div> -->\r\n\r\n<div class=\"survey-container\">\r\n <div class=\"survey-question\">\r\n {{ question?.text }}\r\n </div>\r\n <div class=\"survey-answer-container group-radio\">\r\n <div class=\"survey-answer-list\">\r\n @for (answer of question?.answers; track answer.id) {\r\n <div class=\"survey-answer-group\">\r\n <div class=\"survey-answer\">\r\n @if (patientSurvey && patientSurvey !== '') {\r\n @if (getMatchingAnswer(answer.id)) {\r\n <!-- <input type=\"radio\" checked [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?.id)\"> -->\r\n <label>{{ answer.text }}</label>\r\n } @else {\r\n <!-- <input type=\"radio\" [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?. id)\"> -->\r\n <label>{{ answer.text }}</label>\r\n }\r\n } @else {\r\n <!-- <input type=\"radio\" [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?.id)\"> -->\r\n <label>{{ answer.text }}</label>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"survey-answer-value\">\r\n <span>{{ selectedValues[indexQuestion] !== undefined ? selectedValues[indexQuestion] : '--' }}</span>\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SurveyRadio } from './survey-radio/survey-radio';\r\nimport { SurveyText } from './survey-text/survey-text';\r\nimport { SurveyLabel } from './survey-label/survey-label';\r\nimport { SurveyValuebox } from './survey-valuebox/survey-valuebox';\r\nimport { IDictionaryQuestionResponse } from '../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\n\r\nexport interface IQuestionAnswer {\r\n idQuestion: string | undefined;\r\n idAnswer: string | undefined;\r\n idTypeSurvey: number\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'lib-survey',\r\n imports: [CommonModule, SurveyRadio, SurveyText, SurveyLabel, SurveyValuebox],\r\n templateUrl: './survey.html',\r\n styleUrl: './survey.css'\r\n})\r\nexport class Survey {\r\n\r\n @Input() questionList: IDictionaryQuestionResponse[] = [];\r\n @Input() typeSurvey: number = 0;\r\n @Input() patientSurvey: string = \"\";\r\n @Output() sumOutput = new EventEmitter<any>();\r\n @Output() questionAnswer = new EventEmitter<IQuestionAnswer>()\r\n \r\n\r\n ngOnInit(){\r\n }\r\n\r\n onSumOutputReceived(sum: any) {\r\n this.sumOutput.emit(sum);\r\n }\r\n\r\n onQuestionAnswerReceived(object: IQuestionAnswer) {\r\n this.questionAnswer.emit(object);\r\n }\r\n\r\n\r\n}\r\n","<div class=\"survey-container\">\r\n @for (question of questionList; track $index) {\r\n <div [ngStyle]=\"{backgroundColor: $index % 2 === 0 ? '#F1F6FE' : 'white'}\">\r\n @switch (question.typeQuestion.id) {\r\n @case (1){\r\n\r\n }\r\n @case (2){\r\n <lib-survey-text></lib-survey-text>\r\n }\r\n @case (3){\r\n \r\n }\r\n @case (4){\r\n \r\n }\r\n @case (5){\r\n <lib-survey-label [question]=\"question\" style=\"width: 100%; height: 3rem; display: flex;\"></lib-survey-label>\r\n }\r\n @case (6){\r\n \r\n }\r\n @case (7){ \r\n <lib-survey-radio [question]=\"question\" [typeSurvey]=\"typeSurvey\" [patientSurvey]=\"patientSurvey\" (questionAnswer)=\"onQuestionAnswerReceived($event)\" style=\"width: 100%; height: 3rem; display: flex;\"></lib-survey-radio>\r\n }\r\n @case (8){\r\n \r\n }\r\n @case (9){\r\n \r\n }\r\n @case (10){\r\n <lib-survey-valuebox [question]=\"question\" [typeSurvey]=\"typeSurvey\" [indexQuestion]=\"$index\" (sumOutput)=\"onSumOutputReceived($event)\" (questionAnswer)=\"onQuestionAnswerReceived($event)\"></lib-survey-valuebox>\r\n \r\n }\r\n }\r\n </div>\r\n } \r\n</div>\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport * as AWS from 'aws-sdk';\r\nimport { IMinio } from './config.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Minio {\r\n \r\n private s3: AWS.S3;\r\n bucketName! : string;\r\n accessKeyId! : string;\r\n secretAccessKey! : string;\r\n endpoint! : string;\r\n\r\n constructor(@Inject('MINIO_CONFIG') private config: IMinio) {\r\n\r\n this.bucketName = config.bucketName;\r\n this.accessKeyId = config.accessKeyId;\r\n this.secretAccessKey = config.secretAccessKey;\r\n this.endpoint = config.endpoint;\r\n\r\n // Configurazione delle credenziali di minio\r\n AWS.config.update({\r\n accessKeyId: this.accessKeyId,\r\n secretAccessKey: this.secretAccessKey,\r\n region: 'us-east-1', //regione di default, aws sdk gli serve\r\n signatureVersion: 'v4' // versione di firma v4, serve a minio\r\n });\r\n\r\n // Configura l'endpoint di minio\r\n this.s3 = new AWS.S3({\r\n endpoint: new AWS.Endpoint(this.endpoint),\r\n s3ForcePathStyle: true,\r\n signatureVersion: 'v4'\r\n });\r\n }\r\n\r\n // Funzione per caricare un file su minio\r\n uploadFile(fileName: string, fileContent: any): Promise<AWS.S3.ManagedUpload.SendData> {\r\n const params = {\r\n Bucket: this.bucketName, // Nome del tuo bucket minio\r\n Key: fileName, // Nome del file \r\n Body: fileContent, // Contenuto del file\r\n ContentType: 'application/octet-stream' // Tipo di contenuto\r\n };\r\n\r\n // Carica il file su minio\r\n return this.s3.upload(params).promise();\r\n }\r\n\r\n // Funzione per ottenere un oggetto da minio\r\n getObject(fileName: string): Promise<AWS.S3.GetObjectOutput> {\r\n const params = {\r\n Bucket: this.bucketName,\r\n Key: fileName\r\n };\r\n\r\n // Ottieni il file da MinIO\r\n return this.s3.getObject(params).promise();\r\n }\r\n\r\n // metodo per recuperare tutti gli oggetti in una cartella\r\n async getAllObjectsInFolder(folderPath: string): Promise<Map<string, AWS.S3.GetObjectOutput>> {\r\n const folder = folderPath.endsWith('/') ? folderPath : `${folderPath}/`;\r\n \r\n const listParams = {\r\n Bucket: this.bucketName,\r\n Prefix: folder\r\n };\r\n \r\n try {\r\n // Lista tutti gli oggetti nella cartella\r\n const listedObjects = await this.s3.listObjects(listParams).promise();\r\n \r\n if (!listedObjects.Contents || listedObjects.Contents.length === 0) {\r\n return new Map();\r\n }\r\n \r\n // Mappa per memorizzare i risultati\r\n const objectsMap = new Map<string, AWS.S3.GetObjectOutput>();\r\n \r\n // Recupera ogni oggetto\r\n const fetchPromises = listedObjects.Contents.map(async (item: any) => {\r\n if (item.Key) {\r\n const objectData = await this.getObject(item.Key);\r\n objectsMap.set(item.Key, objectData);\r\n }\r\n });\r\n \r\n // Attendere il completamento di tutte le richieste\r\n await Promise.all(fetchPromises);\r\n \r\n return objectsMap;\r\n } catch (error) {\r\n console.error('Errore nel recupero degli oggetti dalla cartella:', error);\r\n throw error;\r\n }\r\n }\r\n\r\n // Funzione per eliminare un oggetto da minio\r\n deleteObject(bucketName: string, fileName: string): Promise<AWS.S3.DeleteObjectOutput> {\r\n const params = {\r\n Bucket: bucketName,\r\n Key: fileName\r\n };\r\n\r\n // Elimina il file da minio\r\n return this.s3.deleteObject(params).promise();\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatDate {\r\n \r\n //funzione per convertire date in giorno/mese/anno\r\n convertToISOFormat(date: Date): string {\r\n if (!date) return 'Non disponibile';\r\n let newDate = new Date(date);\r\n // prendo il giorno, mese e anno\r\n const day = newDate.getDate();\r\n // il mese inizia da 0, quindi aggiungiamo 1, come dopo per il giorno, è una configurazione\r\n //di alcune api per il convert\r\n const month = newDate.getMonth() + 1;\r\n const year = newDate.getFullYear();\r\n const hour = newDate.getHours();\r\n const minute = newDate.getMinutes();\r\n const second = newDate.getSeconds();\r\n \r\n // aggiungo uno zero iniziale se il valore è minore di 10\r\n const formattedDay = day < 10 ? `0${day}` : `${day}`;\r\n const formattedMonth = month < 10 ? `0${month}` : `${month}`;\r\n const formattedHour = hour < 10 ? `0${hour}` : `${hour}`;\r\n const formattedMinute = minute < 10 ? `0${minute}` : `${minute}`;\r\n const formattedSecond = second < 10 ? `0${second}` : `${second}`;\r\n\r\n //aggiungo il timezone offset\r\n const timezoneOffset = -newDate.getTimezoneOffset();\r\n const offsetHours = Math.floor(Math.abs(timezoneOffset) / 60);\r\n const offsetMinutes = Math.abs(timezoneOffset) % 60;\r\n const offsetSign = timezoneOffset >= 0 ? '+' : '-';\r\n const formattedOffset = `${offsetSign}${offsetHours.toString().padStart(2, '0')}:${offsetMinutes.toString().padStart(2, '0')}`;\r\n\r\n let dataToISO = `${year}-${formattedMonth}-${formattedDay}T${formattedHour}:${formattedMinute}:${formattedSecond}${formattedOffset}`;\r\n\r\n return dataToISO\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IAccountResponse } from '../DTOAccount/Response/IAccountResponse';\r\nimport { IAccountRequest } from '../DTOAccount/Request/IAccountRequest';\r\nimport { ILoginRequest } from '../DTOAccount/Request/ILoginRequest';\r\nimport { ILoginResponse } from '../DTOAccount/Response/ILoginResponse';\r\nimport { INewTokenRequest } from '../DTOAccount/Request/INewTokenRequest';\r\nimport { IAuthenticationResponse } from '../DTOAccount/Response/IAuthenticationResponse';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\nimport { IAccountCredentialDTO } from '../DTOAccount/IAccountCredentialDTO';\r\n\r\n@Injectable()\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiAccountService {\r\n\r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Account/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca degli account in base al parametro\r\n getAccounts(): Observable<IAccountResponse[]> {\r\n return this.http.get<IAccountResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getAccountsByParameters(id: string | \"\", fiscalCode: string | \"\", username: string | \"\"): Observable<IAccountResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('fiscalCode', fiscalCode).set('username', username);\r\n // return this.http.get<IAccountResponse[]>(`${this.endpoint}`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getAccountById(id: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAccountByFiscalCode(fiscalCode: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('fiscalCode', fiscalCode);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAccountByUsername(username: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('username', username);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAccountByAccountProfileId(accountProfileId: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('accountProfileId', accountProfileId);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCredentialByAccountId(accountId: string): Observable<IAccountCredentialDTO> {\r\n const params = new HttpParams().set('accountId', accountId);\r\n return this.http.get<IAccountCredentialDTO>(`${this.endpoint}Credential`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica dell'account\r\n postAccount(accountRequest: IAccountRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, accountRequest);\r\n }\r\n\r\n //FUNZIONE LOGIN\r\n postLogin(loginRequest: ILoginRequest): Observable<string | ILoginResponse> {\r\n const credentials = btoa(`apilogin:apipassword`); // Crea il token Basic Authentication\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.post<string | ILoginResponse>(`${this.endpoint}Login`, loginRequest, { headers: headers });\r\n }\r\n\r\n postLoginLdap(loginRequest: ILoginRequest): Observable<string | ILoginResponse> {\r\n const credentials = btoa(`apilogin:apipassword`); // Crea il token Basic Authentication\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.post<string | ILoginResponse>(`${this.endpoint}LoginLDAP`, loginRequest, { headers: headers });\r\n }\r\n\r\n postRefreshToken(refreshToken: INewTokenRequest): Observable<IAuthenticationResponse> {\r\n const credentials = btoa(`apilogin:apipassword`);\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.post<IAuthenticationResponse>(`${this.endpoint}RefreshToken`, refreshToken, { headers: headers });\r\n }\r\n\r\n postCredential(accountCredentialDTO: IAccountCredentialDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Credential`, accountCredentialDTO);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //funzione per settare il login dell'account\r\n setLoginAccount(id: string): Observable<boolean>{\r\n const params = new HttpParams().set('id', id); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deleteAccount(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}/${id}`);\r\n }\r\n \r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryPermission } from '../DTOAccount/Dictionary/IDictionaryPermission';\r\nimport { IDictionaryProfileResponse } from '../DTOAccount/Response/IDictionaryProfileResponse';\r\nimport { IDictionaryTypeContact } from '../DTOAccount/Dictionary/IDictionaryTypeContact';\r\nimport { IDictionaryProfileRequest } from '../DTOAccount/Request/IDictionaryProfileRequest';\r\nimport { IDictionarySystemDTO } from '../DTOAccount/Dictionary/IDictionarySystemDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\nimport { IDictionaryLdap } from '../DTOAccount/Dictionary/IDictionaryLdap';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiAccountDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Account/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei permessi in base al parametro\r\n getPermissions(): Observable<IDictionaryPermission[]> {\r\n return this.http.get<IDictionaryPermission[]>(`${this.endpoint}Dictionary/Permission`);\r\n }\r\n \r\n getPermissionById(id: string): Observable<IDictionaryPermission> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryPermission>(`${this.endpoint}Dictionary/Permission`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPermissionByCode(code: string): Observable<IDictionaryPermission> {\r\n const params = new HttpParams().set('code', code);\r\n return this.http.get<IDictionaryPermission>(`${this.endpoint}Dictionary/Permission`, {\r\n params: params,\r\n })\r\n } \r\n\r\n getPermissionByParameters(id: string, code: string): Observable<IDictionaryPermission> {\r\n const params = new HttpParams().set('id', id).set('code', code);\r\n return this.http.get<IDictionaryPermission>(`${this.endpoint}Dictionary/Permission`, {\r\n params: params,\r\n })\r\n } \r\n\r\n //funzioni per la ricerca dei profili in base al parametro\r\n getProfiles(): Observable<IDictionaryProfileResponse[]> {\r\n return this.http.get<IDictionaryProfileResponse[]>(`${this.endpoint}Dictionary/Profile`);\r\n }\r\n \r\n getProfileById(id: string): Observable<IDictionaryProfileResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryProfileResponse>(`${this.endpoint}Dictionary/Profile`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei type contact in base al parametro\r\n getTypesContact(): Observable<IDictionaryTypeContact[]> {\r\n return this.http.get<IDictionaryTypeContact[]>(`${this.endpoint}Dictionary/TypeContact`);\r\n }\r\n \r\n getTypeContactById(id: string): Observable<IDictionaryTypeContact> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeContact>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSystems(): Observable<IDictionarySystemDTO[]> {\r\n return this.http.get<IDictionarySystemDTO[]>(`${this.endpoint}Dictionary/System`);\r\n }\r\n\r\n getSystemById(id: string): Observable<IDictionarySystemDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionarySystemDTO>(`${this.endpoint}Dictionary/System`, {\r\n params: params\r\n });\r\n }\r\n\r\n getLdaps(): Observable<IDictionaryLdap[]> {\r\n const credentials = btoa(`apilogin:apipassword`);\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.get<IDictionaryLdap[]>(`${this.endpoint}Dictionary/Ldap`, { headers: headers });\r\n }\r\n\r\n // getCompanyById(id: number): Observable<> {\r\n // const params = new HttpParams().set('id', id);\r\n // return this.http.get<>(`${this.endpoint}Dictionary/Company`, {\r\n // params: params\r\n // });\r\n // }\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica dei permessi\r\n postPermission(permissionRequest: IDictionaryPermission): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Permission`, permissionRequest);\r\n }\r\n\r\n //funzione per la modifica dei profili\r\n postProfile(profileRequest: IDictionaryProfileRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Profile`, profileRequest);\r\n }\r\n\r\n //funzione per la modifica dei type contact\r\n postTypeContact(typeContactRequest: IDictionaryTypeContact): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeContact`, typeContactRequest);\r\n }\r\n\r\n postSystem(system: IDictionarySystemDTO): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/System`, system);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deletePermission(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Permission/${id}`);\r\n }\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deleteProfile(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Profile`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deleteTypeContact(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n deleteSystem(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/System`, {\r\n params: params\r\n });\r\n }\r\n \r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IPatientExamResponse } from '../DTOExam/Response/IPatientExamResponse';\r\nimport { IExamValueResponse } from '../DTOExam/Response/IExamValueResponse';\r\nimport { IPatientExamRequest } from '../DTOExam/Request/IPatientExamRequest';\r\nimport { IExamValueRequest } from '../DTOExam/Request/IExamValueRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiExamService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Exam/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientExams(): Observable<IPatientExamResponse[]> {\r\n return this.http.get<IPatientExamResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getPatientExamsByParameters(patientId: string | \"\", vitalSignId: string | \"\"): Observable<IPatientExamRequest[]>{\r\n const params = new HttpParams().set('patientId', patientId).set('vitalSignId', vitalSignId);\r\n return this.http.get<IPatientExamRequest[]>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n \r\n getPatientExamByPatientId(patientid: string): Observable<IPatientExamResponse[]> {\r\n const params = new HttpParams().set('patientid', patientid);\r\n return this.http.get<IPatientExamResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n } \r\n\r\n getPatientExamVitalSignId(id: string): Observable<IPatientExamResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientExamResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //funzione per ottenere i valori di esami\r\n getExamValues(): Observable<IExamValueResponse[]> {\r\n return this.http.get<IExamValueResponse[]>(`${this.endpoint}Value`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getExamValueByParameters(vitalSignId: string | \"\", patientId: string | \"\"): Observable<IExamValueResponse[]> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId).set('patientId', patientId);\r\n return this.http.get<IExamValueResponse[]>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getExamValueByVitalSignId(vitalSignId: string): Observable<IExamValueResponse> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId);\r\n return this.http.get<IExamValueResponse>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n } \r\n\r\n getExamValueByPatientId(patientId: string): Observable<IExamValueResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IExamValueResponse[]>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica dell'esame del paziente\r\n postPatientExams(patientExamRequest: IPatientExamRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, patientExamRequest);\r\n }\r\n\r\n //funzione per la modifica del tipo di ricorrenza\r\n postExamValue(examValueRequest: IExamValueRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Value`, examValueRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n setPatientExam(id: string): Observable<boolean>{\r\n const params = new HttpParams().set('id', id); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n setExamValue(patientId: string): Observable<boolean>{\r\n const params = new HttpParams().set('patientId', patientId); \r\n return this.http.put<boolean>(`${this.endpoint}Value`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n deletePatientExam(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`)\r\n }\r\n\r\n //funzione per l'eliminazione del tipo di ricorrenza\r\n deleteExamValue(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IPatientAppointmentResponse } from '../DTOExam/Response/IPatientAppointmentResponse';\r\nimport { IPatientAppointmentRequest } from '../DTOExam/Request/IPatientAppointmentRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiExamAppointmentService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Appointment/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca degli appuntamenti del paziente in base al parametro\r\n getPatientAppointments(): Observable<IPatientAppointmentResponse[]> {\r\n return this.http.get<IPatientAppointmentResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getPatientAppointmentByParameters(patientId: string | \"\", accountProfileId: string | \"\", structureDepartmentId: string | \"\", typeId: number | \"\"): Observable<IPatientAppointmentResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('accountProfileId', accountProfileId).set('structureDepartmentId', structureDepartmentId).set('typeId', typeId);\r\n return this.http.get<IPatientAppointmentResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n \r\n getPatientAppointmentById(id: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getPatientAppointmentByPatientId(patientId: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientAppointmentByAccountProfileId(accountProfileId: string): Observable<IPatientAppointmentResponse[]> {\r\n const params = new HttpParams().set('accountProfileId', accountProfileId);\r\n return this.http.get<IPatientAppointmentResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientAppointmentByStructureDepartmentId(structureDepartmentId: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('structureDepartmentId', structureDepartmentId);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientAppointmentByTypeId(typeId: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('typeId', typeId);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n \r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica dell'appuntamento\r\n postPatientAppointment(patientAppointmentRequest: IPatientAppointmentRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, patientAppointmentRequest);\r\n }\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deletePatientAppointment(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n \r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryRecurrencyResponse } from '../DTOExam/Response/IDictionaryRecurrencyResponse';\r\nimport { IDictionaryTypeRecurrency } from '../DTOExam/Dictionary/IDictionaryTypeRecurrency';\r\nimport { IDictionaryVitalSign } from '../DTOExam/Dictionary/IDictionaryVitalSign';\r\nimport { IDictionaryTypeAppointment } from '../DTOExam/Dictionary/IDictionaryTypeAppointment';\r\nimport { IDictionaryRecurrencyRequest } from '../DTOExam/Request/IDictionaryRecurrencyRequest';\r\nimport { IDictionaryTarget } from '../DTOExam/Response/IDictionaryTarget';\r\nimport { IDictionaryKitResponse } from '../DTOExam/Response/IDictionaryKitResponse';\r\nimport { IDictionaryComponentResponse } from '../DTOExam/Response/IDictionaryComponentResponse';\r\nimport { IDictionaryTypeComponentDTO } from '../DTOExam/Dictionary/IDictionaryTypeComponentDTO';\r\nimport { IDictionaryKitRequest } from '../DTOExam/Request/IDictionaryKitRequest';\r\nimport { IDictionaryComponentRequest } from '../DTOExam/Request/IDictionaryComponentRequest';\r\nimport { IDictionaryTargetRequest } from '../DTOExam/Request/IDictionaryTargetRequest';\r\nimport { IDictionaryRiskResponse } from '../DTOExam/Response/IDictionaryRiskResponse';\r\nimport { IDictionaryRiskRequest } from '../DTOExam/Request/IDictionaryRiskRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti i dizionari degli esami\r\nexport class ApiExamDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Exam/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getRecurrencies(): Observable<IDictionaryRecurrencyResponse[]> {\r\n return this.http.get<IDictionaryRecurrencyResponse[]>(`${this.endpoint}Dictionary/Recurrency`);\r\n }\r\n \r\n getRecurrencyById(id: number): Observable<IDictionaryRecurrencyResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryRecurrencyResponse>(`${this.endpoint}Dictionary/Recurrency`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //funzione per ottenere i tipi di ricorrenza\r\n getTypesRecurrency(): Observable<IDictionaryTypeRecurrency[]> {\r\n return this.http.get<IDictionaryTypeRecurrency[]>(`${this.endpoint}Dictionary/TypeRecurrency`);\r\n }\r\n \r\n getTypeRecurrencyById(id: number): Observable<IDictionaryTypeRecurrency> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeRecurrency>(`${this.endpoint}Dictionary/TypeRecurrency`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //funzione per ottenere i vitalsign\r\n getVitalSigns(): Observable<IDictionaryVitalSign[]> {\r\n return this.http.get<IDictionaryVitalSign[]>(`${this.endpoint}Dictionary/VitalSign`);\r\n }\r\n \r\n getVitalSignById(id: string): Observable<IDictionaryVitalSign> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryVitalSign>(`${this.endpoint}Dictionary/VitalSign`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per ottenere i tipi di appuntamento\r\n getTypesAppointment(): Observable<IDictionaryTypeAppointment[]> {\r\n return this.http.get<IDictionaryTypeAppointment[]>(`${this.endpoint}Dictionary/TypeAppointment`);\r\n }\r\n \r\n getTypeAppointmentById(id: number): Observable<IDictionaryTypeAppointment> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeAppointment>(`${this.endpoint}Dictionary/TypeAppointment`, {\r\n params: params,\r\n });\r\n } \r\n \r\n //funzione per ottenere i target\r\n getTargets(): Observable<IDictionaryTarget[]> {\r\n return this.http.get<IDictionaryTarget[]>(`${this.endpoint}Dictionary/Target`);\r\n }\r\n\r\n getTargetById(targetId: string): Observable<IDictionaryTarget> {\r\n const params = new HttpParams().set('targetId', targetId);\r\n return this.http.get<IDictionaryTarget>(`${this.endpoint}Dictionary/Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTargetByVitalSignId(vitalSignId: string): Observable<IDictionaryTarget[]> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId);\r\n return this.http.get<IDictionaryTarget[]>(`${this.endpoint}Dictionary/Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTargetByParameters(vitalSignId: string | '', targetId: string | ''): Observable<IDictionaryTarget> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId).set('targetId', targetId);\r\n return this.http.get<IDictionaryTarget>(`${this.endpoint}Dictionary/Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //funzione per recuperare i kit\r\n getKits(): Observable<IDictionaryKitResponse[]> {\r\n return this.http.get<IDictionaryKitResponse[]>(`${this.endpoint}Dictionary/Kit`);\r\n }\r\n\r\n getKitById(id: string): Observable<IDictionaryKitResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryKitResponse>(`${this.endpoint}Dictionary/Kit`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getComponents(): Observable<IDictionaryComponentResponse[]> {\r\n return this.http.get<IDictionaryComponentResponse[]>(`${this.endpoint}Dictionary/Kit/Component`);\r\n }\r\n\r\n getComponentById(id: string): Observable<IDictionaryComponentResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryComponentResponse>(`${this.endpoint}Dictionary/Kit/Component`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getComponentsByType(type: number): Observable<IDictionaryComponentResponse[]> {\r\n const params = new HttpParams().set('type', type);\r\n return this.http.get<IDictionaryComponentResponse[]>(`${this.endpoint}Dictionary/Kit/Component`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getComponentByParameters(id: string, type: number): Observable<IDictionaryComponentResponse> {\r\n const params = new HttpParams().set('id', id).set('type', type);\r\n return this.http.get<IDictionaryComponentResponse>(`${this.endpoint}Dictionary/Kit/Component`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTypeComponent(): Observable<IDictionaryTypeComponentDTO[]> {\r\n return this.http.get<IDictionaryTypeComponentDTO[]>(`${this.endpoint}Dictionary/TypeComponent`);\r\n }\r\n\r\n getTypeComponentById(id: number): Observable<IDictionaryTypeComponentDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeComponentDTO>(`${this.endpoint}Dictionary/TypeComponent`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRisks(): Observable<IDictionaryRiskResponse[]> {\r\n return this.http.get<IDictionaryRiskResponse[]>(`${this.endpoint}Dictionary/Risk`);\r\n }\r\n\r\n getRiskById(id: string): Observable<IDictionaryRiskResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryRiskResponse>(`${this.endpoint}Dictionary/Risk`, {\r\n params: params\r\n });\r\n }\r\n\r\n \r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica della ricorrenza\r\n postRecurrency(recurrencyRequest: IDictionaryRecurrencyRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Recurrency`, recurrencyRequest);\r\n }\r\n\r\n //funzione per la modifica del tipo di ricorrenza\r\n postTypeRecurrency(typeRecurrencyRequest: IDictionaryTypeRecurrency): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeRecurrency`, typeRecurrencyRequest);\r\n }\r\n\r\n //funzione per la modifica del vital sign\r\n postVitalSign(vitalSignRequest: IDictionaryVitalSign): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/VitalSign`, vitalSignRequest);\r\n }\r\n\r\n //funzione per la modifica del tipo di appuntamento\r\n postTypeAppointment(typeAppointmentRequest: IDictionaryTypeAppointment): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeAppointment`, typeAppointmentRequest);\r\n }\r\n\r\n postTarget(targetRequest: IDictionaryTargetRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Target`, targetRequest);\r\n }\r\n\r\n postComponent(componentRequest: IDictionaryComponentRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Kit/Component`, componentRequest)\r\n }\r\n\r\n postKit(kitRequest: IDictionaryKitRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Kit`, kitRequest)\r\n }\r\n\r\n postRisk(riskRequest: IDictionaryRiskRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Risk`, riskRequest);\r\n }\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della ricorrenza\r\n deleteRecurrency(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Recurrency`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del tipo di ricorrenza\r\n deleteTypeRecurrency(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeRecurrency`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del vital sign\r\n deleteVitalSign(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/VitalSign/${id}`);\r\n }\r\n //funzione per l'eliminazione del tipo appuntamento\r\n deleteTypeAppointment(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeAppointment`, {\r\n params: params,\r\n });\r\n }\r\n\r\n deleteTarget(targetId: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Target/${targetId}`);\r\n }\r\n\r\n deleteKit(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Kit/${id}`)\r\n }\r\n\r\n deleteRisk(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Risk`, {\r\n params: params\r\n })\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { Inject, inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IPatientKitResponse } from \"../DTOExam/Response/IPatientKitResponse\";\r\nimport { IPatientKitRequest } from \"../DTOExam/Request/IPatientKitRequest\";\r\nimport { API_CONFIG } from \"../../../services/api-config.token\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiKitService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Kit/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientKit(): Observable<IPatientKitResponse[]> {\r\n return this.http.get<IPatientKitResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getPatientKitByParameters(id: string, patientId: string): Observable<IPatientKitResponse>{\r\n const params = new HttpParams().set('patientId', patientId).set('id', id);\r\n return this.http.get<IPatientKitResponse>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientKitById(id: string): Observable<IPatientKitResponse>{\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientKitResponse>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientKitByPatientId(patientId: string): Observable<IPatientKitResponse[]>{\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IPatientKitResponse[]>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n \r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postPatientKit(patientKitRequest: IPatientKitRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, patientKitRequest)\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n setPatientKit(id: string): Observable<boolean>{\r\n const params = new HttpParams().set('id', id); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n deletePatientKit(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`)\r\n }\r\n\r\n}","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IAslResponse } from '../DTOGeography/Response/IAslResponse';\r\nimport { IDistrictResponse } from '../DTOGeography/Response/IDistrictResponse';\r\nimport { ICommonResponse } from '../DTOGeography/Response/ICommonResponse';\r\nimport { ICountryResponse } from '../DTOGeography/Response/ICountryResponse';\r\nimport { IProvinceResponse } from '../DTOGeography/Response/IProvinceResponse';\r\nimport { IRegionResponse } from '../DTOGeography/Response/IRegionResponse';\r\nimport { IAslRequest } from '../DTOGeography/Request/IAslRequest';\r\nimport { IDistrictRequest } from '../DTOGeography/Request/IDistrictRequest';\r\nimport { ICommonRequest } from '../DTOGeography/Request/ICommonRequest';\r\nimport { ICountryRequest } from '../DTOGeography/Request/ICountryRequest';\r\nimport { IProvinceRequest } from '../DTOGeography/Request/IProvinceRequest';\r\nimport { IRegionRequest } from '../DTOGeography/Request/IRegionRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiGeographyService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Geo/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle asl in base al parametro\r\n getAsls(): Observable<IAslResponse[]> {\r\n return this.http.get<IAslResponse[]>(`${this.endpoint}Asl`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getAslByParameters(id: string | \"\", name: string | \"\", commonId: string | \"\"): Observable<IAslResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('commonId', commonId);\r\n // return this.http.get<IAslResponse[]>(`${this.endpoint}Asl`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getAslById(id: string): Observable<IAslResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IAslResponse>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAslByName(name: string): Observable<IAslResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IAslResponse>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAslByCommonId(commonId: string): Observable<IAslResponse[]> {\r\n const params = new HttpParams().set('commonId', commonId);\r\n return this.http.get<IAslResponse[]>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei distretti in base al parametro\r\n\r\n getDistricts(): Observable<IDistrictResponse[]> {\r\n return this.http.get<IDistrictResponse[]>(`${this.endpoint}District`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getDistrictByParameters(id: string | \"\", name: string | \"\", aslId: string | \"\"): Observable<IDistrictResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('aslId', aslId);\r\n // return this.http.get<IDistrictResponse[]>(`${this.endpoint}District`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getDistrictById(id: string): Observable<IDistrictResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDistrictResponse>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getDistrictByName(name: string): Observable<IDistrictResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IDistrictResponse>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getDistrictByAslId(aslId: string): Observable<IDistrictResponse[]> {\r\n const params = new HttpParams().set('aslId', aslId);\r\n return this.http.get<IDistrictResponse[]>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //funzioni per la ricerca dei comuni in base al parametro\r\n\r\n getCommons(): Observable<ICommonResponse[]> {\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getCommonByParameters(provinceId: string | \"\", regionId: string | \"\"): Observable<ICommonResponse[]> {\r\n const params = new HttpParams().set('provinceId', provinceId).set('regionId', regionId);\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n \r\n getCommonById(id: string): Observable<ICommonResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ICommonResponse>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCommonByName(name: string): Observable<ICommonResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<ICommonResponse>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCommonByProvinceId(provinceId: string): Observable<ICommonResponse[]> {\r\n const params = new HttpParams().set('provinceId', provinceId);\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCommonByRegionId(regionId: string): Observable<ICommonResponse[]> {\r\n const params = new HttpParams().set('regionId', regionId);\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei countries in base al parametro\r\n\r\n getCountries(): Observable<ICountryResponse[]> {\r\n return this.http.get<ICountryResponse[]>(`${this.endpoint}Country`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getCountryByParameters(id: string | \"\", name: string | \"\"): Observable<ICountryResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name);\r\n // return this.http.get<ICountryResponse[]>(`${this.endpoint}Country`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getCountryById(id: string): Observable<ICountryResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ICountryResponse>(`${this.endpoint}Country`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCountryByName(name: string): Observable<ICountryResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<ICountryResponse>(`${this.endpoint}Country`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca delle province in base al parametro\r\n\r\n getProvinces(): Observable<IProvinceResponse[]> {\r\n return this.http.get<IProvinceResponse[]>(`${this.endpoint}Province`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getProvinceByParameters(id: string | \"\", name: string | \"\", regionId: string | \"\"): Observable<IProvinceResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('regionId', regionId).set('regionId', regionId);\r\n // return this.http.get<IProvinceResponse[]>(`${this.endpoint}Province`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getProvinceById(id: string): Observable<IProvinceResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IProvinceResponse>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getProvinceByName(name: string): Observable<IProvinceResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IProvinceResponse>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getProvinceByRegionId(regionId: string): Observable<IProvinceResponse[]> {\r\n const params = new HttpParams().set('regionId', regionId);\r\n return this.http.get<IProvinceResponse[]>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca delle regioni in base al parametro\r\n\r\n getRegions(): Observable<IRegionResponse[]> {\r\n return this.http.get<IRegionResponse[]>(`${this.endpoint}Region`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getRegionByParameters(id: string | \"\", name: string | \"\", countryId: string | \"\"): Observable<IRegionResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('countryId', countryId);\r\n // return this.http.get<IRegionResponse[]>(`${this.endpoint}Region`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getRegionById(id: string): Observable<IRegionResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IRegionResponse>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRegionByName(name: string): Observable<IRegionResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IRegionResponse>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRegionByCountryId(countryId: string): Observable<IRegionResponse[]> {\r\n const params = new HttpParams().set('countryId', countryId);\r\n return this.http.get<IRegionResponse[]>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica della asl\r\n postAsl(aslRequest: IAslRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Asl`, aslRequest);\r\n }\r\n //funzione per l'inserimento e modifica del distretto\r\n postDistrict(districtRequest: IDistrictRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}District`, districtRequest);\r\n }\r\n //funzione per l'inserimento e modifica del comune\r\n postCommon(commonRequest: ICommonRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Common`, commonRequest);\r\n }\r\n //funzione per l'inserimento e modifica del country\r\n postCountry(countryRequest: ICountryRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Country`, countryRequest);\r\n }\r\n //funzione per l'inserimento e modifica della provincia\r\n postProvince(provinceRequest: IProvinceRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Province`, provinceRequest);\r\n }\r\n //funzione per l'inserimento e modifica della regione\r\n postRegion(regionRequest: IRegionRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Region`, regionRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteAsl(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del distretto\r\n deleteDistrict(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del comune\r\n deleteCommon(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del country\r\n deleteCountry(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Country`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione della provincia\r\n deleteProvince(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione della regione\r\n deleteRegion(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { Inject, inject, Injectable } from \"@angular/core\";\r\nimport { IPatientDataRequest } from \"../DTOPatient/Request/IPatientDataRequest\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IPatientIdentifierRequest } from \"../DTOPatient/Request/IPatientIdentifierRequest\";\r\nimport { IPatientContactRequest } from \"../DTOPatient/Request/IPatientContactRequest\";\r\nimport { IPatientIdentifierResponse } from \"../DTOPatient/Response/IPatientIdentifierResponse\";\r\nimport { IPatientContactResponse } from \"../DTOPatient/Response/IPatientContactResponse\";\r\nimport { IPatientAddressResponse } from \"../DTOPatient/Response/IPatientAddressResponse\";\r\nimport { IPatientAddressRequest } from \"../DTOPatient/Request/IPatientAddressRequest\";\r\nimport { API_CONFIG } from \"../../../services/api-config.token\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiAdministrationService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Administration/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientIdentifiers(): Observable<IPatientIdentifierResponse[]> {\r\n return this.http.get<IPatientIdentifierResponse[]>(`${this.endpoint}Patient/Identifier`)\r\n }\r\n\r\n getPatientIdentifierByParameters(patientId: string | '', identifierId: number | 0): Observable<IPatientIdentifierResponse[]> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('identifierId', identifierId)\r\n\r\n return this.http.get<IPatientIdentifierResponse[]>(`${this.endpoint}Patient/Identifier`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientContacts(): Observable<IPatientContactResponse[]> {\r\n return this.http.get<IPatientContactResponse[]>(`${this.endpoint}Patient/Contact`)\r\n }\r\n\r\n getPatientContactByParameters(patientId: string | '', contactId: number | 0): Observable<IPatientContactResponse[]> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('contactId', contactId)\r\n\r\n return this.http.get<IPatientContactResponse[]>(`${this.endpoint}Patient/Contact`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientAddresses(): Observable<IPatientAddressResponse[]> {\r\n return this.http.get<IPatientAddressResponse[]>(`${this.endpoint}Patient/Address`)\r\n }\r\n\r\n getPatientAddressByParameters(patientId: string | '', addressId: number | 0): Observable<IPatientAddressResponse[]> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('addressId', addressId)\r\n\r\n return this.http.get<IPatientAddressResponse[]>(`${this.endpoint}Patient/Address`, {\r\n params: params\r\n })\r\n }\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postPatientData(patientDataRequest: IPatientDataRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient`, patientDataRequest);\r\n }\r\n\r\n //inserire\r\n postPatientIdentifier(patientIdentifierRequest: IPatientIdentifierRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient/Identifier`, patientIdentifierRequest)\r\n }\r\n\r\n postPatientContact(patientContactRequest: IPatientContactRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient/Contact`, patientContactRequest)\r\n }\r\n\r\n postPatientAddress(patientAddressRequest: IPatientAddressRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient/Address`, patientAddressRequest)\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //modificare\r\n putPatientIdentifier(patientIdentifierRequest: IPatientIdentifierRequest): Observable<boolean> {\r\n return this.http.put<boolean>(`${this.endpoint}Patient/Identifier`, patientIdentifierRequest)\r\n }\r\n\r\n putPatientContact(patientContactRequest: IPatientContactRequest): Observable<boolean> {\r\n return this.http.put<boolean>(`${this.endpoint}Patient/Contact`, patientContactRequest)\r\n }\r\n\r\n putPatientAddress(patientAddressRequest: IPatientAddressRequest): Observable<boolean> {\r\n return this.http.put<boolean>(`${this.endpoint}Patient/Address`, patientAddressRequest)\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n deletePatientIdentifier(patientId: string, identifierId: number): Observable<boolean> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('identifierId', identifierId);\r\n\r\n return this.http.delete<boolean>(`${this.endpoint}Patient/Identifier`, { params });\r\n }\r\n\r\n deletePatientContact(contactId: number): Observable<boolean> {\r\n const params = new HttpParams()\r\n .set('contactId', contactId);\r\n\r\n return this.http.delete<boolean>(`${this.endpoint}Patient/Contact`, { params });\r\n }\r\n\r\n deletePatientAddress(patientId: string, typeAddressId: number): Observable<boolean> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('typeAddressId', typeAddressId)\r\n\r\n return this.http.delete<boolean>(`${this.endpoint}Patient/Address`, { params });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IPatientResponse } from '../DTOPatient/Response/IPatientResponse';\r\nimport { IPatientRequest } from '../DTOPatient/Request/IPatientRequest';\r\nimport { ITargetResponse } from '../DTOPatient/Response/ITargetResponse';\r\nimport { ISettingResponse } from '../DTOPatient/Response/ISettingResponse';\r\nimport { ISettingRequest } from '../DTOPatient/Request/ISettingRequest';\r\nimport { ICaregiverDTO } from '../DTOPatient/ICaregiverDTO';\r\nimport { IAnnotationResponse } from '../DTOPatient/Response/IAnnotationResponse';\r\nimport { IAnnotationRequest } from '../DTOPatient/Request/IAnnotationRequest';\r\nimport { IAlertResponse } from '../DTOPatient/Response/IAlertResponse';\r\nimport { IRiskDTO } from '../DTOPatient/IRiskDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiPatientService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Patient/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatients(): Observable<IPatientResponse[]> {\r\n return this.http.get<IPatientResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n //funzione per la ricerca del paziente\r\n getPatientById(id: string): Observable<IPatientResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientByFiscalCode(fiscalcode: string): Observable<IPatientResponse> {\r\n const params = new HttpParams().set('fiscalcode', fiscalcode);\r\n return this.http.get<IPatientResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per recupero dei target dei pazienti\r\n getTargets(): Observable<ITargetResponse[]> {\r\n return this.http.get<ITargetResponse[]>(`${this.endpoint}Target`)\r\n }\r\n\r\n getTargetByPatientId(patientId: string): Observable<ITargetResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<ITargetResponse[]>(`${this.endpoint}Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTargetByParameters(patientId: string | '', targetId: string | ''): Observable<ITargetResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('targetId', targetId);\r\n return this.http.get<ITargetResponse[]>(`${this.endpoint}Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSettings(): Observable<ISettingResponse[]> {\r\n return this.http.get<ISettingResponse[]>(`${this.endpoint}Setting`);\r\n }\r\n\r\n //funzione per recupero dei setting dei pazienti\r\n getSettingByPatientId(patientId: string): Observable<ISettingResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<ISettingResponse[]>(`${this.endpoint}Setting`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSettingById(id: number): Observable<ISettingResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ISettingResponse>(`${this.endpoint}Setting`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCaregivers(): Observable<ICaregiverDTO[]> {\r\n return this.http.get<ICaregiverDTO[]>(`${this.endpoint}Caregiver`);\r\n }\r\n\r\n //funzione per recupero del caregiver del paziente\r\n getCaregiverById(id: string): Observable<ICaregiverDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ICaregiverDTO>(`${this.endpoint}Caregiver`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per recuperare tutte le note\r\n getNotes(): Observable<IAnnotationResponse[]> {\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Note`)\r\n }\r\n\r\n //funzione per recuperare le note di un paziente\r\n getNotesByPatientId(patientId: string): Observable<IAnnotationResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Note`, {\r\n params: params\r\n })\r\n }\r\n\r\n //funzione per recuperare tutti i log\r\n getLogs(): Observable<IAnnotationResponse[]> {\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Log`)\r\n }\r\n\r\n //funzione per recuperare i log di un paziente\r\n getLogsByPatientId(patientId: string): Observable<IAnnotationResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Log`, {\r\n params: params\r\n })\r\n }\r\n\r\n //funzione per recuperare tutti gli alert\r\n getAlerts(): Observable<IAlertResponse[]> {\r\n return this.http.get<IAlertResponse[]>(`${this.endpoint}Alert`)\r\n }\r\n\r\n //funzione per recuperare gli alert di un paziente\r\n getAlertsByPatientId(patientId: string): Observable<IAlertResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IAlertResponse[]>(`${this.endpoint}Alert`, {\r\n params: params\r\n })\r\n }\r\n\r\n \r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento del paziente\r\n postPatient(patientRequest: IPatientRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}`, patientRequest);\r\n }\r\n\r\n //funzione per l'inserimento di parametri\r\n postTarget(targetRequest: ITargetResponse): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Target`, targetRequest);\r\n }\r\n\r\n //funzione per l'inserimento dei setting\r\n postSetting(settingRequest: ISettingRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Setting`, settingRequest);\r\n }\r\n\r\n //funzione per l'inserimento del caregiver\r\n postCaregiver(dictionaryCaregiver: ICaregiverDTO): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Caregiver`, dictionaryCaregiver);\r\n }\r\n\r\n //funzione per l'inserimento di una nota\r\n postNote(annotationRequest: IAnnotationRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Note`, annotationRequest);\r\n }\r\n\r\n //funzione per l'inserimento di un log\r\n postLog(annotationRequest: IAnnotationRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Log`, annotationRequest);\r\n }\r\n\r\n postRisk(riskRequest: IRiskDTO): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Risk`, riskRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //funzione per aggiornare la visualizzazione dell'alert\r\n putAlert(patientId: string): Observable<boolean> {\r\n console.log('chiamata', patientId);\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.put<boolean>(`${this.endpoint}Alert`, {}, { params })\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione del paziente\r\n deletePatient(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`);\r\n }\r\n\r\n deleteSetting(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Setting/${id}`);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryIdentifier } from '../DTOPatient/Dictionary/IDictionaryIdentifier';\r\nimport { IDictionaryTypeAddress } from '../DTOPatient/Dictionary/IDictionaryTypeAddress';\r\nimport { IDictionaryTypeContact } from '../DTOPatient/Dictionary/IDictionaryTypeContact';\r\nimport { IDictionarySetting } from '../DTOPatient/Dictionary/IDictionarySetting';\r\nimport { IDictionarySettingStatus } from '../DTOPatient/Dictionary/IDictionarySettingStatus';\r\nimport { IDictionaryTypeEventDTO } from '../DTOPatient/Dictionary/IDictionaryTypeEventDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiPatientDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Patient/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzione per il ritorno degli identifier in base ai parametri\r\n getIdentifiers(): Observable<IDictionaryIdentifier[]> {\r\n return this.http.get<IDictionaryIdentifier[]>(`${this.endpoint}Dictionary/Identifier`);\r\n }\r\n\r\n getDictionaryIdentifierById(identifierId: number): Observable<IDictionaryIdentifier> {\r\n const params = new HttpParams().set('identifierId', identifierId);\r\n return this.http.get<IDictionaryIdentifier>(`${this.endpoint}Dictionary/Identifier`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per il ritorno dei tipi di address in base al parametro\r\n\r\n getDictionaryTypesAddress(): Observable<IDictionaryTypeAddress[]> {\r\n return this.http.get<IDictionaryTypeAddress[]>(`${this.endpoint}Dictionary/TypeAddress`);\r\n }\r\n\r\n getDictionaryTypeAddressById(addressId: number): Observable<IDictionaryTypeAddress> {\r\n const params = new HttpParams().set('addressId', addressId);\r\n return this.http.get<IDictionaryTypeAddress>(`${this.endpoint}Dictionary/TypeAddress`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per il ritorno dei tipi di contatto\r\n getDictionaryTypesContact(): Observable<IDictionaryTypeContact[]> {\r\n return this.http.get<IDictionaryTypeContact[]>(`${this.endpoint}Dictionary/TypeContact`);\r\n }\r\n\r\n getDictionaryTypeContactById(contactId: number): Observable<IDictionaryTypeContact> {\r\n const params = new HttpParams().set('contactId', contactId);\r\n return this.http.get<IDictionaryTypeContact>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per il ritorno dei setting\r\n getSettingBySenderReceiver(sender: boolean, receiver: boolean): Observable<IDictionarySetting[]> {\r\n const params = new HttpParams().set('sender', sender).set('receiver', receiver);\r\n return this.http.get<IDictionarySetting[]>(`${this.endpoint}Dictionary/Setting`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSettingById(id: string): Observable<IDictionarySetting> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionarySetting>(`${this.endpoint}Dictionary/Setting`, {\r\n params: params,\r\n })\r\n }\r\n\r\n //funzione per il ritorno di setting status\r\n getSettingStatus(): Observable<IDictionarySettingStatus[]> {\r\n return this.http.get<IDictionarySettingStatus[]>(`${this.endpoint}Dictionary/Setting/Status`);\r\n }\r\n\r\n getSettingStatusById(id: number): Observable<IDictionarySettingStatus> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionarySettingStatus>(`${this.endpoint}Dictionary/Setting/Status`, {\r\n params: params,\r\n })\r\n }\r\n\r\n getTypeEvent(): Observable<IDictionaryTypeEventDTO[]> {\r\n return this.http.get<IDictionaryTypeEventDTO[]>(`${this.endpoint}Dictionary/TypeEvent`)\r\n }\r\n\r\n getTypeEventByCode(code: string): Observable<IDictionaryTypeEventDTO> {\r\n const params = new HttpParams().set('code', code);\r\n return this.http.get<IDictionaryTypeEventDTO>(`${this.endpoint}Dictionary/TypeEvent`, {\r\n params: params,\r\n })\r\n }\r\n\r\n getTypeEventById(id: string): Observable<IDictionaryTypeEventDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeEventDTO>(`${this.endpoint}Dictionary/TypeEvent`, {\r\n params: params,\r\n })\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //inserimento identifier\r\n postDictionaryIdentifier(dictionaryIdentifierRequest: IDictionaryIdentifier): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Identifier`, dictionaryIdentifierRequest);\r\n }\r\n\r\n //inserimento tipo address\r\n postDictionaryTypeAddress(dictionaryTypeAddressRequest: IDictionaryTypeAddress): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeAddress`, dictionaryTypeAddressRequest);\r\n }\r\n\r\n //insirimento tipo contatto\r\n postDictionaryTypeContact(dictionaryTypeContactRequest: IDictionaryTypeContact): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeContact`, dictionaryTypeContactRequest);\r\n }\r\n\r\n //inserimento sender/receiver\r\n postDictionarySetting(dictionarySetting: IDictionarySetting): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Setting`, dictionarySetting);\r\n }\r\n\r\n //inserimento status setting\r\n postDictionarySettingStatus(dictionarySettingStatus: IDictionarySettingStatus): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Setting/Status`, dictionarySettingStatus)\r\n }\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //eliminazione identifier\r\n deleteIdentifier(identifierId : number): Observable<boolean> {\r\n const params = new HttpParams().set('identifierId', identifierId );\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //eliminazione tipo address\r\n deleteTypeAddress(addressId : number): Observable<boolean> {\r\n const params = new HttpParams().set('addressId', addressId);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeAddress`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //eliminazione tipo contatto\r\n deleteTypeContact(contactId : number): Observable<boolean> {\r\n const params = new HttpParams().set('contactId', contactId);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n deleteSetting(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Setting/${id}`);\r\n }\r\n\r\n deleteStatus(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Setting/Status/${id}`);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IRequestResponse } from '../DTORequest/Response/IRequestResponse';\r\nimport { IRequestRequest } from '../DTORequest/Request/IRequestRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiRequestService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Request/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle richieste in base al parametro\r\n getRequests(): Observable<IRequestResponse[]> {\r\n return this.http.get<IRequestResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n \r\n getRequestByParameters(statusId: string | \"\", typeId: string | \"\"): Observable<IRequestResponse[]> {\r\n const params = new HttpParams().set('statusId', statusId).set('typeId', typeId);\r\n return this.http.get<IRequestResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n \r\n\r\n getRequestByKey(key: string): Observable<IRequestResponse> {\r\n const params = new HttpParams().set('key', key);\r\n return this.http.get<IRequestResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRequestsByStatus(statusId: string): Observable<IRequestResponse> {\r\n const params = new HttpParams().set('statusId', statusId);\r\n return this.http.get<IRequestResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRequestByType(typeId: number): Observable<IRequestResponse> {\r\n const params = new HttpParams().set('typeId', typeId);\r\n return this.http.get<IRequestResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento della richiesta\r\n postRequest(requestRequest: IRequestRequest, accountProfileId: string | \"\"): Observable<string> {\r\n const params = new HttpParams().set('accountProfileId', accountProfileId)\r\n return this.http.post<string>(`${this.endpoint}`, requestRequest, {\r\n params: params,\r\n });\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n setRequestStatus(requestId: string, statusId: number, accountProfileId: string | \"\"): Observable<boolean>{\r\n const params = new HttpParams().set('requestId', requestId).set('statusId', statusId).set('accountProfileId', accountProfileId); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteRequest(key: string): Observable<boolean> {\r\n const params = new HttpParams().set('key', key);\r\n return this.http.delete<boolean>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryStatus } from '../DTORequest/Dictionary/IDictionaryStatus';\r\nimport { IDictionaryTypeRequest } from '../DTORequest/Dictionary/IDictionaryTypeRequest';\r\nimport { IOutcomeRequestTypeResponse } from '../DTORequest/Response/IOutcomeRequestTypeResponse';\r\nimport { IDictionaryPriority } from '../DTORequest/Dictionary/IDictionaryPriority';\r\nimport { IOutcomeRequestTypeRequest } from '../DTORequest/Request/IOutcomeRequestTypeRequest';\r\nimport { IDTOKey } from '../DTORequest/IDTOKey';\r\nimport { IDictionaryOutcome } from '../DTORequest/Dictionary/IDictionaryOutcome';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiRequestDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Request/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle key in base al parametro\r\n //tutte le key\r\n getKeys(): Observable<IDTOKey[]> {\r\n return this.http.get<IDTOKey[]>(`${this.endpoint}Dictionary/Key`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getKeyByParameters(patientId: string | \"\", accessId: string | \"\", requestId: string | \"\", spoke: string | \"\"): Observable<IDTOKey[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('accessId', accessId).set('requestId', requestId).set('spoke', spoke);\r\n return this.http.get<IDTOKey[]>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //dati parametri singoli\r\n getKeyById(id: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('id', id)\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getKeyByPatientId(patientId: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getKeyByAccessId(accessId: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('accessId', accessId);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getKeyByRequestId(requestId: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('requestId', requestId);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getKeyBySpoke(spoke: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('spoke', spoke);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna gli outcome \r\n getOutcomes(): Observable<IDictionaryOutcome[]> {\r\n return this.http.get<IDictionaryOutcome[]>(`${this.endpoint}Dictionary/Outcome`);\r\n }\r\n\r\n //funzione che ritorna gli outcome dato l'id\r\n getOutcomeById(id: string): Observable<IDictionaryOutcome> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryOutcome>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti gli status\r\n getStatus(): Observable<IDictionaryStatus[]> {\r\n return this.http.get<IDictionaryStatus[]>(`${this.endpoint}Dictionary/Status`);\r\n }\r\n\r\n //funzione che ritorna gli stauts dato l'id\r\n getStatusById(id: string): Observable<IDictionaryStatus> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryStatus>(`${this.endpoint}Dictionary/Status`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti i tipi richiesta\r\n getTypesRequest(): Observable<IDictionaryTypeRequest[]> {\r\n return this.http.get<IDictionaryTypeRequest[]>(`${this.endpoint}Dictionary/TypeRequest`);\r\n }\r\n\r\n //funzione che ritorna il tipo richiesta dato l'id\r\n getTypeRequestById(id: string): Observable<IDictionaryTypeRequest> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeRequest>(`${this.endpoint}Dictionary/TypeRequest`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti i tipi richiesta\r\n getTypeRequestOutcome(): Observable<IOutcomeRequestTypeResponse[]> {\r\n return this.http.get<IOutcomeRequestTypeResponse[]>(`${this.endpoint}Dictionary/TypeRequest/Outcome`);\r\n }\r\n\r\n //funzione che ritorna il tipo richiesta dato l'id\r\n getTypeRequestOutcomeById(id: string): Observable<IOutcomeRequestTypeResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IOutcomeRequestTypeResponse>(`${this.endpoint}Dictionary/TypeRequest/Outcome`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti i tipi di priorità\r\n getPriorities(): Observable<IDictionaryPriority[]> {\r\n return this.http.get<IDictionaryPriority[]>(`${this.endpoint}Dictionary/Priority`);\r\n }\r\n\r\n //funzione che ritorna la priorità dato l'id\r\n getPriority(id: string): Observable<IDictionaryPriority> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryPriority>(`${this.endpoint}Dictionary/Priority`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione post delle key\r\n postKey(dictionaryKey: IDTOKey): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Key`, dictionaryKey);\r\n }\r\n\r\n //post outcome per inserimento\r\n postOutcome(dictionaryOutcome: IDictionaryOutcome): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Outcome`, dictionaryOutcome);\r\n }\r\n\r\n //post status per inserimento\r\n postStatus(dictionaryStatus: IDictionaryStatus): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Stauts`, dictionaryStatus);\r\n }\r\n //post TypeRequest per inserimento\r\n postTypeRequest(dictionaryTypeRequest: IDictionaryTypeRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeRequest`, dictionaryTypeRequest);\r\n }\r\n //post tipo outcome per inserimento\r\n postTypeRequestOutcome(dictionaryTypeRequestOutcome: IOutcomeRequestTypeRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeRequest/Outcome`, dictionaryTypeRequestOutcome);\r\n }\r\n //post priorità per inserimento\r\n postPriority(dictionaryPriority: IDictionaryPriority): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Priority`, dictionaryPriority);\r\n }\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n putKey(dictionaryKey: IDTOKey): Observable<string> {\r\n return this.http.put<string>(`${this.endpoint}Dictionary/Key`, dictionaryKey);\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della key\r\n deleteKey(key: string): Observable<boolean> {\r\n const params = new HttpParams().set('key', key);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione dell'outcome\r\n deleteOutcome(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Outcome`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione dello Status\r\n deleteStatus(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Status`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del tipo richiesta\r\n deleteTypeRequest(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeRequest`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del tipo di outcome\r\n deleteTypeRequestOutcome(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeRequest/Outcome`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione della priorità\r\n deletePriority(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Priority`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IStructureResponse } from '../DTOStructure/Response/IStructureResponse';\r\nimport { IStructureRequest } from '../DTOStructure/Request/IStructureRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiStructureService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Structure/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle richieste in base al parametro\r\n getStructures(): Observable<IStructureResponse[]> {\r\n return this.http.get<IStructureResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getRequestById(id: string): Observable<IStructureResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IStructureResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getStructureByDepartmentId(departmentId: string): Observable<IStructureResponse[]> {\r\n const params = new HttpParams().set('departmentId', departmentId);\r\n return this.http.get<IStructureResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica della struttura\r\n postStructure(structureRequest: IStructureRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, structureRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteStructure(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDepartmentResponse } from '../DTOStructure/Response/IDepartmentResponse';\r\nimport { IDepartmentRequest } from '../DTOStructure/Request/IDepartmentRequest';\r\nimport { IDictionaryTypeStructure } from '../DTOStructure/Dictionary/IDictionaryTypeStructure';\r\nimport { IDictionaryDepartment } from '../DTOStructure/Dictionary/IDictionaryDepartment';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiStructureDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Structure/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei department in base al parametro\r\n getDepartments(): Observable<IDictionaryDepartment[]> {\r\n return this.http.get<IDictionaryDepartment[]>(`${this.endpoint}Dictionary/Department`);\r\n }\r\n\r\n getDepartmentById(id: string): Observable<IDictionaryDepartment> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryDepartment>(`${this.endpoint}Dictionary/Department`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getDepartmentByCode(code: string): Observable<IDictionaryDepartment> {\r\n const params = new HttpParams().set('code', code);\r\n return this.http.get<IDictionaryDepartment>(`${this.endpoint}Dictionary/Department`, {\r\n params: params\r\n });\r\n }\r\n\r\n getDepartmentByParameters(id: string, code: string): Observable<IDictionaryDepartment> {\r\n const params = new HttpParams().set('id', id).set('code', code);\r\n return this.http.get<IDictionaryDepartment>(`${this.endpoint}Dictionary/Department`, {\r\n params: params\r\n });\r\n }\r\n\r\n getTypesStructure(): Observable<IDictionaryTypeStructure[]> {\r\n return this.http.get<IDictionaryTypeStructure[]>(`${this.endpoint}Dictionary/TypeStructure`);\r\n }\r\n\r\n getTypeStructureById(id: string): Observable<IDictionaryTypeStructure> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeStructure>(`${this.endpoint}Dictionary/TypeStructure`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica del department\r\n postDepartment(departmentRequest: IDictionaryDepartment): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Department`, departmentRequest);\r\n }\r\n\r\n postTypeStructure(typeStructureRequest: IDictionaryTypeStructure): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/TypeStructure`, typeStructureRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteDepartment(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Department/${id}`);\r\n }\r\n\r\n deleteTypeStructure(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeStructure`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryTypeQuestionDTO } from '../DTOSurvey/Dictionary/IDictionaryTypeQuestionDTO';\r\nimport { IDictionaryTypeSurveyDTO } from '../DTOSurvey/Dictionary/IDictionaryTypeSurveyDTO';\r\nimport { IDictionaryIconDTO } from '../DTOSurvey/Dictionary/IDictionaryIconDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSurveyDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Survey/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n getTypeQuestions(): Observable<IDictionaryTypeQuestionDTO[]> {\r\n return this.http.get<IDictionaryTypeQuestionDTO[]>(`${this.endpoint}Dictionary/TypeQuestion`);\r\n }\r\n\r\n getTypeQuestionById(id: number): Observable<IDictionaryTypeQuestionDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeQuestionDTO>(`${this.endpoint}Dictionary/TypeQuestion`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n getTypeSurveys(): Observable<IDictionaryTypeQuestionDTO[]> {\r\n return this.http.get<IDictionaryTypeQuestionDTO[]>(`${this.endpoint}Dictionary/TypeSurvey`);\r\n }\r\n \r\n getTypeSurveyById(id: number): Observable<IDictionaryTypeSurveyDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeSurveyDTO>(`${this.endpoint}Dictionary/TypeSurvey`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n getIcons(): Observable<IDictionaryIconDTO[]> {\r\n return this.http.get<IDictionaryIconDTO[]>(`${this.endpoint}Dictionary/TypeSurvey`);\r\n }\r\n \r\n getIconById(id: number): Observable<IDictionaryIconDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryIconDTO>(`${this.endpoint}Dictionary/TypeSurvey`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postTypeQuestion(dictionaryTypeQuestion: IDictionaryTypeQuestionDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeQuestion`, dictionaryTypeQuestion);\r\n }\r\n\r\n postTypeSurvey(dictionarySurveyQuestion: IDictionaryTypeSurveyDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeSurvey`, dictionarySurveyQuestion);\r\n }\r\n\r\n postIcon(dictionaryIcon: IDictionaryIconDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Icon`, dictionaryIcon);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione del tipo domanda\r\n deleteTypeQuestion(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeQuestion`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione del tipo questionario\r\n deleteTypeSurvey(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeSurvey/${id}`);\r\n }\r\n\r\n //funzione per l'eliminazione dell'icona\r\n deleteIcon(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Icon`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IEventResponse } from '../DTOPatient/Response/IEventResponse';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiEventService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Event/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getEventsByPatientIdStartEnd(patientId: string, start: string, end: string): Observable<IEventResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('start', start).set('end', end);\r\n return this.http.get<IEventResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n}\r\n","import { inject, Inject, Injectable } from \"@angular/core\";\r\nimport { API_CONFIG } from \"../../../services/api-config.token\";\r\nimport { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IReportResponseDto } from \"../DtoResponse/IReportReponseDto.interface\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiReportService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Report/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientReportPdf(patientId: string, from?: string, to?: string): Observable<IReportResponseDto> {\r\n const params = new HttpParams().set('patientId', patientId).set('from', from || '').set('to', to || '');\r\n\r\n return this.http.get<IReportResponseDto>(`${this.endpoint}Patient/Pdf`, {\r\n params: params,\r\n });\r\n }\r\n}","import { Component, computed, input, output } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\nexport type ButtonVariant = 'primary' | 'secondary' | 'third' | 'fourth';\r\n\r\n@Component({\r\n selector: 'lib-button',\r\n imports: [FaIconComponent],\r\n templateUrl: './button.html',\r\n styleUrl: './button.css'\r\n})\r\nexport class Button {\r\n variant = input<ButtonVariant>('fourth');\r\n label = input<string>();\r\n icon = input<IconProp>();\r\n disabled = input<boolean>(false);\r\n ariaLabel = input<string>(); //necessario per accessibilità, se il bottone ha solo un'icona\r\n\r\n //colori personalizzabili - default nero\r\n bgColor = input<string>('#000');\r\n textColor = input<string>('#fff');\r\n borderColor = input<string>('#000');\r\n iconColor = input<string>('#fff');\r\n\r\n clicked = output<void>();\r\n\r\n\r\n\r\n protected classes = computed(() => {\r\n const parts = ['btn', `btn--${this.variant()}`];\r\n \r\n if (this.icon() && !this.label()) parts.push('btn--icon-only');\r\n else if (this.icon() && this.label()) parts.push('btn--with-icon');\r\n else parts.push('btn--label-only');\r\n\r\n return parts.join(' ');\r\n })\r\n\r\n protected styles = computed(() => ({\r\n '--btn-bg': this.bgColor(),\r\n '--btn-color': this.textColor(),\r\n '--btn-border-color': this.borderColor(),\r\n '--btn-icon-color': this.iconColor()\r\n }))\r\n\r\n protected handleClick() {\r\n this.clicked.emit();\r\n }\r\n\r\n}\r\n","<button\r\n [class]=\"classes()\"\r\n [style]=\"styles()\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n (click)=\"handleClick()\" \r\n>\r\n\r\n @if (icon()) {\r\n <span class=\"btn__icon\">\r\n <fa-icon [icon]=\"icon()!\"></fa-icon>\r\n </span>\r\n }\r\n\r\n @if (label()) {\r\n <span class=\"btn__label\">\r\n {{ label() }}\r\n </span>\r\n }\r\n\r\n</button>","/*\r\n * Public API Surface of itc-library20\r\n */\r\n\r\nexport * from './lib/itc-library20';\r\nexport * from './lib/primary-button/primary-button';\r\nexport * from './lib/secondary-button/secondary-button';\r\nexport * from './lib/third-button/third-button';\r\nexport * from './lib/basic-table/basic-table';\r\nexport * from './lib/sortable-table/sortable-table';\r\nexport * from './lib/calendar/calendar';\r\nexport * from './lib/message/message';\r\nexport * from './lib/survey/survey';\r\nexport * from './lib/survey/survey-radio/survey-radio';\r\nexport * from './lib/survey/survey-valuebox/survey-valuebox';\r\nexport * from './lib/survey/survey-text/survey-text';\r\nexport * from './lib/services/minio';\r\nexport * from './lib/services/config.interface';\r\nexport * from './lib/services/primeng-italian-locale';\r\nexport * from './lib/services/format-date';\r\nexport * from './lib/microservices/account/serviceAccount/account';\r\nexport * from './lib/microservices/account/serviceAccount/account-dictionary';\r\nexport * from './lib/microservices/exam/serviceExam/exam';\r\nexport * from './lib/microservices/exam/serviceExam/exam-appointment';\r\nexport * from './lib/microservices/exam/serviceExam/exam-dictionary';\r\nexport * from './lib/microservices/exam/serviceExam/exam-kit';\r\nexport * from './lib/microservices/geography/serviceGeography/geography';\r\nexport * from './lib/microservices/patient/servicePatient/administration';\r\nexport * from './lib/microservices/patient/servicePatient/patient';\r\nexport * from './lib/microservices/patient/servicePatient/patient-dictionary';\r\nexport * from './lib/microservices/request/serviceRequest/request';\r\nexport * from './lib/microservices/request/serviceRequest/request-dictionary';\r\nexport * from './lib/microservices/structure/serviceStructure/structure';\r\nexport * from './lib/microservices/structure/serviceStructure/structure-dictionary';\r\nexport * from './lib/microservices/survey/serviceSurvey/survey';\r\nexport * from './lib/microservices/survey/serviceSurvey/survey-dictionary';\r\nexport * from './lib/microservices/patient/servicePatient/event';\r\nexport * from './lib/services/api-config.token';\r\nexport * from './lib/microservices/report/reportService/report';\r\nexport * from './lib/button/button';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"itc-components-library20.mjs","sources":["../../../projects/itc-library20/src/lib/itc-library20.ts","../../../projects/itc-library20/src/lib/primary-button/primary-button.ts","../../../projects/itc-library20/src/lib/primary-button/primary-button.html","../../../projects/itc-library20/src/lib/secondary-button/secondary-button.ts","../../../projects/itc-library20/src/lib/secondary-button/secondary-button.html","../../../projects/itc-library20/src/lib/third-button/third-button.ts","../../../projects/itc-library20/src/lib/third-button/third-button.html","../../../projects/itc-library20/src/lib/basic-table/basic-table.ts","../../../projects/itc-library20/src/lib/basic-table/basic-table.html","../../../projects/itc-library20/src/lib/sortable-table/sortable-table.ts","../../../projects/itc-library20/src/lib/sortable-table/sortable-table.html","../../../projects/itc-library20/src/lib/services/primeng-italian-locale.ts","../../../projects/itc-library20/src/lib/calendar/calendar.ts","../../../projects/itc-library20/src/lib/calendar/calendar.html","../../../projects/itc-library20/src/lib/message/message.ts","../../../projects/itc-library20/src/lib/message/message.html","../../../projects/itc-library20/src/lib/services/api-config.token.ts","../../../projects/itc-library20/src/lib/microservices/survey/serviceSurvey/survey.ts","../../../projects/itc-library20/src/lib/survey/survey-radio/survey-radio.ts","../../../projects/itc-library20/src/lib/survey/survey-radio/survey-radio.html","../../../projects/itc-library20/src/lib/survey/survey-text/survey-text.ts","../../../projects/itc-library20/src/lib/survey/survey-text/survey-text.html","../../../projects/itc-library20/src/lib/survey/survey-label/survey-label.ts","../../../projects/itc-library20/src/lib/survey/survey-label/survey-label.html","../../../projects/itc-library20/src/lib/survey/survey-valuebox/survey-valuebox.ts","../../../projects/itc-library20/src/lib/survey/survey-valuebox/survey-valuebox.html","../../../projects/itc-library20/src/lib/survey/survey.ts","../../../projects/itc-library20/src/lib/survey/survey.html","../../../projects/itc-library20/src/lib/services/minio.ts","../../../projects/itc-library20/src/lib/services/format-date.ts","../../../projects/itc-library20/src/lib/microservices/account/serviceAccount/account.ts","../../../projects/itc-library20/src/lib/microservices/account/serviceAccount/account-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam-appointment.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/exam/serviceExam/exam-kit.ts","../../../projects/itc-library20/src/lib/microservices/geography/serviceGeography/geography.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/administration.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/patient.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/patient-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/request/serviceRequest/request.ts","../../../projects/itc-library20/src/lib/microservices/request/serviceRequest/request-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/structure/serviceStructure/structure.ts","../../../projects/itc-library20/src/lib/microservices/structure/serviceStructure/structure-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/survey/serviceSurvey/survey-dictionary.ts","../../../projects/itc-library20/src/lib/microservices/patient/servicePatient/event.ts","../../../projects/itc-library20/src/lib/microservices/report/reportService/report.ts","../../../projects/itc-library20/src/lib/button/button.ts","../../../projects/itc-library20/src/lib/button/button.html","../../../projects/itc-library20/src/public-api.ts","../../../projects/itc-library20/src/itc-components-library20.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-itc-library20',\r\n imports: [],\r\n template: `\r\n <p>\r\n itc-library20 works!\r\n </p>\r\n `,\r\n styles: ``\r\n})\r\nexport class ItcLibrary20 {\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-primary-button',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './primary-button.html',\r\n styleUrl: './primary-button.css'\r\n})\r\nexport class PrimaryButton {\r\n\r\n @Input() text: string = 'Primary Button';\r\n @Input() bgColor: string = 'black';\r\n @Input() isNegative: boolean = false; //controllare se è un bottone negative o meno\r\n @Input() icon?: any;\r\n @Input() position: string = 'left';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() textColor: string = 'white'\r\n @Input() border: string = '1px solid black'\r\n @Input() borderRadius: string = '5px'\r\n\r\n @Output() onClick = new EventEmitter<void>(); // Evento di click per il genitore\r\n\r\n // La funzione onClick emette l'evento cliccato al genitore\r\n click(): void {\r\n this.onClick.emit(); // Emette l'evento al genitore\r\n }\r\n\r\n\r\n}\r\n","<button \r\n [ngClass]=\"{\r\n 'active': !isNegative,\r\n 'inactive': isNegative,\r\n }\"\r\n [ngStyle]=\"{\r\n 'background-color': isNegative ? 'transparent' : bgColor,\r\n 'font-weight': fontWeight,\r\n 'color': textColor,\r\n 'border': border,\r\n 'border-radius': borderRadius\r\n }\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-secondary-button',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './secondary-button.html',\r\n styleUrl: './secondary-button.css'\r\n})\r\nexport class SecondaryButton {\r\n\r\n @Input() text: string = 'secondary button';\r\n @Input() bgColor: string = 'black';\r\n @Input() textColor: string = 'white';\r\n @Input() icon?: any;\r\n @Input() position: string = 'left';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() borderRadius: string = '5px'\r\n @Input() border: string = ''\r\n\r\n @Output() onClick = new EventEmitter<void>(); // Evento di click per il genitore\r\n\r\n // La funzione onClick emette l'evento cliccato al genitore\r\n click(): void {\r\n this.onClick.emit(); // Emette l'evento al genitore\r\n }\r\n\r\n\r\n}\r\n","<button\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'border-radius': borderRadius,\r\n 'border': border\r\n }\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-third-button',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './third-button.html',\r\n styleUrl: './third-button.css'\r\n})\r\nexport class ThirdButton {\r\n\r\n @Input() text: string = 'secondary button';\r\n @Input() bgColor: string = 'black';\r\n @Input() textColor: string = 'white';\r\n @Input() icon?: any;\r\n @Input() position: string = 'left';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() width: string = '110px';\r\n @Input() height: string = '35px'\r\n @Input() borderRadius: string = '5px'\r\n @Input() border: string = ''\r\n\r\n @Input() disabled: boolean = false;\r\n @Input() iconSpin: boolean = false;\r\n\r\n @Input() fontSize: string = '17px';\r\n\r\n @Output() onClick = new EventEmitter<void>(); // Evento di click per il genitore\r\n\r\n // La funzione onClick emette l'evento cliccato al genitore\r\n click(): void {\r\n if (!this.disabled) {\r\n this.onClick.emit(); // Emette l'evento al genitore\r\n }\r\n }\r\n\r\n\r\n}\r\n","<button\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'width': width,\r\n 'height': height,\r\n 'border-radius': borderRadius,\r\n 'border': border,\r\n 'font-size': fontSize\r\n }\"\r\n [disabled]=\"disabled\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" [ngClass]=\"{'fa-spin': iconSpin}\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" [ngClass]=\"{'fa-spin': iconSpin}\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { FontAwesomeModule, IconDefinition } from '@fortawesome/angular-fontawesome';\r\nimport { faCircle, faStroopwafel } from '@fortawesome/free-solid-svg-icons';\r\nimport { TableModule } from 'primeng/table';\r\n\r\nexport interface IColumn {\r\n field: string,\r\n header: string,\r\n sortable?: boolean,\r\n}\r\n\r\n@Component({\r\n selector: 'lib-basic-table',\r\n imports: [CommonModule, FontAwesomeModule, TableModule],\r\n templateUrl: './basic-table.html',\r\n styleUrl: './basic-table.css'\r\n})\r\nexport class BasicTable {\r\n\r\n router = inject(Router)\r\n \r\n @Input() columns: IColumn[] = [];\r\n @Input() data: any[] = [];\r\n @Input() rows: number = 1;\r\n @Input() detailRoute: string = ''; // Route di default\r\n @Input() actions: Record<string, (rowData: any) => void> = {}; //azioni per le icone\r\n\r\n first: number = 0;\r\n faCircle: IconDefinition = faCircle;\r\n faStroopwafel: IconDefinition = faStroopwafel;\r\n\r\n isDateColumn(value: any): boolean {\r\n return value instanceof Date && !isNaN(value.getTime());\r\n }\r\n \r\n // Funzione per verificare se una colonna contiene un'icona\r\n isIconColumn(columnField: string): boolean {\r\n const iconCheck = (value: any): boolean => {\r\n if (typeof value === 'string' && /^fa[A-Z]/.test(value)) return true; //classi css\r\n if (typeof value === 'object' && value?.iconName) return true; //oggetto IconDefinition\r\n if (typeof value === 'string' && /<i.*class=\".*fa.*\".*>.*<\\/i>/i.test(value)) return true; //html grezzo\r\n return false;\r\n }\r\n return this.data.some(row => iconCheck(row[columnField]));\r\n }\r\n\r\n //andare alla pagina specifica del dettaglio salvando l'id nel sessionStorage\r\n navigateRoute(id: number) {\r\n if (id === undefined || id === null) {\r\n console.error('ID non valido:', id);\r\n return; // Non fare nulla se l'ID non è valido\r\n }\r\n\r\n console.log(id)\r\n\r\n sessionStorage.setItem('id', id.toString());\r\n this.router.navigate([this.detailRoute])\r\n }\r\n\r\n pageChange(event: any): void {\r\n this.first = event.first;\r\n this.rows = event.rows;\r\n // console.log(this.first + ', ' + this.rows)\r\n }\r\n\r\n get tableData(): any[] {\r\n const rowsPerPage = this.rows + this.first;\r\n const emptyRowsCount = rowsPerPage - this.data.length; // Calcola il numero di righe vuote\r\n // console.log('Rows Per Page:', rowsPerPage); // Log per vedere il valore di rows\r\n // console.log('Data Length:', this.data.length); // Log per vedere il numero di righe in data\r\n // console.log('Empty Rows Count:', emptyRowsCount); // Log per vedere quante righe vuote vengono calcolate\r\n\r\n const emptyRows = Array.from({ length: emptyRowsCount }, () =>\r\n this.columns.reduce((acc: Record<string, any>, col) => {\r\n // Se la colonna è quella per l'icona (ad esempio, 'detail'), assegna un'icona di fallback\r\n if (this.isIconColumn(col.field)) {\r\n acc[col.field] = this.faStroopwafel; // Fallback con un'icona vuota o di default\r\n } else {\r\n acc[col.field] = null; // Altrimenti, metti null per le altre colonne\r\n }\r\n return acc;\r\n }, {})\r\n );\r\n\r\n // console.log('Empty Rows:', emptyRows); // Log per vedere le righe vuote generate\r\n\r\n // Combina i dati esistenti con le righe vuote\r\n return [...this.data, ...emptyRows];\r\n }\r\n\r\n\r\n}\r\n","<div class=\"card\">\r\n <p-table\r\n [columns]=\"columns\"\r\n [value]=\"tableData\"\r\n [paginator]=\"true\"\r\n [rows]=\"rows\"\r\n [first]=\"first\"\r\n (onPage)=\"pageChange($event)\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @for(column of columns; track $index) {\r\n <th class=\"column-header\" [ngStyle]=\"{ 'width': column.width }\">\r\n {{ column.header }}\r\n </th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\" \r\n let-rowData \r\n let-columns=\"columns\"\r\n >\r\n <tr>\r\n @for (column of columns; track $index) {\r\n <td class=\"data-container\">\r\n <!-- Verifica il campo data -->\r\n @if (isDateColumn(rowData[column.field])) {\r\n <ng-container>\r\n {{ rowData[column.field] | date: 'dd/MM/yyyy - HH:mm' }}\r\n </ng-container>\r\n }\r\n <!-- Verifica se il campo della colonna è uno di quelli che contiene un'icona -->\r\n @else if (isIconColumn(column.field)) {\r\n <ng-container>\r\n <fa-icon \r\n [icon]=\"rowData[column.field]\"\r\n [ngClass]=\"{ \r\n 'invisible-icon': rowData[column.field] === faStroopwafel, \r\n 'default-style': rowData[column.field] !== faStroopwafel \r\n }\"\r\n (click)=\"actions[column.field] ? actions[column.field](rowData) : null\"\r\n ></fa-icon>\r\n </ng-container>\r\n } @else {\r\n {{ rowData[column.field]?.label || rowData[column.field] }}\r\n }\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>","import { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { IColumn } from '../basic-table/basic-table';\r\nimport { Router } from '@angular/router';\r\nimport { FontAwesomeModule, IconDefinition } from '@fortawesome/angular-fontawesome';\r\nimport * as fas from '@fortawesome/free-solid-svg-icons';\r\nimport { Table, TableModule } from 'primeng/table';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SortEvent } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'lib-sortable-table',\r\n imports: [CommonModule, FontAwesomeModule, TableModule, FormsModule],\r\n templateUrl: './sortable-table.html',\r\n styleUrl: './sortable-table.css'\r\n})\r\nexport class SortableTable implements OnChanges {\r\n\r\n router = inject(Router)\r\n \r\n @Input() columns: IColumn[] = [];\r\n @Input() data: any[] = [];\r\n @Input() rows: number = 1;\r\n @Input() detailRoute: string = ''; // Route di default\r\n @Input() actions: Record<string, (rowData: any) => void> = {}; //azioni per le icone\r\n @Input() colorPicker: (rowData: any, field: string) => string = () => 'var(--primary-blue-color)';\r\n @Input() selected: any[] = [];\r\n @Input() tableCheckbox = '';\r\n @Input() selectionMode: 'none' | 'single' | 'multiple' = 'multiple';\r\n\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n // @Output() unselect = new EventEmitter<any[]>();\r\n @Output() resetData = new EventEmitter<void>();\r\n\r\n first: number = 0;\r\n faCircle = fas.faCircle;\r\n faStroopwafel = fas.faStroopwafel;\r\n faMagnifyingGlass = fas.faMagnifyingGlass;\r\n \r\n selectedData: any[] = [];\r\n\r\n get primeSelectionMode(): 'single' | 'multiple' | null {\r\n if (this.selectionMode === 'none') {\r\n return null;\r\n }\r\n\r\n return this.selectionMode;\r\n }\r\n\r\n get showSelectionCheckboxes(): boolean {\r\n return this.selectionMode === 'multiple';\r\n }\r\n\r\n isDateColumn(value: any): boolean {\r\n return value instanceof Date && !isNaN(value.getTime());\r\n }\r\n \r\n // Funzione per verificare se una colonna contiene un'icona\r\n isIconColumn(columnField: string): boolean {\r\n\r\n if (this.isPriorityColumn(columnField)) {\r\n return true;\r\n }\r\n\r\n const iconCheck = (value: any): boolean => {\r\n if (typeof value === 'string' && value.includes('fa')) return true; //classi css\r\n if (typeof value === 'object' && value?.iconName) return true; //oggetto IconDefinition\r\n if (typeof value === 'string' && /<i.*class=\".*fa.*\".*>.*<\\/i>/i.test(value)) return true; //html grezzo\r\n return false;\r\n }\r\n return this.data.some(row => iconCheck(row[columnField]));\r\n }\r\n\r\n //andare alla pagina specifica del dettaglio salvando l'id nel sessionStorage\r\n navigateRoute(id: number) {\r\n if (id === undefined || id === null) {\r\n console.error('ID non valido:', id);\r\n return; // Non fare nulla se l'ID non è valido\r\n }\r\n\r\n console.log(id)\r\n\r\n sessionStorage.setItem('id', id.toString());\r\n this.router.navigate([this.detailRoute])\r\n }\r\n\r\n pageChange(event: any): void {\r\n this.first = event.first;\r\n this.rows = event.rows;\r\n // console.log(this.first + ', ' + this.rows)\r\n }\r\n \r\n // get tableData(): any[] {\r\n // const rowsPerPage = this.rows + this.first;\r\n // const emptyRowsCount = rowsPerPage - this.data.length; // Calcola il numero di righe vuote\r\n // // console.log('Rows Per Page:', rowsPerPage); // Log per vedere il valore di rows\r\n // // console.log('Data Length:', this.data.length); // Log per vedere il numero di righe in data\r\n // // console.log('Empty Rows Count:', emptyRowsCount); // Log per vedere quante righe vuote vengono calcolate\r\n \r\n // const emptyRows = Array.from({ length: emptyRowsCount }, () =>\r\n // this.columns.reduce((acc: Record<string, any>, col) => {\r\n // // Se la colonna è quella per l'icona (ad esempio, 'detail'), assegna un'icona di fallback\r\n // if (this.isIconColumn(col.field)) {\r\n // acc[col.field] = this.faStroopwafel; // Fallback con un'icona vuota o di default\r\n // } else {\r\n // acc[col.field] = null; // Altrimenti, metti null per le altre colonne\r\n // }\r\n // return acc;\r\n // }, {})\r\n // );\r\n \r\n // // console.log('Empty Rows:', emptyRows); // Log per vedere le righe vuote generate\r\n \r\n // // Combina i dati esistenti con le righe vuote\r\n // return [...this.data, ...emptyRows];\r\n // }\r\n\r\n @ViewChild('dt') dt!: Table;\r\n\r\n initialValue: any[] = [];\r\n\r\n isSorted: boolean | null = null;\r\n currentSortedField: string | null = null;\r\n\r\n\r\n ngOnInit() {\r\n this.initialValue = [...this.data];\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectionMode'] && this.selectionMode === 'none') {\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n customSort(event: SortEvent) {\r\n if (this.currentSortedField !== event.field) {\r\n // Se si clicca su una colonna diversa, resetta lo stato e imposta ascendente\r\n this.currentSortedField = event.field!;\r\n this.isSorted = true;\r\n this.sortTableData(event);\r\n } else {\r\n if (this.isSorted == null || this.isSorted === undefined) {\r\n this.isSorted = true;\r\n this.sortTableData(event);\r\n } else if (this.isSorted == true) {\r\n this.isSorted = false;\r\n this.sortTableData(event);\r\n } else if (this.isSorted == false) {\r\n this.isSorted = null;\r\n this.data = [...this.initialValue];\r\n this.resetData.emit();\r\n this.dt.reset();\r\n }\r\n }\r\n }\r\n\r\n sortTableData(event: SortEvent) {\r\n event.data!.sort((data1: any, data2: any) => {\r\n let value1 = data1[event.field!];\r\n let value2 = data2[event.field!];\r\n\r\n if (event.field === 'priorityIcon') {\r\n value1 = data1['priority'];\r\n value2 = data2['priority'];\r\n }\r\n\r\n let result = null;\r\n if (value1 == null && value2 != null) result = -1;\r\n else if (value1 != null && value2 == null) result = 1;\r\n else if (value1 == null && value2 == null) result = 0;\r\n else {\r\n if (this.isPriorityField(event.field!)) {\r\n result = this.comparePriorities(value1, value2);\r\n } else if (typeof value1 === 'string' && typeof value2 === 'string') result = value1.localeCompare(value2);\r\n else result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;\r\n }\r\n\r\n return event.order! * result;\r\n });\r\n }\r\n\r\n private isPriorityField(fieldName: string): boolean {\r\n if (fieldName.toLowerCase().includes('priority') || fieldName === 'priorityIcon') {\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n isPriorityColumn(columnField: string): boolean {\r\n return columnField === 'priority' && this.data.some(row => row['priorityIcon']);\r\n }\r\n\r\n private comparePriorities(priority1: string, priority2: string): number {\r\n const priorityOrder: {[key: string]: number} = {\r\n 'P1': 1,\r\n 'P2': 2,\r\n 'P3': 3\r\n };\r\n\r\n const order1 = priorityOrder[priority1] || 999;\r\n const order2 = priorityOrder[priority2] || 999;\r\n\r\n return order1 - order2;\r\n }\r\n\r\n\r\n onRowSelect() {\r\n this.selectionChange.emit(this.selectedData);\r\n // console.log('onrowselect', this.selectedData)\r\n }\r\n\r\n clearSelection(): void {\r\n this.selectedData = [];\r\n this.selectionChange.emit(this.selectedData);\r\n // console.log('Selezione tabella resettata');\r\n }\r\n\r\n resetSorting(): void {\r\n this.isSorted = null;\r\n this.currentSortedField = null;\r\n this.data = [...this.initialValue];\r\n if (this.dt) {\r\n this.dt.reset();\r\n }\r\n this.resetData.emit();\r\n }\r\n\r\n\r\n}\r\n","<div class=\"card\">\r\n <p-table\r\n #dt\r\n [columns]=\"columns\"\r\n [value]=\"data\"\r\n [(selection)]=\"selectedData\"\r\n [paginator]=\"true\"\r\n [rows]=\"rows\"\r\n [first]=\"first\"\r\n [customSort]=\"true\"\r\n (onPage)=\"pageChange($event)\"\r\n (sortFunction)=\"customSort($event)\"\r\n (onRowSelect)=\"onRowSelect()\"\r\n (onRowUnselect)=\"onRowSelect()\"\r\n [selectionMode]=\"primeSelectionMode\"\r\n dataKey=\"id\"\r\n >\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @if(showSelectionCheckboxes) {\r\n <th style=\"width: 10px\"></th>\r\n }\r\n @for(column of columns; track $index) {\r\n <th class=\"column-header\" [ngStyle]=\"{ 'width': column.width }\" [pSortableColumn]=\"column.sortable === false ? null : column.field\">\r\n {{ column.header }}\r\n @if(column.sortable !== false) {\r\n <p-sortIcon [field]=\"column.field\"></p-sortIcon>\r\n }\r\n </th>\r\n }\r\n </tr>\r\n </ng-template>\r\n <ng-template\r\n pTemplate=\"body\" \r\n let-rowData \r\n let-columns=\"columns\"\r\n let-selected=\"selected\"\r\n >\r\n <tr [pSelectableRow]=\"primeSelectionMode ? rowData : null\" [attr.data-id]=\"rowData.id\">\r\n @if(showSelectionCheckboxes) {\r\n <td (click)=\"$event.stopPropagation()\">\r\n <p-tableCheckbox [value]=\"rowData\" [ngClass]=\"tableCheckbox\"/>\r\n </td>\r\n }\r\n @for (column of columns; track $index) {\r\n <td class=\"data-container\">\r\n <!-- Verifica il campo data -->\r\n @if (isDateColumn(rowData[column.field])) {\r\n <ng-container>\r\n {{ rowData[column.field] | date: 'dd/MM/yyyy - HH:mm' }}\r\n </ng-container>\r\n }\r\n <!-- Gestione speciale per la colonna priority -->\r\n @else if (column.field === 'priority' && rowData['priorityIcon']) {\r\n <ng-container>\r\n <fa-icon\r\n [icon]=\"rowData['priorityIcon']\"\r\n [ngStyle]=\"{ color: colorPicker(rowData, 'priority') }\"\r\n ></fa-icon>\r\n </ng-container>\r\n }\r\n <!-- Verifica se il campo della colonna è uno di quelli che contiene un'icona -->\r\n @else if (isIconColumn(column.field)) {\r\n <ng-container>\r\n <fa-icon \r\n [icon]=\"rowData[column.field]\"\r\n [ngClass]=\"{ \r\n 'invisible-icon': rowData[column.field] === faStroopwafel, \r\n 'default-style': rowData[column.field] !== faStroopwafel,\r\n 'color-style': rowData[column.field] === faMagnifyingGlass\r\n }\"\r\n [ngStyle]=\"{ color: colorPicker(rowData, column.field) }\"\r\n (click)=\"$event.stopPropagation(); actions[column.field] ? actions[column.field](rowData) : null\"\r\n ></fa-icon>\r\n </ng-container>\r\n } @else {\r\n {{ rowData[column.field]?.label || rowData[column.field] }}\r\n }\r\n </td>\r\n }\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n</div>","export class PrimengItalianLocale {\r\n\r\n}\r\n\r\nexport const PRIMENG_ITALIAN_LOCALE = {\r\n firstDayOfWeek: 1,\r\n dayNames: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n dayNamesShort: [ \"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\r\n dayNamesMin: [ \"Do\", \"Lu\", \"Ma\", \"Me\", \"Gi\", \"Ve\", \"Sa\"],\r\n monthNames: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n monthNamesShort: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n today: 'Oggi',\r\n clear: 'Cancella',\r\n dateFormat: 'dd/mm/yy',\r\n weekHeader: 'Sm'\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { faChevronLeft, faChevronRight, faCircleCheck, faCirclePlus } from '@fortawesome/free-solid-svg-icons';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { PrimeNG } from 'primeng/config';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { PRIMENG_ITALIAN_LOCALE } from '../services/primeng-italian-locale';\r\nimport { ThirdButton } from '../third-button/third-button';\r\nimport { TabsModule } from 'primeng/tabs';\r\n\r\n\r\nexport interface IAppointment {\r\n id: string,\r\n patientId: string,\r\n startDate: Date,\r\n endDate: Date,\r\n name: string,\r\n createDate: Date,\r\n accountProfileId: string\r\n}\r\n\r\nexport enum CalendarView {\r\n Month = 'month',\r\n Week = 'week'\r\n}\r\n\r\ninterface AppointmentCache {\r\n [dateKey: string]: {\r\n hasAppointments: boolean,\r\n appointments: IAppointment[],\r\n firstAppointment: IAppointment | null,\r\n timeSlotMap: { [timeSlot: string]: IAppointment[] }\r\n }\r\n}\r\n\r\n// Costante per il limite massimo della cache\r\nconst MAX_CACHE_SIZE = 100;\r\n\r\n\r\n@Component({\r\n selector: 'lib-calendar',\r\n imports: [CommonModule, FontAwesomeModule, DialogModule, ThirdButton, TabsModule],\r\n templateUrl: './calendar.html',\r\n styleUrl: './calendar.css'\r\n})\r\nexport class Calendar {\r\n\r\n @Input() appointments: IAppointment[] = [];\r\n //tab\r\n @Input() items: MenuItem[] = [];\r\n //timeslot\r\n @Input() startHour: number = 0;\r\n @Input() endHour: number = 24;\r\n @Input() timeInterval: number = 30;\r\n\r\n @Output() dateSelected = new EventEmitter<{date: Date, startTime: string}>();\r\n @Output() closeModal = new EventEmitter<void>();\r\n @Output() tabChanged = new EventEmitter<string>();\r\n\r\n faChevronLeft = faChevronLeft;\r\n faChevronRight = faChevronRight;\r\n faCirclePlus = faCirclePlus;\r\n faCircleCheck = faCircleCheck;\r\n viewDate: Date = new Date();\r\n selectedDate: Date | null = null;\r\n blinkDate: Date | null = null;\r\n selectedDateString: string = '';\r\n selectedStartTime: string | undefined;\r\n weekDays: string[] = ['LUN', 'MAR', 'MER', 'GIO', 'VEN', 'SAB', 'DOM'];\r\n monthDays: Date[] = [];\r\n currentView: CalendarView = CalendarView.Month;\r\n timeSlots: string[] = [];\r\n weeks: Date[][] = [];\r\n visibleList: boolean = false;\r\n newAppointment: boolean = false;\r\n //tabmenu\r\n activeItem: MenuItem | undefined; // Per compatibilità con il resto del codice\r\n activeValue: string = ''; // Per il nuovo componente Tabs\r\n //dialog list appointment\r\n selectedAppointments: IAppointment[] = [];\r\n //hover appuntamenti\r\n hoveredAppointment: any = null;\r\n tooltipStyle: any = {};\r\n\r\n private appointmentCache: AppointmentCache = {};\r\n private monthViewData: any = null;\r\n private weekViewData: any = null;\r\n private formattedDateCache: Map<string, string> = new Map(); // Cache per le date formattate\r\n private cacheKeys: string[] = []; // Per implementare LRU (Least Recently Used) cache\r\n\r\n //\r\n isLoading: boolean = false;\r\n\r\n public CalendarView = CalendarView;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private primengConfig: PrimeNG) {\r\n this.configuraLingua();\r\n this.generateTimeSlots();\r\n this.generateView(this.currentView, this.viewDate);\r\n\r\n this.setDialogWidth();\r\n }\r\n\r\n configuraLingua() {\r\n this.primengConfig.setTranslation(PRIMENG_ITALIAN_LOCALE);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n let needsRefresh = false;\r\n \r\n if (changes['startHour'] || changes['endHour'] || changes['timeInterval']) {\r\n this.generateTimeSlots();\r\n needsRefresh = true;\r\n }\r\n\r\n if (changes['appointments']) {\r\n this.invalidateAppointmentCache();\r\n needsRefresh = true;\r\n }\r\n \r\n if (needsRefresh) {\r\n this.generateView(this.currentView, this.viewDate);\r\n }\r\n }\r\n\r\n // Metodo per invalidare la cache in modo selettivo\r\n private invalidateAppointmentCache() {\r\n this.appointmentCache = {};\r\n this.cacheKeys = [];\r\n }\r\n\r\n // Metodo per generare la chiave della cache basata sulla data\r\n private formatDateKey(date: Date): string {\r\n return `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;\r\n }\r\n\r\n // Metodo per gestire la cache LRU (Least Recently Used)\r\n private cacheAppointmentData(dateKey: string, data: any) {\r\n // Se la chiave è già nella cache, rimuoverla dall'array delle chiavi\r\n const existingIndex = this.cacheKeys.indexOf(dateKey);\r\n if (existingIndex > -1) {\r\n this.cacheKeys.splice(existingIndex, 1);\r\n }\r\n \r\n // Aggiungi la chiave alla fine (più recente)\r\n this.cacheKeys.push(dateKey);\r\n \r\n // Imposta i dati nella cache\r\n this.appointmentCache[dateKey] = data;\r\n \r\n // Se la cache supera la dimensione massima, rimuovi l'elemento meno recente\r\n if (this.cacheKeys.length > MAX_CACHE_SIZE) {\r\n const oldestKey = this.cacheKeys.shift();\r\n if (oldestKey) {\r\n delete this.appointmentCache[oldestKey];\r\n }\r\n }\r\n }\r\n\r\n private precomputeAppointments() {\r\n // Processa solo i giorni visibili per prestazioni ottimali\r\n const visibleDays = this.getVisibleDays();\r\n this.precomputeForDays(visibleDays);\r\n \r\n // Poi elabora i giorni rimanenti in background con un ritardo\r\n if (this.currentView === CalendarView.Month) {\r\n setTimeout(() => {\r\n const allDays = this.weeks.flat();\r\n const remainingDays = allDays.filter(day => \r\n !visibleDays.some(vDay => this.isSameDate(day, vDay))\r\n );\r\n // Elabora in batch di 20 giorni alla volta per evitare di bloccare l'interfaccia\r\n this.precomputeInBatches(remainingDays, 20);\r\n }, 200);\r\n }\r\n }\r\n \r\n // Precomputa in batch per evitare il blocco dell'interfaccia\r\n private precomputeInBatches(days: Date[], batchSize: number) {\r\n if (days.length === 0) return;\r\n \r\n const batch = days.slice(0, batchSize);\r\n const remaining = days.slice(batchSize);\r\n \r\n this.precomputeForDays(batch);\r\n \r\n if (remaining.length > 0) {\r\n setTimeout(() => {\r\n this.precomputeInBatches(remaining, batchSize);\r\n }, 0);\r\n }\r\n }\r\n \r\n private getVisibleDays(): Date[] {\r\n // Per la vista mensile, consideriamo solo le settimane più visibili\r\n if (this.currentView === CalendarView.Month && this.weeks.length > 0) {\r\n return this.weeks.slice(0, 3).flat();\r\n }\r\n return this.monthDays;\r\n }\r\n \r\n private precomputeForDays(days: Date[]) {\r\n // Elabora la cache per un gruppo di giorni\r\n for (const date of days) {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n // Se già in cache, salta\r\n if (this.appointmentCache[dateKey]) continue;\r\n \r\n // Filtra gli appuntamenti per questa data\r\n const appointmentsForDay = this.appointments.filter(\r\n appointment => this.isSameDate(appointment.startDate, date)\r\n ).sort((a, b) => \r\n this.extractTime(a.startDate).localeCompare(this.extractTime(b.startDate))\r\n );\r\n \r\n // Mappa appuntamenti per time slot\r\n const timeSlotMap: { [timeSlot: string]: IAppointment[] } = {};\r\n \r\n for (const timeSlot of this.timeSlots) {\r\n timeSlotMap[timeSlot] = this.appointments.filter(appointment => {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n \r\n return this.isSameDate(appointment.startDate, date) &&\r\n startTime <= timeSlot &&\r\n endTime > timeSlot;\r\n });\r\n }\r\n \r\n // Memorizza nella cache\r\n const cacheData = {\r\n hasAppointments: appointmentsForDay.length > 0,\r\n appointments: appointmentsForDay,\r\n firstAppointment: appointmentsForDay.length > 0 ? appointmentsForDay[0] : null,\r\n timeSlotMap: timeSlotMap\r\n };\r\n \r\n this.cacheAppointmentData(dateKey, cacheData);\r\n }\r\n }\r\n\r\n generateView(view: CalendarView, date: Date) {\r\n this.isLoading = true;\r\n \r\n // non rigenerare dati già esistenti\r\n if (view === CalendarView.Month && this.monthViewData && \r\n this.monthViewData.month === date.getMonth() && \r\n this.monthViewData.year === date.getFullYear()) {\r\n this.weeks = [...this.monthViewData.weeks];\r\n this.monthDays = [...this.monthViewData.monthDays];\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n return;\r\n } else if (view === CalendarView.Week && this.weekViewData &&\r\n this.isSameWeek(this.weekViewData.date, date)) {\r\n this.monthDays = [...this.weekViewData.monthDays];\r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n return;\r\n }\r\n\r\n switch (view) {\r\n case CalendarView.Month:\r\n this.generateMonthView(date);\r\n this.monthViewData = { \r\n month: date.getMonth(), \r\n year: date.getFullYear(),\r\n weeks: [...this.weeks], \r\n monthDays: [...this.monthDays] \r\n };\r\n break;\r\n case CalendarView.Week:\r\n this.generateWeekView(date);\r\n this.weekViewData = { \r\n date: new Date(date),\r\n monthDays: [...this.monthDays] \r\n };\r\n break;\r\n }\r\n\r\n // Calcola gli appuntamenti solo per i giorni visibili inizialmente\r\n this.precomputeAppointments();\r\n \r\n this.isLoading = false;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n // Verifica se due date sono nella stessa settimana\r\n private isSameWeek(date1: Date, date2: Date): boolean {\r\n const d1 = new Date(date1);\r\n const d2 = new Date(date2);\r\n \r\n // Ottieni l'inizio settimana per entrambe le date\r\n const start1 = this.startOfWeek(d1);\r\n const start2 = this.startOfWeek(d2);\r\n \r\n return start1.getTime() === start2.getTime();\r\n }\r\n\r\n generateMonthView(date: Date) {\r\n const start = new Date(date.getFullYear(), date.getMonth(), 1);\r\n const firstMonday = this.startOfWeek(start);\r\n \r\n this.weeks = [];\r\n this.monthDays = [];\r\n let week: Date[] = [];\r\n\r\n // Itera tutti i giorni necessari per coprire il mese più i giorni fuori mese\r\n for (let day = 0; day < 42; day++) { // 6 settimane * 7 giorni\r\n let currentDate = new Date(firstMonday);\r\n currentDate.setDate(firstMonday.getDate() + day);\r\n \r\n week.push(currentDate);\r\n this.monthDays.push(currentDate);\r\n\r\n if (week.length === 7) {\r\n this.weeks.push(week);\r\n week = [];\r\n }\r\n }\r\n }\r\n\r\n generateWeekView(date: Date) {\r\n const startOfWeek = this.startOfWeek(date);\r\n this.monthDays = [];\r\n\r\n for (let day = 0; day < 7; day++) {\r\n const weekDate = new Date(startOfWeek);\r\n weekDate.setDate(startOfWeek.getDate() + day);\r\n this.monthDays.push(weekDate);\r\n }\r\n }\r\n\r\n generateTimeSlots() {\r\n this.timeSlots = [];\r\n for (let hour = this.startHour; hour <= this.endHour; hour++) {\r\n // Calcola gli slot in base all'intervallo specificato\r\n const minuteIntervals = [];\r\n for (let minute = 0; minute < 60; minute += this.timeInterval) {\r\n minuteIntervals.push(minute);\r\n }\r\n \r\n for (let minute of minuteIntervals) {\r\n // Salta l'ultimo slot se è oltre l'ora finale\r\n if (hour === this.endHour && minute > 0) break;\r\n \r\n const formattedHour = hour < 10 ? `0${hour}` : `${hour}`;\r\n const formattedMinute = minute === 0 ? '00' : `${minute}`;\r\n this.timeSlots.push(`${formattedHour}:${formattedMinute}`);\r\n }\r\n }\r\n }\r\n\r\n switchToView(view: CalendarView) {\r\n if (this.currentView === view) return; // Non fare nulla se la vista è già quella corrente\r\n \r\n this.isLoading = true;\r\n this.currentView = view;\r\n this.visibleList = false;\r\n \r\n // Usa setTimeout per permettere all'indicatore di caricamento di essere visualizzato\r\n setTimeout(() => {\r\n if (view === CalendarView.Week && this.selectedDate) {\r\n this.viewDate = new Date(this.selectedDate);\r\n }\r\n \r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n startOfWeek(date: Date) {\r\n const start = new Date(date);\r\n const day = start.getDay();\r\n const diff = start.getDate() - (day === 0 ? 6 : day - 1);\r\n return new Date(start.setDate(diff));\r\n }\r\n\r\n previous() {\r\n this.isLoading = true;\r\n \r\n setTimeout(() => {\r\n if (this.currentView === CalendarView.Month) {\r\n this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() - 1, 1);\r\n } else {\r\n const newDate = new Date(this.viewDate);\r\n newDate.setDate(newDate.getDate() - 7);\r\n this.viewDate = newDate;\r\n }\r\n \r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n next() {\r\n this.isLoading = true;\r\n \r\n setTimeout(() => {\r\n if (this.currentView === CalendarView.Month) {\r\n this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() + 1, 1);\r\n } else {\r\n const newDate = new Date(this.viewDate);\r\n newDate.setDate(newDate.getDate() + 7);\r\n this.viewDate = newDate;\r\n }\r\n \r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n isToday(date: Date): boolean {\r\n const today = new Date();\r\n return (\r\n date.getDate() === today.getDate() &&\r\n date.getMonth() === today.getMonth() &&\r\n date.getFullYear() === today.getFullYear()\r\n );\r\n }\r\n\r\n isPastDate(date: Date): boolean {\r\n const today = new Date();\r\n today.setHours(0, 0, 0, 0);\r\n return date < today;\r\n }\r\n\r\n isPastTime(date: Date, timeSlot: string): boolean {\r\n const currentTime = new Date();\r\n const [hour, minute] = timeSlot.split(':').map((x) => parseInt(x));\r\n const appointmentTime = new Date(date);\r\n appointmentTime.setHours(hour, minute, 0, 0);\r\n return appointmentTime < currentTime;\r\n }\r\n\r\n hasAppointments(date: Date): boolean {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey]) {\r\n return this.appointmentCache[dateKey].hasAppointments;\r\n }\r\n \r\n // Se non è in cache, calcola e memorizza\r\n const hasApps = this.getAppointmentsForDate(date, this.timeSlots).length > 0;\r\n\r\n return hasApps;\r\n }\r\n\r\n isTimeSlotOccupied(date: Date, timeSlot: string): boolean {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey] && this.appointmentCache[dateKey].timeSlotMap[timeSlot]) {\r\n return this.appointmentCache[dateKey].timeSlotMap[timeSlot].length > 0;\r\n }\r\n \r\n return this.getAppointmentsForDataTime(date, timeSlot).length > 0;\r\n }\r\n\r\n isCurrentMonth(date: Date): boolean {\r\n return (\r\n date.getMonth() === this.viewDate.getMonth() &&\r\n date.getFullYear() === this.viewDate.getFullYear()\r\n );\r\n }\r\n\r\n isSameDate(date1: Date, date2: Date): boolean {\r\n if (!date1 || !date2) return false;\r\n \r\n const d1 = new Date(date1);\r\n const d2 = new Date(date2);\r\n \r\n return (\r\n d1.getDate() === d2.getDate() &&\r\n d1.getMonth() === d2.getMonth() &&\r\n d1.getFullYear() === d2.getFullYear()\r\n );\r\n }\r\n\r\n formatDate(date: Date): string {\r\n if (!date) return '';\r\n \r\n const dateKey = this.formatDateKey(date);\r\n if (this.formattedDateCache.has(dateKey)) {\r\n return this.formattedDateCache.get(dateKey)!;\r\n }\r\n \r\n const formatted = date.toLocaleDateString('it-IT', {\r\n weekday: 'long',\r\n day: '2-digit',\r\n month: 'long',\r\n year: 'numeric'\r\n });\r\n \r\n this.formattedDateCache.set(dateKey, formatted);\r\n return formatted;\r\n }\r\n\r\n extractTime(dateInput: Date): string {\r\n const date = new Date(dateInput);\r\n if (isNaN(date.getTime())) {\r\n return '00:00';\r\n }\r\n \r\n const hours = date.getHours().toString().padStart(2, '0');\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n return `${hours}:${minutes}`;\r\n }\r\n\r\n selectDate(date?: Date, startTime?: string) {\r\n if (!date) return;\r\n \r\n const previousDate = this.selectedDate;\r\n this.selectedDate = date;\r\n \r\n if (this.currentView === CalendarView.Month || this.viewDate.getMonth() !== date.getMonth()) {\r\n this.viewDate = new Date(date);\r\n }\r\n \r\n // Usa la cache per gli appuntamenti quando possibile\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey]) {\r\n this.selectedAppointments = this.appointmentCache[dateKey].appointments;\r\n } else {\r\n // Se non è in cache, calcola normalmente\r\n this.selectedAppointments = this.getAppointmentsForDate(date, this.timeSlots);\r\n }\r\n \r\n this.selectedDateString = this.formatDate(date);\r\n \r\n if (startTime) {\r\n if (this.isTimeSlotOccupied(date, startTime) || this.isPastTime(date, startTime)) {\r\n return;\r\n }\r\n \r\n this.newAppointment = true;\r\n this.selectedStartTime = startTime;\r\n this.dateSelected.emit({date, startTime});\r\n } else {\r\n if (this.selectedAppointments.length > 1 || \r\n (this.selectedAppointments.length === 1 && this.isPastDate(date))) {\r\n this.visibleList = true;\r\n this.dateSelected.emit({date, startTime: '00:00'});\r\n } else {\r\n this.visibleList = false;\r\n \r\n if (this.currentView !== CalendarView.Week) {\r\n this.weekViewData = null;\r\n this.switchToView(CalendarView.Week);\r\n } else if (previousDate && this.isSameDate(previousDate, date)) {\r\n this.selectedDate = null;\r\n this.cdr.detectChanges();\r\n setTimeout(() => {\r\n this.selectedDate = date;\r\n this.cdr.detectChanges();\r\n }, 10);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getAppointmentsForDate(day: Date, timeSlots: string[]): IAppointment[] {\r\n return this.appointments\r\n .filter((appointment) => this.isSameDate(appointment.startDate, day))\r\n .map((appointment) => {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n return { ...appointment, startTime, endTime };\r\n });\r\n }\r\n\r\n getAppointmentDuration(appointment: any): number {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n \r\n const startIndex = this.timeSlots.findIndex(slot => slot === startTime);\r\n const endIndex = this.timeSlots.findIndex(slot => slot === endTime);\r\n \r\n if (startIndex === -1 || endIndex === -1) return 1;\r\n return endIndex - startIndex;\r\n }\r\n\r\n getAppointmentHeightStyle(appointment: any): object {\r\n const duration = this.getAppointmentDuration(appointment);\r\n const borderThickness = 6; // spessore del bordo in pixel\r\n const cellHeight = 50; // altezza di una cella in pixel\r\n \r\n // Se la tabella usa border-collapse: collapse\r\n const totalBorders = 1; // solo un bordo per ogni confine tra celle\r\n \r\n // Se la tabella usa border-collapse: separate\r\n // const totalBorders = duration + 1; // ogni cella ha il suo bordo\r\n \r\n const heightInPixels = (duration * cellHeight) - (totalBorders * borderThickness);\r\n \r\n return {\r\n 'background-color': 'var(--appointment-blue-color)',\r\n 'height': heightInPixels + 'px',\r\n 'z-index': '10',\r\n 'top': 0\r\n };\r\n }\r\n\r\n getFirstAppointmentForDate(day: Date, timeSlots: string[]) {\r\n const dateKey = this.formatDateKey(day);\r\n \r\n if (this.appointmentCache[dateKey]) {\r\n return this.appointmentCache[dateKey].firstAppointment;\r\n }\r\n \r\n const appointmentsForDay = this.getAppointmentsForDate(day, timeSlots);\r\n return appointmentsForDay.length > 0 ? appointmentsForDay[0] : null;\r\n }\r\n\r\n getAppointmentsForDataTime(date: Date, timeSlot: string): IAppointment[] {\r\n const dateKey = this.formatDateKey(date);\r\n \r\n if (this.appointmentCache[dateKey] && this.appointmentCache[dateKey].timeSlotMap[timeSlot]) {\r\n return this.appointmentCache[dateKey].timeSlotMap[timeSlot];\r\n }\r\n \r\n return this.appointments.filter(appointment => {\r\n const startTime = this.extractTime(appointment.startDate);\r\n const endTime = this.extractTime(appointment.endDate);\r\n \r\n return this.isSameDate(appointment.startDate, date) &&\r\n startTime <= timeSlot &&\r\n endTime > timeSlot;\r\n });\r\n }\r\n\r\n private formatHourToTimeString(hour: number): string {\r\n const formattedHour = hour < 10 ? `0${hour}` : `${hour}`;\r\n return `${formattedHour}:00`;\r\n }\r\n\r\n toggleNewAppointment() {\r\n if (this.currentView !== CalendarView.Week) {\r\n this.weekViewData = null;\r\n this.switchToView(CalendarView.Week);\r\n }\r\n \r\n this.selectedStartTime = this.formatHourToTimeString(this.startHour);\r\n this.newAppointment = true;\r\n this.dateSelected.emit({date: this.selectedDate!, startTime: this.selectedStartTime});\r\n }\r\n\r\n closeAppointmentModal() {\r\n this.closeModal.emit();\r\n this.newAppointment = false;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onDialogHide() {\r\n this.closeModal.emit();\r\n }\r\n\r\n viewToday(): void {\r\n this.isLoading = true;\r\n \r\n setTimeout(() => {\r\n this.viewDate = new Date();\r\n this.generateView(this.currentView, this.viewDate);\r\n }, 50);\r\n }\r\n\r\n // Tooltip\r\n\r\n showTooltip(appointment: any, event: MouseEvent) {\r\n this.hoveredAppointment = appointment;\r\n \r\n this.cdr.detectChanges();\r\n \r\n //posiziono il tooltip dopo che è stato creato\r\n setTimeout(() => {\r\n const tooltip = document.querySelector('.tooltip') as HTMLElement;\r\n if (!tooltip) return;\r\n \r\n //non si mostra finché non è posizionato\r\n tooltip.style.opacity = '0';\r\n \r\n //dove si trova l'appuntamento hoverato\r\n const appointmentRect = (event.target as HTMLElement).getBoundingClientRect();\r\n const tooltipWidth = tooltip.offsetWidth;\r\n const tooltipHeight = tooltip.offsetHeight;\r\n \r\n //controlla in che colonna si trova l'appuntamento\r\n const cell = (event.target as HTMLElement).closest('td');\r\n if (!cell) return;\r\n \r\n const cellIndex = cell.cellIndex;\r\n \r\n //calcolo lo spazio disponibile nelle varie direzioni\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n const spaceRight = viewportWidth - appointmentRect.right;\r\n const spaceLeft = appointmentRect.left;\r\n const spaceAbove = appointmentRect.top;\r\n const spaceBelow = viewportHeight - appointmentRect.bottom;\r\n \r\n let left = 0;\r\n let top = 0;\r\n \r\n if (cellIndex === 1) { //per il lunedì lo posiziono a destra\r\n left = appointmentRect.right + 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n } \r\n else if (cellIndex === 7) { //per la domenica lo posiziono a sinistra\r\n left = appointmentRect.left - tooltipWidth - 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n }\r\n else { //per le altre colonne lo posiziono dove è più comodo\r\n if (spaceRight >= tooltipWidth + 10) { //se c'è spazio lo metto a destra\r\n left = appointmentRect.right + 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n }\r\n else if (spaceLeft >= tooltipWidth + 10) { //altrimenti a sinistra\r\n left = appointmentRect.left - tooltipWidth - 10;\r\n top = appointmentRect.top;\r\n tooltip.style.transform = 'none';\r\n }\r\n else { //se non c'è spazio laterale lo metto sopra o sotto\r\n left = appointmentRect.left + (appointmentRect.width / 2);\r\n tooltip.style.transform = 'translateX(-50%)';\r\n \r\n if (spaceAbove >= tooltipHeight + 10) { //sopra se c'è spazio\r\n top = appointmentRect.top - tooltipHeight - 10;\r\n }\r\n else { //sotto\r\n top = appointmentRect.bottom + 10;\r\n }\r\n }\r\n }\r\n \r\n if (left + tooltipWidth > viewportWidth) {\r\n left = viewportWidth - tooltipWidth - 10;\r\n tooltip.style.transform = 'none';\r\n }\r\n \r\n if (left < 0) {\r\n left = 10;\r\n tooltip.style.transform = 'none';\r\n }\r\n \r\n if (top + tooltipHeight > viewportHeight) {\r\n top = viewportHeight - tooltipHeight - 10;\r\n }\r\n \r\n if (top < 0) {\r\n top = 10;\r\n }\r\n \r\n tooltip.style.left = `${left}px`;\r\n tooltip.style.top = `${top}px`;\r\n \r\n //mostrare il tooltip\r\n setTimeout(() => {\r\n tooltip.style.opacity = '1';\r\n }, 10);\r\n }, 0);\r\n }\r\n\r\n hideTooltip() {\r\n this.hoveredAppointment = null;\r\n \r\n this.cdr.detectChanges();\r\n \r\n //nascondo tooltip se rimasto in visualizzazione per errore\r\n const tooltip = document.querySelector('.tooltip') as HTMLElement;\r\n if (tooltip) {\r\n tooltip.style.opacity = '0';\r\n }\r\n }\r\n\r\n // Tab menu\r\n // onActiveItemChange(event: MenuItem) {\r\n // this.activeItem = event;\r\n // this.cdr.markForCheck();\r\n // }\r\n // onActiveItemChange(value: string) {\r\n // this.activeItem = value;\r\n \r\n // // Trova l'item corrispondente per mantenere compatibilità\r\n // const selectedItem = this.items.find(item => \r\n // (item.value && item.value === value) || item.label === value\r\n // );\r\n \r\n // if (selectedItem) {\r\n // this.activeItem = selectedItem;\r\n // if (selectedItem.label) {\r\n // this.tabChanged.emit(selectedItem.label);\r\n // }\r\n // }\r\n \r\n // this.cdr.markForCheck();\r\n // }\r\n onValueChange(value: string | number) {\r\n const stringValue = String(value);\r\n this.activeValue = stringValue;\r\n \r\n // Trova l'item corrispondente per mantenere compatibilità\r\n const selectedItem = this.items.find(item => \r\n (item['value'] && item['value'] === value) || item.label === value\r\n );\r\n \r\n if (selectedItem) {\r\n this.activeItem = selectedItem; // Mantieni per compatibilità con il resto del codice\r\n if (selectedItem.label) {\r\n this.tabChanged.emit(selectedItem.label);\r\n }\r\n }\r\n \r\n this.cdr.markForCheck();\r\n }\r\n\r\n ngOnInit() {\r\n this.primengConfig.setTranslation(PRIMENG_ITALIAN_LOCALE);\r\n if (this.items.length > 0) {\r\n this.activeValue = this.items[0]['value'] || this.items[0].label || ''; // Per il nuovo Tabs\r\n this.activeItem = this.items[0]; // Per compatibilità con il resto del codice\r\n }\r\n this.generateTimeSlots();\r\n this.precomputeAppointments();\r\n }\r\n\r\n\r\n dialogWidth: string = '60%';\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.setDialogWidth();\r\n }\r\n\r\n setDialogWidth() {\r\n this.dialogWidth = window.innerWidth <= 1000 ? '87%' : '60%';\r\n }\r\n\r\n\r\n}\r\n","<div class=\"container\">\r\n <div class=\"calendar-container\">\r\n <div class=\"calendar-header\">\r\n @if (currentView === 'week') {\r\n <lib-third-button\r\n text=\"\"\r\n [icon]=\"faChevronLeft\"\r\n [bgColor]=\"'transparent'\"\r\n [textColor]=\"'#2d519f'\"\r\n [width]=\"'40px'\"\r\n [height]=\"'40px'\"\r\n [border]=\"'none'\"\r\n (onClick)=\"switchToView(CalendarView.Month)\"\r\n >\r\n </lib-third-button>\r\n }\r\n <div>\r\n <h2 class=\"calendar-month\">\r\n {{ viewDate | date : \"MMMM\" | titlecase }}\r\n <span>{{ viewDate | date: \"y\" }}</span>\r\n </h2>\r\n </div>\r\n <div class=\"calendar-controls\">\r\n <fa-icon \r\n [icon]=\"faChevronLeft\"\r\n (click)=\"previous()\"\r\n style=\"margin-right: 10px; color: #2d519f;\"\r\n ></fa-icon>\r\n <lib-third-button\r\n text=\"Oggi\"\r\n [bgColor]=\"'transparent'\"\r\n [textColor]=\"'#2d519f'\"\r\n [width]=\"'80px'\"\r\n [height]=\"'40px'\"\r\n [border]=\"'1px solid #2d519f'\"\r\n (onClick)=\"viewToday()\"\r\n >\r\n </lib-third-button>\r\n <fa-icon \r\n [icon]=\"faChevronRight\"\r\n (click)=\"next()\"\r\n style=\"margin-left: 10px; color: #2d519f;\"\r\n ></fa-icon>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Month view -->\r\n @if (currentView === 'month') {\r\n <table\r\n width=\"100%\"\r\n cellspacing=\"0\"\r\n cellpadding=\"0\"\r\n class=\"calendar-view-month\"\r\n >\r\n <thead>\r\n <tr>\r\n @for (day of weekDays; track $index) {\r\n <th>{{ day }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (week of weeks; track $index) {\r\n <tr>\r\n @for (date of week; track $index) {\r\n <td \r\n [class.today]=\"isToday(date)\" \r\n [ngStyle]=\"{ opacity: isCurrentMonth(date) ? '1' : '0.5' }\"\r\n [ngClass]=\"{'past-day': isPastDate(date), 'clickable-past': isPastDate(date) && hasAppointments(date)}\"\r\n >\r\n <div\r\n (click)=\"selectDate(date)\"\r\n class=\"cell-overlay\"\r\n tabindex=\"0\"\r\n ></div>\r\n <div class=\"date\">\r\n {{ date.getDate() }}\r\n </div>\r\n <div class=\"appointments\">\r\n @if (getFirstAppointmentForDate(date, timeSlots)) {\r\n <div\r\n tabindex=\"0\"\r\n class=\"appointment\"\r\n [ngStyle]=\"{ 'background-color': 'var(--appointment-blue-color)' }\"\r\n >\r\n <span>{{ getFirstAppointmentForDate(date, timeSlots)?.name }}</span>\r\n </div>\r\n \r\n @if (getAppointmentsForDate(date, timeSlots).length > 1) {\r\n <div class=\"more-appointments\">\r\n +{{ getAppointmentsForDate(date, timeSlots).length - 1 }} altr{{ getAppointmentsForDate(date, timeSlots).length - 1 > 1 ? 'i' : 'o' }}\r\n </div>\r\n }\r\n }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n <p-dialog [header]=\"'Lista appuntamenti per il ' + this.selectedDateString\" [modal]=\"true\" [(visible)]=\"visibleList\" [style]=\"{ width: '35%' }\">\r\n <div class=\"appointment-list\">\r\n @for (appointment of selectedAppointments; track $index) {\r\n <div class=\"appointment-item\">\r\n <span class=\"appointment-time\">{{ extractTime(appointment.startDate) }} - {{ extractTime(appointment.endDate) }}</span>\r\n <span class=\"appointment-name\">{{ appointment.name }}</span> \r\n </div>\r\n }\r\n </div>\r\n @if (!isPastDate(selectedDate!)) {\r\n <div class=\"button-container\">\r\n <lib-third-button\r\n text=\"Aggiungi nuovo\"\r\n [bgColor]=\"'var(--primary-blue-color)'\"\r\n [textColor]=\"'white'\"\r\n [width]=\"'200px'\"\r\n [height]=\"'40px'\"\r\n [fontWeight]=\"'600'\"\r\n [border]=\"'1px solid var(--primary-blue-color)'\"\r\n [icon]=\"faCirclePlus\"\r\n (onClick)=\"toggleNewAppointment()\"\r\n >\r\n </lib-third-button>\r\n </div>\r\n }\r\n </p-dialog>\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <!-- Week view -->\r\n @if (currentView === 'week') {\r\n <table\r\n width=\"100%\"\r\n height=\"100%\"\r\n cellspacing=\"0\"\r\n cellpadding=\"0\"\r\n class=\"calendar-view-week\"\r\n >\r\n <thead>\r\n <tr>\r\n <th></th>\r\n @for (day of weekDays; track $index) {\r\n <th>{{ day }} {{ monthDays[$index].getDate() }}</th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody class=\"contenitore-calendario\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <tr>\r\n <td [width]=\"10\" class=\"calendar-slot-cell\">\r\n <span>{{ timeSlot }}</span>\r\n </td>\r\n @for (day of weekDays; track $index) {\r\n <td [class.today]=\"isToday(monthDays[$index])\" \r\n [ngClass]=\"\r\n {'blink': selectedDate && isSameDate(monthDays[$index], selectedDate), \r\n 'past-day': isPastDate(monthDays[$index]), \r\n 'clickable-past': isPastDate(monthDays[$index]) && hasAppointments(monthDays[$index]),\r\n 'disabled': isPastTime(monthDays[$index], timeSlot) && !isTimeSlotOccupied(monthDays[$index], timeSlot),\r\n 'occupied': isTimeSlotOccupied(monthDays[$index], timeSlot)\r\n }\"\r\n >\r\n <div \r\n class=\"cell-overlay\"\r\n style=\"z-index: 0;\"\r\n tabindex=\"0\"\r\n [class.occupied]=\"isTimeSlotOccupied(monthDays[$index], timeSlot)\"\r\n (click)=\"!isTimeSlotOccupied(monthDays[$index], timeSlot) && selectDate(monthDays[$index], timeSlot)\"\r\n ></div>\r\n @for (appointment of getAppointmentsForDataTime(monthDays[$index], timeSlot); track $index) {\r\n @if (extractTime(appointment.startDate) === timeSlot) {\r\n <div\r\n tabindex=\"0\"\r\n class=\"appointment\"\r\n [ngStyle]=\"getAppointmentHeightStyle(appointment)\"\r\n (mouseenter)=\"showTooltip(appointment, $event)\"\r\n (mouseleave)=\"hideTooltip()\"\r\n >\r\n <span>{{ appointment.name }}</span>\r\n </div>\r\n @if (hoveredAppointment === appointment) {\r\n <div class=\"tooltip\">\r\n <strong>{{ appointment.name }}</strong>\r\n <br>\r\n <span>Inizio: <span style=\"font-weight: 600;\">{{ extractTime(appointment.startDate) }}</span></span>\r\n <br>\r\n <span>Fine: <span style=\"font-weight: 600;\">{{ extractTime(appointment.endDate) }}</span></span>\r\n <br>\r\n <span>Creato il <span style=\"font-weight: 600;\">{{ appointment.createDate | date: 'dd/MM/yyyy HH:mm' }}</span> da <span style=\"font-weight: 600;\">{{ appointment.accountProfileId }}</span></span>\r\n </div>\r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n <p-dialog [header]=\"'Nuova Prestazione per ' + this.selectedDateString + (this.selectedStartTime !== undefined || '00:00' ? ' alle ore ' + this.selectedStartTime : '')\" [modal]=\"true\" [(visible)]=\"newAppointment\" [style]=\"{ width: dialogWidth, height: '75%' }\" (onHide)=\"onDialogHide()\">\r\n <!-- <p-tabMenu \r\n [model]=\"items\"\r\n [activeItem]=\"activeItem\" \r\n (activeItemChange)=\"onActiveItemChange($event)\" \r\n /> -->\r\n <p-tabs\r\n [value]=\"activeValue || ''\"\r\n (valueChange)=\"onValueChange($event)\"\r\n >\r\n <p-tablist>\r\n @for (item of items; track $index) {\r\n <p-tab\r\n [value]=\"item['value'] || item.label || ''\"\r\n [disabled]=\"item.disabled\"\r\n class=\"flex items-center !gap-2 text-inherit\"\r\n >\r\n @if (item.icon) {\r\n <fa-icon [icon]=\"item.icon\"></fa-icon>\r\n }\r\n <span>{{ item.label }}</span>\r\n </p-tab>\r\n }\r\n </p-tablist>\r\n </p-tabs>\r\n <div class=\"dialog-container\">\r\n <div class=\"list-add-appointment\">\r\n @if (activeItem?.label === 'Appuntamento') {\r\n <div class=\"appointment-list-new-appointment\">\r\n @if (selectedAppointments.length !== 0) {\r\n <div class=\"appointment-title\">Appuntamenti per la giornata</div>\r\n }\r\n @if (selectedAppointments.length === 0) {\r\n <div class=\"appointment-none\">Non ci sono appuntamenti fissati</div>\r\n } @else {\r\n @for (appointment of selectedAppointments; track $index) {\r\n <div class=\"appointment-item\">\r\n <span class=\"appointment-time\">{{ extractTime(appointment.startDate) }} - {{ extractTime(appointment.endDate) }}</span>\r\n <span class=\"appointment-name\">{{ appointment.name }}</span> \r\n </div>\r\n }\r\n }\r\n </div>\r\n <div class=\"add-container\">\r\n <ng-content select=\".custom-input\"></ng-content>\r\n </div>\r\n } @else {\r\n <div class=\"add-prescription\">\r\n <ng-content select=\".custom-prescription\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"save-button-container\">\r\n <ng-content select=\".save-button\"></ng-content>\r\n </div>\r\n </div>\r\n </p-dialog>\r\n </tbody>\r\n </table>\r\n }\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@Component({\r\n selector: 'lib-message',\r\n imports: [CommonModule, FontAwesomeModule],\r\n templateUrl: './message.html',\r\n styleUrl: './message.css'\r\n})\r\nexport class Message {\r\n\r\n @Input() text: string = 'Messaggio di test';\r\n @Input() date: string = '12/03/2025 10:00';\r\n @Input() from: string = 'Test';\r\n @Input() bgColor: string = 'gainsboro';\r\n @Input() textColor: string = 'black';\r\n @Input() fontWeight: string = 'normal';\r\n @Input() width: string = '335px';\r\n @Input() minHeight: string = '100px'\r\n @Input() borderRadius: string = '5px'\r\n @Input() border: string = ''\r\n @Input() padding: string = '1% 2%'\r\n @Input() viewed?: any;\r\n\r\n\r\n}\r\n","<!-- <button\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'width': width,\r\n 'height': height,\r\n 'border-radius': borderRadius,\r\n 'border': border\r\n }\"\r\n (click)=\"click()\"\r\n>\r\n @if(position === 'left' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-right: 10px;\"></fa-icon>\r\n }\r\n {{ text }}\r\n @if(position === 'right' && icon) {\r\n <fa-icon [icon]=\"icon\" style=\"margin-left: 10px;\"></fa-icon>\r\n }\r\n</button> -->\r\n\r\n<div\r\n [ngStyle]=\"{\r\n 'background-color': bgColor,\r\n 'text': text,\r\n 'color': textColor,\r\n 'font-weight': fontWeight,\r\n 'width': width,\r\n 'min-height': minHeight,\r\n 'border-radius': borderRadius,\r\n 'border': border,\r\n 'padding': padding, \r\n }\"\r\n style=\"display: flex; flex-direction: column; justify-content: space-between\"\r\n> \r\n<div>\r\n <b>{{ from }}</b>\r\n <br>\r\n {{ text }}\r\n <br>\r\n</div>\r\n<div style=\"justify-content: end; display: flex;\">\r\n {{date}} <fa-icon [icon]=\"viewed\" style=\"margin-left: 10px;\"></fa-icon>\r\n</div>\r\n</div>","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_CONFIG = new InjectionToken('API_CONFIG');","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../DTOSurvey/Response/IDictionaryQuestionResponse';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryStepResponse } from '../DTOSurvey/Response/IDictionaryStepResponse';\r\nimport { IPatientSurveyResponse } from '../DTOSurvey/Response/IPatientSurveyResponse';\r\nimport { IPatientSurveyRequest } from '../DTOSurvey/Request/IPatientSurveyRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\nimport { ISurveyGroupResponse } from '../DTOSurvey/Response/ISurveyGroupResponse';\r\nimport { ISurveyBodyPainAnswerResponse } from '../DTOSurvey/Response/ISurveyBodyPainAnswerResponse';\r\nimport { IBodyPartQuestionResponse } from '../DTOSurvey/Response/IBodyPartQuestionResponse';\r\nimport { IDictionaryBodyPartsResponse } from '../DTOSurvey/Response/IDictionaryBodyPartsResponse';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSurveyService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Survey/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n\r\n getQuestionByParameters(typeSurvey: number | \"\", stepNumber: number | \"\"): Observable<IDictionaryQuestionResponse[]> {\r\n const params = new HttpParams().set('typeSurvey', typeSurvey).set('stepNumber', stepNumber);\r\n return this.http.get<IDictionaryQuestionResponse[]>(`${this.endpoint}Question`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getQuestionByTypeSurvey(typeSurvey: number): Observable<IDictionaryQuestionResponse[]> {\r\n const params = new HttpParams().set('typeSurvey', typeSurvey);\r\n return this.http.get<IDictionaryQuestionResponse[]>(`${this.endpoint}Question`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getQuestionByQuestionId(questionId: number): Observable<IDictionaryQuestionResponse[]> {\r\n const params = new HttpParams().set('questionId', questionId);\r\n return this.http.get<IDictionaryQuestionResponse[]>(`${this.endpoint}Question`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getStepByTypeSurvey(typeSurvey: number): Observable<IDictionaryStepResponse[]> {\r\n const params = new HttpParams().set('typeSurvey', typeSurvey);\r\n return this.http.get<IDictionaryStepResponse[]>(`${this.endpoint}Step`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getStepByStepNumber(stepNumber: number): Observable<IDictionaryStepResponse[]> {\r\n const params = new HttpParams().set('stepNumber', stepNumber);\r\n return this.http.get<IDictionaryStepResponse[]>(`${this.endpoint}Step`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveys(): Observable<IPatientSurveyResponse[]> {\r\n return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getSurvey(patientId: string | \"\", surveyType: number | \"\", surveyId: string | \"\", lastSurvey: false): Observable<IPatientSurveyResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('surveyType', surveyType).set('surveyId', surveyId).set('lastSurvey', lastSurvey);\r\n return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyById(surveyId: string): Observable<IPatientSurveyResponse> {\r\n const params = new HttpParams().set('surveyId', surveyId);\r\n return this.http.get<IPatientSurveyResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n getLastSurvey(patientId: string, surveyType: number, lastSurvey: true): Observable<IPatientSurveyResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('surveyType', surveyType).set('lastSurvey', lastSurvey);\r\n return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n params: params,\r\n });\r\n }\r\n\r\n // getSurveyByPatientId(patientId: string): Observable<IPatientSurveyResponse[]> {\r\n // const params = new HttpParams().set('patientId', patientId);\r\n // return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n\r\n // getSurveyBySurveyType(surveyType: number): Observable<IPatientSurveyResponse[]> {\r\n // const params = new HttpParams().set('surveyType', surveyType);\r\n // return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n // getLastSurvey(lastSurvey: bool): Observable<IPatientSurveyResponse[]> {\r\n // const params = new HttpParams().set('lastSurvey', lastSurvey);\r\n // return this.http.get<IPatientSurveyResponse[]>(`${this.endpoint}Survey`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n getSurveyGroupByParameters(id: string, patientId: string): Observable<ISurveyGroupResponse> {\r\n const params = new HttpParams().set('id', id).set('patientId', patientId);\r\n return this.http.get<ISurveyGroupResponse>(`${this.endpoint}SurveyGroup`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyGroupById(id: string): Observable<ISurveyGroupResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ISurveyGroupResponse>(`${this.endpoint}SurveyGroup`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyGroupByPatient(patientId: string): Observable<ISurveyGroupResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<ISurveyGroupResponse[]>(`${this.endpoint}SurveyGroup`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyBodyPainAnswer(): Observable<ISurveyBodyPainAnswerResponse[]> {\r\n return this.http.get<ISurveyBodyPainAnswerResponse[]>(`${this.endpoint}SurveyBodyPainAnswer`);\r\n }\r\n\r\n getSurveyBodyPainAnswerByParameters(id: string, surveyId: string): Observable<ISurveyBodyPainAnswerResponse> {\r\n const params = new HttpParams().set('id', id).set('surveyId', surveyId);\r\n return this.http.get<ISurveyBodyPainAnswerResponse>(`${this.endpoint}SurveyBodyPainAnswer`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyBodyPainAnswerById(id: string): Observable<ISurveyBodyPainAnswerResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ISurveyBodyPainAnswerResponse>(`${this.endpoint}SurveyBodyPainAnswer`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSurveyBodyPainAnswerBySurveyId(surveyId: string): Observable<ISurveyBodyPainAnswerResponse[]> {\r\n const params = new HttpParams().set('surveyId', surveyId);\r\n return this.http.get<ISurveyBodyPainAnswerResponse[]>(`${this.endpoint}SurveyBodyPainAnswer`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getBodyPartQuestion(): Observable<IBodyPartQuestionResponse[]> {\r\n return this.http.get<IBodyPartQuestionResponse[]>(`${this.endpoint}BodyPartQuestion`);\r\n }\r\n\r\n getBodyPartQuestionById(id: string): Observable<IBodyPartQuestionResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IBodyPartQuestionResponse>(`${this.endpoint}BodyPartQuestion`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getBodyPart(): Observable<IDictionaryBodyPartsResponse[]> {\r\n return this.http.get<IDictionaryBodyPartsResponse[]>(`${this.endpoint}BodyPart`);\r\n }\r\n\r\n getBodyPartById(id: string): Observable<IDictionaryBodyPartsResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryBodyPartsResponse>(`${this.endpoint}BodyPart`, {\r\n params: params,\r\n });\r\n }\r\n \r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postSurvey(patientSurveyRequest: IPatientSurveyRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}`, patientSurveyRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n}\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\nimport { IQuestionAnswer } from '../survey';\r\nimport { IPatientSurveyResponse } from '../../microservices/survey/DTOSurvey/Response/IPatientSurveyResponse';\r\nimport { ApiSurveyService } from '../../microservices/survey/serviceSurvey/survey';\r\n\r\n@Component({\r\n selector: 'lib-survey-radio',\r\n imports: [],\r\n templateUrl: './survey-radio.html',\r\n styleUrl: './survey-radio.css'\r\n})\r\nexport class SurveyRadio {\r\n\r\n apiSurvey = inject(ApiSurveyService)\r\n\r\n @Input() question: IDictionaryQuestionResponse | undefined \r\n @Input() typeSurvey: number = 0; \r\n @Input() patientSurvey: string = \"\";\r\n @Input() patientId: string | undefined;\r\n @Output() questionAnswer = new EventEmitter<IQuestionAnswer>()\r\n\r\n filteredSurvey: IPatientSurveyResponse = {} as IPatientSurveyResponse\r\n\r\n //variabile per l'emitter, composta da id domanda e id risposta\r\n questionAnswerObject: IQuestionAnswer = {} as IQuestionAnswer;\r\n\r\n ngOnInit(){\r\n if (this.patientSurvey != null && this.patientSurvey != \"\"){\r\n this.searchSurvey(this.patientSurvey);\r\n }\r\n }\r\n\r\n selectedValue(idQuestion: string | undefined, idAnswer: string | undefined){\r\n this.questionAnswerObject.idQuestion = idQuestion,\r\n this.questionAnswerObject.idAnswer = idAnswer,\r\n this.questionAnswerObject.idTypeSurvey = this.typeSurvey,\r\n this.questionAnswer.emit(this.questionAnswerObject)\r\n }\r\n\r\n searchSurvey(surveyId: string){\r\n // console.log(\"res2: \", this.filteredSurvey)\r\n // console.log(\"params2: \", surveyId)\r\n this.apiSurvey.getSurveyById(surveyId).subscribe((res: IPatientSurveyResponse) => {\r\n // console.log(\"res: \", this.filteredSurvey)\r\n // console.log(\"params: \", surveyId)\r\n this.filteredSurvey = res\r\n }) \r\n }\r\n\r\n // getMatchingAnswer(surveyId: string, answerId: string): boolean {\r\n // // console.log(\"resultArray: \", surveyId + answerId)\r\n // // this.question?.answers.forEach(answer => {\r\n // // if (answer.id == answerId){\r\n // // return true\r\n // // }\r\n // // return false\r\n // // });\r\n // return this.question!.answers.some((item: any) => item.id === answerId);\r\n // }\r\n\r\n\r\n}\r\n","<div class=\"survey-component group-radio\">\r\n <div class=\"group-radio-description\">\r\n <label>{{question?.text}}</label>\r\n </div>\r\n <div class=\"group-radio-radioList\"> \r\n @for (answer of question?.answers; track answer.id) {\r\n @if(patientSurvey != \"\"){\r\n <!-- @if (getMatchingAnswer(patientSurvey, answer.id)) {\r\n <input type=\"radio\" checked [name]=\"question?.text\" class=\"radio-value survey-control\" (change)=\"selectedValue(question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label> \r\n } @else {\r\n <input type=\"radio\" [name]=\"question?.text\" class=\"radio-value survey-control\" (change)=\"selectedValue(question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label> \r\n } -->\r\n } @else {\r\n <input type=\"radio\" [name]=\"question?.text\" class=\"radio-value survey-control\" (change)=\"selectedValue(question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label> \r\n }\r\n }\r\n </div>\r\n</div>","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-survey-text',\r\n imports: [],\r\n templateUrl: './survey-text.html',\r\n styleUrl: './survey-text.css'\r\n})\r\nexport class SurveyText {\r\n\r\n}\r\n","<p>survey-text works!</p>\r\n","import { Component, Input } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\n\r\n@Component({\r\n selector: 'lib-survey-label',\r\n imports: [],\r\n templateUrl: './survey-label.html',\r\n styleUrl: './survey-label.css'\r\n})\r\nexport class SurveyLabel {\r\n\r\n @Input() question: IDictionaryQuestionResponse | undefined \r\n\r\n}\r\n","<div class=\"label\">\r\n <label>{{question?.text}}</label>\r\n</div>","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { IDictionaryQuestionResponse } from '../../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\nimport { IQuestionAnswer } from '../survey';\r\nimport { IPatientSurveyResponse } from '../../microservices/survey/DTOSurvey/Response/IPatientSurveyResponse';\r\nimport { ApiSurveyService } from '../../microservices/survey/serviceSurvey/survey';\r\n\r\n@Component({\r\n selector: 'lib-survey-valuebox',\r\n imports: [],\r\n templateUrl: './survey-valuebox.html',\r\n styleUrl: './survey-valuebox.css'\r\n})\r\nexport class SurveyValuebox {\r\n\r\n apiSurvey = inject(ApiSurveyService);\r\n\r\n @Input() question: IDictionaryQuestionResponse | undefined \r\n @Input() typeSurvey: number = 0; \r\n @Input() indexQuestion: number = 0;\r\n @Input() patientSurvey: string = '';\r\n @Input() patientId: string | undefined;\r\n @Output() sumOutput = new EventEmitter<any>();\r\n @Output() questionAnswer = new EventEmitter<IQuestionAnswer>()\r\n\r\n filteredSurvey: IPatientSurveyResponse = {} as IPatientSurveyResponse;\r\n\r\n sum: number = 0\r\n //variabile che indica che sarà un oggetto in cui le chiavi saranno numeri, i valori associati ad ogni chiave sara number o stringa,\r\n //quindi ogni key avrà cosi un suo valore\r\n selectedValues: { [key: number]: number | string } = {};\r\n\r\n //variabile per l'emitter, composta da id domanda e id risposta\r\n questionAnswerObject: IQuestionAnswer = {} as IQuestionAnswer;\r\n\r\n sumValue(valueSelected: number, groupIndex: number, idQuestion: string | undefined, idAnswer: string | undefined){\r\n const radioGroup = document.querySelectorAll('input[type=\"radio\"].radio-value') as NodeListOf<HTMLInputElement>;\r\n\r\n this.sum = 0; // Resetta la somma\r\n radioGroup.forEach((radio: HTMLInputElement) => {\r\n if (radio.checked) {\r\n this.sum += parseInt(radio.value);\r\n }\r\n });\r\n\r\n this.selectedValues[groupIndex] = valueSelected;\r\n this.sumOutput.emit(this.sum);\r\n this.questionAnswerObject.idQuestion = idQuestion,\r\n this.questionAnswerObject.idAnswer = idAnswer,\r\n this.questionAnswerObject.idTypeSurvey = this.typeSurvey,\r\n this.questionAnswer.emit(this.questionAnswerObject)\r\n }\r\n\r\n ngOnInit() {\r\n if (this.patientSurvey != null && this.patientSurvey != '') {\r\n this.searchSurvey(this.patientSurvey);\r\n }\r\n }\r\n\r\n searchSurvey(surveyId: string) {\r\n this.apiSurvey.getSurveyById(surveyId).subscribe((res: IPatientSurveyResponse) => {\r\n this.filteredSurvey = res;\r\n // console.log('Dati ricevuti:', res);\r\n this.initializeSelectedValues();\r\n })\r\n }\r\n\r\n getMatchingAnswer(answerId: string | undefined): boolean {\r\n if (!this.filteredSurvey || !answerId || Object.keys(this.filteredSurvey).length === 0) {\r\n return false;\r\n };\r\n\r\n if (this.filteredSurvey.results && Array.isArray(this.filteredSurvey.results)) {\r\n return this.filteredSurvey.results.some((result: any) => {\r\n if (result.question && result.question.id === this.question?.id) {\r\n return result.answer && result.answer.id === answerId;\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n initializeSelectedValues() {\r\n // console.log('=== INIZIO initializeSelectedValues ===');\r\n \r\n if (this.filteredSurvey && this.filteredSurvey.results) {\r\n this.filteredSurvey.results.forEach((result: any, index: number) => {\r\n // console.log(`--- Result ${index} ---`);\r\n // console.log('result.question.id:', result.question?.id);\r\n // console.log('this.question?.id:', this.question?.id);\r\n \r\n if (result.question && result.question.id === this.question?.id) {\r\n // console.log('✅ DOMANDA TROVATA!');\r\n // console.log('result.value:', result.value);\r\n \r\n // Il valore è direttamente in result.value, non in result.answer.value\r\n if (result.value !== undefined && result.value !== null) {\r\n this.selectedValues[this.indexQuestion] = result.value;\r\n // console.log('✅ Valore inizializzato:', this.selectedValues[this.indexQuestion]);\r\n } else {\r\n console.log('❌ result.value è undefined o null');\r\n }\r\n }\r\n });\r\n }\r\n \r\n // console.log('selectedValues finale:', this.selectedValues);\r\n }\r\n\r\n\r\n}\r\n","<p>survey-valuebox works!</p>\r\n<!-- <div class=\"survey-container\">\r\n <div class=\"survey-question\">\r\n {{question?.text}}\r\n </div>\r\n <div class=\"survey-answer-container group-radio\">\r\n <div class=\"survey-answer-list\">\r\n @for (answer of question?.answers; track $index) {\r\n <div class=\"survey-answer-group\">\r\n <div class=\"survey-answer\">\r\n <input type=\"radio\" [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?.id)\">\r\n <label>{{answer.text}}</label>\r\n </div>\r\n </div>\r\n } \r\n </div>\r\n <div class=\"survey-answer-value\">\r\n <span>{{ selectedValues[indexQuestion] !== undefined ? selectedValues[indexQuestion] : '--' }}</span>\r\n </div> \r\n </div>\r\n</div> -->\r\n\r\n<div class=\"survey-container\">\r\n <div class=\"survey-question\">\r\n {{ question?.text }}\r\n </div>\r\n <div class=\"survey-answer-container group-radio\">\r\n <div class=\"survey-answer-list\">\r\n @for (answer of question?.answers; track answer.id) {\r\n <div class=\"survey-answer-group\">\r\n <div class=\"survey-answer\">\r\n @if (patientSurvey && patientSurvey !== '') {\r\n @if (getMatchingAnswer(answer.id)) {\r\n <!-- <input type=\"radio\" checked [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?.id)\"> -->\r\n <label>{{ answer.text }}</label>\r\n } @else {\r\n <!-- <input type=\"radio\" [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?. id)\"> -->\r\n <label>{{ answer.text }}</label>\r\n }\r\n } @else {\r\n <!-- <input type=\"radio\" [name]=\"question?.text\" value=\"{{answer.value}}\" class=\"radio-value survey-control\" (change)=\"sumValue(answer.value, indexQuestion, question?.id, answer?.id)\"> -->\r\n <label>{{ answer.text }}</label>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"survey-answer-value\">\r\n <span>{{ selectedValues[indexQuestion] !== undefined ? selectedValues[indexQuestion] : '--' }}</span>\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { SurveyRadio } from './survey-radio/survey-radio';\r\nimport { SurveyText } from './survey-text/survey-text';\r\nimport { SurveyLabel } from './survey-label/survey-label';\r\nimport { SurveyValuebox } from './survey-valuebox/survey-valuebox';\r\nimport { IDictionaryQuestionResponse } from '../microservices/survey/DTOSurvey/Response/IDictionaryQuestionResponse';\r\n\r\nexport interface IQuestionAnswer {\r\n idQuestion: string | undefined;\r\n idAnswer: string | undefined;\r\n idTypeSurvey: number\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'lib-survey',\r\n imports: [CommonModule, SurveyRadio, SurveyText, SurveyLabel, SurveyValuebox],\r\n templateUrl: './survey.html',\r\n styleUrl: './survey.css'\r\n})\r\nexport class Survey {\r\n\r\n @Input() questionList: IDictionaryQuestionResponse[] = [];\r\n @Input() typeSurvey: number = 0;\r\n @Input() patientSurvey: string = \"\";\r\n @Output() sumOutput = new EventEmitter<any>();\r\n @Output() questionAnswer = new EventEmitter<IQuestionAnswer>()\r\n \r\n\r\n ngOnInit(){\r\n }\r\n\r\n onSumOutputReceived(sum: any) {\r\n this.sumOutput.emit(sum);\r\n }\r\n\r\n onQuestionAnswerReceived(object: IQuestionAnswer) {\r\n this.questionAnswer.emit(object);\r\n }\r\n\r\n\r\n}\r\n","<div class=\"survey-container\">\r\n @for (question of questionList; track $index) {\r\n <div [ngStyle]=\"{backgroundColor: $index % 2 === 0 ? '#F1F6FE' : 'white'}\">\r\n @switch (question.typeQuestion.id) {\r\n @case (1){\r\n\r\n }\r\n @case (2){\r\n <lib-survey-text></lib-survey-text>\r\n }\r\n @case (3){\r\n \r\n }\r\n @case (4){\r\n \r\n }\r\n @case (5){\r\n <lib-survey-label [question]=\"question\" style=\"width: 100%; height: 3rem; display: flex;\"></lib-survey-label>\r\n }\r\n @case (6){\r\n \r\n }\r\n @case (7){ \r\n <lib-survey-radio [question]=\"question\" [typeSurvey]=\"typeSurvey\" [patientSurvey]=\"patientSurvey\" (questionAnswer)=\"onQuestionAnswerReceived($event)\" style=\"width: 100%; height: 3rem; display: flex;\"></lib-survey-radio>\r\n }\r\n @case (8){\r\n \r\n }\r\n @case (9){\r\n \r\n }\r\n @case (10){\r\n <lib-survey-valuebox [question]=\"question\" [typeSurvey]=\"typeSurvey\" [indexQuestion]=\"$index\" (sumOutput)=\"onSumOutputReceived($event)\" (questionAnswer)=\"onQuestionAnswerReceived($event)\"></lib-survey-valuebox>\r\n \r\n }\r\n }\r\n </div>\r\n } \r\n</div>\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport * as AWS from 'aws-sdk';\r\nimport { IMinio } from './config.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Minio {\r\n \r\n private s3: AWS.S3;\r\n bucketName! : string;\r\n accessKeyId! : string;\r\n secretAccessKey! : string;\r\n endpoint! : string;\r\n\r\n constructor(@Inject('MINIO_CONFIG') private config: IMinio) {\r\n\r\n this.bucketName = config.bucketName;\r\n this.accessKeyId = config.accessKeyId;\r\n this.secretAccessKey = config.secretAccessKey;\r\n this.endpoint = config.endpoint;\r\n\r\n // Configurazione delle credenziali di minio\r\n AWS.config.update({\r\n accessKeyId: this.accessKeyId,\r\n secretAccessKey: this.secretAccessKey,\r\n region: 'us-east-1', //regione di default, aws sdk gli serve\r\n signatureVersion: 'v4' // versione di firma v4, serve a minio\r\n });\r\n\r\n // Configura l'endpoint di minio\r\n this.s3 = new AWS.S3({\r\n endpoint: new AWS.Endpoint(this.endpoint),\r\n s3ForcePathStyle: true,\r\n signatureVersion: 'v4'\r\n });\r\n }\r\n\r\n // Funzione per caricare un file su minio\r\n uploadFile(fileName: string, fileContent: any): Promise<AWS.S3.ManagedUpload.SendData> {\r\n const params = {\r\n Bucket: this.bucketName, // Nome del tuo bucket minio\r\n Key: fileName, // Nome del file \r\n Body: fileContent, // Contenuto del file\r\n ContentType: 'application/octet-stream' // Tipo di contenuto\r\n };\r\n\r\n // Carica il file su minio\r\n return this.s3.upload(params).promise();\r\n }\r\n\r\n // Funzione per ottenere un oggetto da minio\r\n getObject(fileName: string): Promise<AWS.S3.GetObjectOutput> {\r\n const params = {\r\n Bucket: this.bucketName,\r\n Key: fileName\r\n };\r\n\r\n // Ottieni il file da MinIO\r\n return this.s3.getObject(params).promise();\r\n }\r\n\r\n // metodo per recuperare tutti gli oggetti in una cartella\r\n async getAllObjectsInFolder(folderPath: string): Promise<Map<string, AWS.S3.GetObjectOutput>> {\r\n const folder = folderPath.endsWith('/') ? folderPath : `${folderPath}/`;\r\n \r\n const listParams = {\r\n Bucket: this.bucketName,\r\n Prefix: folder\r\n };\r\n \r\n try {\r\n // Lista tutti gli oggetti nella cartella\r\n const listedObjects = await this.s3.listObjects(listParams).promise();\r\n \r\n if (!listedObjects.Contents || listedObjects.Contents.length === 0) {\r\n return new Map();\r\n }\r\n \r\n // Mappa per memorizzare i risultati\r\n const objectsMap = new Map<string, AWS.S3.GetObjectOutput>();\r\n \r\n // Recupera ogni oggetto\r\n const fetchPromises = listedObjects.Contents.map(async (item: any) => {\r\n if (item.Key) {\r\n const objectData = await this.getObject(item.Key);\r\n objectsMap.set(item.Key, objectData);\r\n }\r\n });\r\n \r\n // Attendere il completamento di tutte le richieste\r\n await Promise.all(fetchPromises);\r\n \r\n return objectsMap;\r\n } catch (error) {\r\n console.error('Errore nel recupero degli oggetti dalla cartella:', error);\r\n throw error;\r\n }\r\n }\r\n\r\n // Funzione per eliminare un oggetto da minio\r\n deleteObject(bucketName: string, fileName: string): Promise<AWS.S3.DeleteObjectOutput> {\r\n const params = {\r\n Bucket: bucketName,\r\n Key: fileName\r\n };\r\n\r\n // Elimina il file da minio\r\n return this.s3.deleteObject(params).promise();\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatDate {\r\n \r\n //funzione per convertire date in giorno/mese/anno\r\n convertToISOFormat(date: Date): string {\r\n if (!date) return 'Non disponibile';\r\n let newDate = new Date(date);\r\n // prendo il giorno, mese e anno\r\n const day = newDate.getDate();\r\n // il mese inizia da 0, quindi aggiungiamo 1, come dopo per il giorno, è una configurazione\r\n //di alcune api per il convert\r\n const month = newDate.getMonth() + 1;\r\n const year = newDate.getFullYear();\r\n const hour = newDate.getHours();\r\n const minute = newDate.getMinutes();\r\n const second = newDate.getSeconds();\r\n \r\n // aggiungo uno zero iniziale se il valore è minore di 10\r\n const formattedDay = day < 10 ? `0${day}` : `${day}`;\r\n const formattedMonth = month < 10 ? `0${month}` : `${month}`;\r\n const formattedHour = hour < 10 ? `0${hour}` : `${hour}`;\r\n const formattedMinute = minute < 10 ? `0${minute}` : `${minute}`;\r\n const formattedSecond = second < 10 ? `0${second}` : `${second}`;\r\n\r\n //aggiungo il timezone offset\r\n const timezoneOffset = -newDate.getTimezoneOffset();\r\n const offsetHours = Math.floor(Math.abs(timezoneOffset) / 60);\r\n const offsetMinutes = Math.abs(timezoneOffset) % 60;\r\n const offsetSign = timezoneOffset >= 0 ? '+' : '-';\r\n const formattedOffset = `${offsetSign}${offsetHours.toString().padStart(2, '0')}:${offsetMinutes.toString().padStart(2, '0')}`;\r\n\r\n let dataToISO = `${year}-${formattedMonth}-${formattedDay}T${formattedHour}:${formattedMinute}:${formattedSecond}${formattedOffset}`;\r\n\r\n return dataToISO\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IAccountResponse } from '../DTOAccount/Response/IAccountResponse';\r\nimport { IAccountRequest } from '../DTOAccount/Request/IAccountRequest';\r\nimport { ILoginRequest } from '../DTOAccount/Request/ILoginRequest';\r\nimport { ILoginResponse } from '../DTOAccount/Response/ILoginResponse';\r\nimport { INewTokenRequest } from '../DTOAccount/Request/INewTokenRequest';\r\nimport { IAuthenticationResponse } from '../DTOAccount/Response/IAuthenticationResponse';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\nimport { IAccountCredentialDTO } from '../DTOAccount/IAccountCredentialDTO';\r\n\r\n@Injectable()\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiAccountService {\r\n\r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Account/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca degli account in base al parametro\r\n getAccounts(): Observable<IAccountResponse[]> {\r\n return this.http.get<IAccountResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getAccountsByParameters(id: string | \"\", fiscalCode: string | \"\", username: string | \"\"): Observable<IAccountResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('fiscalCode', fiscalCode).set('username', username);\r\n // return this.http.get<IAccountResponse[]>(`${this.endpoint}`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getAccountById(id: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAccountByFiscalCode(fiscalCode: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('fiscalCode', fiscalCode);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAccountByUsername(username: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('username', username);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAccountByAccountProfileId(accountProfileId: string): Observable<IAccountResponse> {\r\n const params = new HttpParams().set('accountProfileId', accountProfileId);\r\n return this.http.get<IAccountResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCredentialByAccountId(accountId: string): Observable<IAccountCredentialDTO> {\r\n const params = new HttpParams().set('accountId', accountId);\r\n return this.http.get<IAccountCredentialDTO>(`${this.endpoint}Credential`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica dell'account\r\n postAccount(accountRequest: IAccountRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, accountRequest);\r\n }\r\n\r\n //FUNZIONE LOGIN\r\n postLogin(loginRequest: ILoginRequest): Observable<string | ILoginResponse> {\r\n const credentials = btoa(`apilogin:apipassword`); // Crea il token Basic Authentication\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.post<string | ILoginResponse>(`${this.endpoint}Login`, loginRequest, { headers: headers });\r\n }\r\n\r\n postLoginLdap(loginRequest: ILoginRequest): Observable<string | ILoginResponse> {\r\n const credentials = btoa(`apilogin:apipassword`); // Crea il token Basic Authentication\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.post<string | ILoginResponse>(`${this.endpoint}LoginLDAP`, loginRequest, { headers: headers });\r\n }\r\n\r\n postRefreshToken(refreshToken: INewTokenRequest): Observable<IAuthenticationResponse> {\r\n const credentials = btoa(`apilogin:apipassword`);\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.post<IAuthenticationResponse>(`${this.endpoint}RefreshToken`, refreshToken, { headers: headers });\r\n }\r\n\r\n postCredential(accountCredentialDTO: IAccountCredentialDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Credential`, accountCredentialDTO);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //funzione per settare il login dell'account\r\n setLoginAccount(id: string): Observable<boolean>{\r\n const params = new HttpParams().set('id', id); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deleteAccount(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}/${id}`);\r\n }\r\n \r\n}\r\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryPermission } from '../DTOAccount/Dictionary/IDictionaryPermission';\r\nimport { IDictionaryProfileResponse } from '../DTOAccount/Response/IDictionaryProfileResponse';\r\nimport { IDictionaryTypeContact } from '../DTOAccount/Dictionary/IDictionaryTypeContact';\r\nimport { IDictionaryProfileRequest } from '../DTOAccount/Request/IDictionaryProfileRequest';\r\nimport { IDictionarySystemDTO } from '../DTOAccount/Dictionary/IDictionarySystemDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\nimport { IDictionaryLdap } from '../DTOAccount/Dictionary/IDictionaryLdap';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiAccountDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Account/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei permessi in base al parametro\r\n getPermissions(): Observable<IDictionaryPermission[]> {\r\n return this.http.get<IDictionaryPermission[]>(`${this.endpoint}Dictionary/Permission`);\r\n }\r\n \r\n getPermissionById(id: string): Observable<IDictionaryPermission> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryPermission>(`${this.endpoint}Dictionary/Permission`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPermissionByCode(code: string): Observable<IDictionaryPermission> {\r\n const params = new HttpParams().set('code', code);\r\n return this.http.get<IDictionaryPermission>(`${this.endpoint}Dictionary/Permission`, {\r\n params: params,\r\n })\r\n } \r\n\r\n getPermissionByParameters(id: string, code: string): Observable<IDictionaryPermission> {\r\n const params = new HttpParams().set('id', id).set('code', code);\r\n return this.http.get<IDictionaryPermission>(`${this.endpoint}Dictionary/Permission`, {\r\n params: params,\r\n })\r\n } \r\n\r\n //funzioni per la ricerca dei profili in base al parametro\r\n getProfiles(): Observable<IDictionaryProfileResponse[]> {\r\n return this.http.get<IDictionaryProfileResponse[]>(`${this.endpoint}Dictionary/Profile`);\r\n }\r\n \r\n getProfileById(id: string): Observable<IDictionaryProfileResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryProfileResponse>(`${this.endpoint}Dictionary/Profile`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei type contact in base al parametro\r\n getTypesContact(): Observable<IDictionaryTypeContact[]> {\r\n return this.http.get<IDictionaryTypeContact[]>(`${this.endpoint}Dictionary/TypeContact`);\r\n }\r\n \r\n getTypeContactById(id: string): Observable<IDictionaryTypeContact> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeContact>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSystems(): Observable<IDictionarySystemDTO[]> {\r\n return this.http.get<IDictionarySystemDTO[]>(`${this.endpoint}Dictionary/System`);\r\n }\r\n\r\n getSystemById(id: string): Observable<IDictionarySystemDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionarySystemDTO>(`${this.endpoint}Dictionary/System`, {\r\n params: params\r\n });\r\n }\r\n\r\n getLdaps(): Observable<IDictionaryLdap[]> {\r\n const credentials = btoa(`apilogin:apipassword`);\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Basic ${credentials}`,\r\n 'Content-Type': 'application/json'\r\n });\r\n\r\n return this.http.get<IDictionaryLdap[]>(`${this.endpoint}Dictionary/Ldap`, { headers: headers });\r\n }\r\n\r\n // getCompanyById(id: number): Observable<> {\r\n // const params = new HttpParams().set('id', id);\r\n // return this.http.get<>(`${this.endpoint}Dictionary/Company`, {\r\n // params: params\r\n // });\r\n // }\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica dei permessi\r\n postPermission(permissionRequest: IDictionaryPermission): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Permission`, permissionRequest);\r\n }\r\n\r\n //funzione per la modifica dei profili\r\n postProfile(profileRequest: IDictionaryProfileRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Profile`, profileRequest);\r\n }\r\n\r\n //funzione per la modifica dei type contact\r\n postTypeContact(typeContactRequest: IDictionaryTypeContact): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeContact`, typeContactRequest);\r\n }\r\n\r\n postSystem(system: IDictionarySystemDTO): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/System`, system);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deletePermission(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Permission/${id}`);\r\n }\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deleteProfile(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Profile`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deleteTypeContact(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n deleteSystem(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/System`, {\r\n params: params\r\n });\r\n }\r\n \r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IPatientExamResponse } from '../DTOExam/Response/IPatientExamResponse';\r\nimport { IExamValueResponse } from '../DTOExam/Response/IExamValueResponse';\r\nimport { IPatientExamRequest } from '../DTOExam/Request/IPatientExamRequest';\r\nimport { IExamValueRequest } from '../DTOExam/Request/IExamValueRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiExamService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Exam/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientExams(): Observable<IPatientExamResponse[]> {\r\n return this.http.get<IPatientExamResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getPatientExamsByParameters(patientId: string | \"\", vitalSignId: string | \"\"): Observable<IPatientExamRequest[]>{\r\n const params = new HttpParams().set('patientId', patientId).set('vitalSignId', vitalSignId);\r\n return this.http.get<IPatientExamRequest[]>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n \r\n getPatientExamByPatientId(patientid: string): Observable<IPatientExamResponse[]> {\r\n const params = new HttpParams().set('patientid', patientid);\r\n return this.http.get<IPatientExamResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n } \r\n\r\n getPatientExamVitalSignId(id: string): Observable<IPatientExamResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientExamResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //funzione per ottenere i valori di esami\r\n getExamValues(): Observable<IExamValueResponse[]> {\r\n return this.http.get<IExamValueResponse[]>(`${this.endpoint}Value`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getExamValueByParameters(vitalSignId: string | \"\", patientId: string | \"\"): Observable<IExamValueResponse[]> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId).set('patientId', patientId);\r\n return this.http.get<IExamValueResponse[]>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getExamValueByVitalSignId(vitalSignId: string): Observable<IExamValueResponse> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId);\r\n return this.http.get<IExamValueResponse>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n } \r\n\r\n getExamValueByPatientId(patientId: string): Observable<IExamValueResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IExamValueResponse[]>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica dell'esame del paziente\r\n postPatientExams(patientExamRequest: IPatientExamRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, patientExamRequest);\r\n }\r\n\r\n //funzione per la modifica del tipo di ricorrenza\r\n postExamValue(examValueRequest: IExamValueRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Value`, examValueRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n setPatientExam(id: string): Observable<boolean>{\r\n const params = new HttpParams().set('id', id); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n setExamValue(patientId: string): Observable<boolean>{\r\n const params = new HttpParams().set('patientId', patientId); \r\n return this.http.put<boolean>(`${this.endpoint}Value`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n deletePatientExam(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`)\r\n }\r\n\r\n //funzione per l'eliminazione del tipo di ricorrenza\r\n deleteExamValue(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Value`, {\r\n params: params,\r\n });\r\n }\r\n\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IPatientAppointmentResponse } from '../DTOExam/Response/IPatientAppointmentResponse';\r\nimport { IPatientAppointmentRequest } from '../DTOExam/Request/IPatientAppointmentRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiExamAppointmentService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Appointment/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca degli appuntamenti del paziente in base al parametro\r\n getPatientAppointments(): Observable<IPatientAppointmentResponse[]> {\r\n return this.http.get<IPatientAppointmentResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getPatientAppointmentByParameters(patientId: string | \"\", accountProfileId: string | \"\", structureDepartmentId: string | \"\", typeId: number | \"\"): Observable<IPatientAppointmentResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('accountProfileId', accountProfileId).set('structureDepartmentId', structureDepartmentId).set('typeId', typeId);\r\n return this.http.get<IPatientAppointmentResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n \r\n getPatientAppointmentById(id: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getPatientAppointmentByPatientId(patientId: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientAppointmentByAccountProfileId(accountProfileId: string): Observable<IPatientAppointmentResponse[]> {\r\n const params = new HttpParams().set('accountProfileId', accountProfileId);\r\n return this.http.get<IPatientAppointmentResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientAppointmentByStructureDepartmentId(structureDepartmentId: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('structureDepartmentId', structureDepartmentId);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientAppointmentByTypeId(typeId: string): Observable<IPatientAppointmentResponse> {\r\n const params = new HttpParams().set('typeId', typeId);\r\n return this.http.get<IPatientAppointmentResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n \r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica dell'appuntamento\r\n postPatientAppointment(patientAppointmentRequest: IPatientAppointmentRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, patientAppointmentRequest);\r\n }\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione logica dell'account\r\n deletePatientAppointment(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n \r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryRecurrencyResponse } from '../DTOExam/Response/IDictionaryRecurrencyResponse';\r\nimport { IDictionaryTypeRecurrency } from '../DTOExam/Dictionary/IDictionaryTypeRecurrency';\r\nimport { IDictionaryVitalSign } from '../DTOExam/Dictionary/IDictionaryVitalSign';\r\nimport { IDictionaryTypeAppointment } from '../DTOExam/Dictionary/IDictionaryTypeAppointment';\r\nimport { IDictionaryRecurrencyRequest } from '../DTOExam/Request/IDictionaryRecurrencyRequest';\r\nimport { IDictionaryTarget } from '../DTOExam/Response/IDictionaryTarget';\r\nimport { IDictionaryKitResponse } from '../DTOExam/Response/IDictionaryKitResponse';\r\nimport { IDictionaryComponentResponse } from '../DTOExam/Response/IDictionaryComponentResponse';\r\nimport { IDictionaryTypeComponentDTO } from '../DTOExam/Dictionary/IDictionaryTypeComponentDTO';\r\nimport { IDictionaryKitRequest } from '../DTOExam/Request/IDictionaryKitRequest';\r\nimport { IDictionaryComponentRequest } from '../DTOExam/Request/IDictionaryComponentRequest';\r\nimport { IDictionaryTargetRequest } from '../DTOExam/Request/IDictionaryTargetRequest';\r\nimport { IDictionaryRiskResponse } from '../DTOExam/Response/IDictionaryRiskResponse';\r\nimport { IDictionaryRiskRequest } from '../DTOExam/Request/IDictionaryRiskRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti i dizionari degli esami\r\nexport class ApiExamDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Exam/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getRecurrencies(): Observable<IDictionaryRecurrencyResponse[]> {\r\n return this.http.get<IDictionaryRecurrencyResponse[]>(`${this.endpoint}Dictionary/Recurrency`);\r\n }\r\n \r\n getRecurrencyById(id: number): Observable<IDictionaryRecurrencyResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryRecurrencyResponse>(`${this.endpoint}Dictionary/Recurrency`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //funzione per ottenere i tipi di ricorrenza\r\n getTypesRecurrency(): Observable<IDictionaryTypeRecurrency[]> {\r\n return this.http.get<IDictionaryTypeRecurrency[]>(`${this.endpoint}Dictionary/TypeRecurrency`);\r\n }\r\n \r\n getTypeRecurrencyById(id: number): Observable<IDictionaryTypeRecurrency> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeRecurrency>(`${this.endpoint}Dictionary/TypeRecurrency`, {\r\n params: params,\r\n });\r\n } \r\n\r\n //funzione per ottenere i vitalsign\r\n getVitalSigns(): Observable<IDictionaryVitalSign[]> {\r\n return this.http.get<IDictionaryVitalSign[]>(`${this.endpoint}Dictionary/VitalSign`);\r\n }\r\n \r\n getVitalSignById(id: string): Observable<IDictionaryVitalSign> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryVitalSign>(`${this.endpoint}Dictionary/VitalSign`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per ottenere i tipi di appuntamento\r\n getTypesAppointment(): Observable<IDictionaryTypeAppointment[]> {\r\n return this.http.get<IDictionaryTypeAppointment[]>(`${this.endpoint}Dictionary/TypeAppointment`);\r\n }\r\n \r\n getTypeAppointmentById(id: number): Observable<IDictionaryTypeAppointment> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeAppointment>(`${this.endpoint}Dictionary/TypeAppointment`, {\r\n params: params,\r\n });\r\n } \r\n \r\n //funzione per ottenere i target\r\n getTargets(): Observable<IDictionaryTarget[]> {\r\n return this.http.get<IDictionaryTarget[]>(`${this.endpoint}Dictionary/Target`);\r\n }\r\n\r\n getTargetById(targetId: string): Observable<IDictionaryTarget> {\r\n const params = new HttpParams().set('targetId', targetId);\r\n return this.http.get<IDictionaryTarget>(`${this.endpoint}Dictionary/Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTargetByVitalSignId(vitalSignId: string): Observable<IDictionaryTarget[]> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId);\r\n return this.http.get<IDictionaryTarget[]>(`${this.endpoint}Dictionary/Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTargetByParameters(vitalSignId: string | '', targetId: string | ''): Observable<IDictionaryTarget> {\r\n const params = new HttpParams().set('vitalSignId', vitalSignId).set('targetId', targetId);\r\n return this.http.get<IDictionaryTarget>(`${this.endpoint}Dictionary/Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //funzione per recuperare i kit\r\n getKits(): Observable<IDictionaryKitResponse[]> {\r\n return this.http.get<IDictionaryKitResponse[]>(`${this.endpoint}Dictionary/Kit`);\r\n }\r\n\r\n getKitById(id: string): Observable<IDictionaryKitResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryKitResponse>(`${this.endpoint}Dictionary/Kit`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getComponents(): Observable<IDictionaryComponentResponse[]> {\r\n return this.http.get<IDictionaryComponentResponse[]>(`${this.endpoint}Dictionary/Kit/Component`);\r\n }\r\n\r\n getComponentById(id: string): Observable<IDictionaryComponentResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryComponentResponse>(`${this.endpoint}Dictionary/Kit/Component`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getComponentsByType(type: number): Observable<IDictionaryComponentResponse[]> {\r\n const params = new HttpParams().set('type', type);\r\n return this.http.get<IDictionaryComponentResponse[]>(`${this.endpoint}Dictionary/Kit/Component`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getComponentByParameters(id: string, type: number): Observable<IDictionaryComponentResponse> {\r\n const params = new HttpParams().set('id', id).set('type', type);\r\n return this.http.get<IDictionaryComponentResponse>(`${this.endpoint}Dictionary/Kit/Component`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTypeComponent(): Observable<IDictionaryTypeComponentDTO[]> {\r\n return this.http.get<IDictionaryTypeComponentDTO[]>(`${this.endpoint}Dictionary/TypeComponent`);\r\n }\r\n\r\n getTypeComponentById(id: number): Observable<IDictionaryTypeComponentDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeComponentDTO>(`${this.endpoint}Dictionary/TypeComponent`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRisks(): Observable<IDictionaryRiskResponse[]> {\r\n return this.http.get<IDictionaryRiskResponse[]>(`${this.endpoint}Dictionary/Risk`);\r\n }\r\n\r\n getRiskById(id: string): Observable<IDictionaryRiskResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryRiskResponse>(`${this.endpoint}Dictionary/Risk`, {\r\n params: params\r\n });\r\n }\r\n\r\n \r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per la modifica della ricorrenza\r\n postRecurrency(recurrencyRequest: IDictionaryRecurrencyRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Recurrency`, recurrencyRequest);\r\n }\r\n\r\n //funzione per la modifica del tipo di ricorrenza\r\n postTypeRecurrency(typeRecurrencyRequest: IDictionaryTypeRecurrency): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeRecurrency`, typeRecurrencyRequest);\r\n }\r\n\r\n //funzione per la modifica del vital sign\r\n postVitalSign(vitalSignRequest: IDictionaryVitalSign): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/VitalSign`, vitalSignRequest);\r\n }\r\n\r\n //funzione per la modifica del tipo di appuntamento\r\n postTypeAppointment(typeAppointmentRequest: IDictionaryTypeAppointment): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeAppointment`, typeAppointmentRequest);\r\n }\r\n\r\n postTarget(targetRequest: IDictionaryTargetRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Target`, targetRequest);\r\n }\r\n\r\n postComponent(componentRequest: IDictionaryComponentRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Kit/Component`, componentRequest)\r\n }\r\n\r\n postKit(kitRequest: IDictionaryKitRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Kit`, kitRequest)\r\n }\r\n\r\n postRisk(riskRequest: IDictionaryRiskRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Risk`, riskRequest);\r\n }\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della ricorrenza\r\n deleteRecurrency(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Recurrency`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del tipo di ricorrenza\r\n deleteTypeRecurrency(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeRecurrency`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del vital sign\r\n deleteVitalSign(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/VitalSign/${id}`);\r\n }\r\n //funzione per l'eliminazione del tipo appuntamento\r\n deleteTypeAppointment(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeAppointment`, {\r\n params: params,\r\n });\r\n }\r\n\r\n deleteTarget(targetId: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Target/${targetId}`);\r\n }\r\n\r\n deleteKit(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Kit/${id}`)\r\n }\r\n\r\n deleteRisk(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Risk`, {\r\n params: params\r\n })\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { Inject, inject, Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IPatientKitResponse } from \"../DTOExam/Response/IPatientKitResponse\";\r\nimport { IPatientKitRequest } from \"../DTOExam/Request/IPatientKitRequest\";\r\nimport { API_CONFIG } from \"../../../services/api-config.token\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiKitService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Kit/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientKit(): Observable<IPatientKitResponse[]> {\r\n return this.http.get<IPatientKitResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getPatientKitByParameters(id: string, patientId: string): Observable<IPatientKitResponse>{\r\n const params = new HttpParams().set('patientId', patientId).set('id', id);\r\n return this.http.get<IPatientKitResponse>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientKitById(id: string): Observable<IPatientKitResponse>{\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientKitResponse>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientKitByPatientId(patientId: string): Observable<IPatientKitResponse[]>{\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IPatientKitResponse[]>(`${this.endpoint}`, {\r\n params: params\r\n })\r\n }\r\n \r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postPatientKit(patientKitRequest: IPatientKitRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, patientKitRequest)\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n setPatientKit(id: string): Observable<boolean>{\r\n const params = new HttpParams().set('id', id); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n deletePatientKit(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`)\r\n }\r\n\r\n}","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IAslResponse } from '../DTOGeography/Response/IAslResponse';\r\nimport { IDistrictResponse } from '../DTOGeography/Response/IDistrictResponse';\r\nimport { ICommonResponse } from '../DTOGeography/Response/ICommonResponse';\r\nimport { ICountryResponse } from '../DTOGeography/Response/ICountryResponse';\r\nimport { IProvinceResponse } from '../DTOGeography/Response/IProvinceResponse';\r\nimport { IRegionResponse } from '../DTOGeography/Response/IRegionResponse';\r\nimport { IAslRequest } from '../DTOGeography/Request/IAslRequest';\r\nimport { IDistrictRequest } from '../DTOGeography/Request/IDistrictRequest';\r\nimport { ICommonRequest } from '../DTOGeography/Request/ICommonRequest';\r\nimport { ICountryRequest } from '../DTOGeography/Request/ICountryRequest';\r\nimport { IProvinceRequest } from '../DTOGeography/Request/IProvinceRequest';\r\nimport { IRegionRequest } from '../DTOGeography/Request/IRegionRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiGeographyService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Geo/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle asl in base al parametro\r\n getAsls(): Observable<IAslResponse[]> {\r\n return this.http.get<IAslResponse[]>(`${this.endpoint}Asl`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getAslByParameters(id: string | \"\", name: string | \"\", commonId: string | \"\"): Observable<IAslResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('commonId', commonId);\r\n // return this.http.get<IAslResponse[]>(`${this.endpoint}Asl`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getAslById(id: string): Observable<IAslResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IAslResponse>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAslByName(name: string): Observable<IAslResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IAslResponse>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getAslByCommonId(commonId: string): Observable<IAslResponse[]> {\r\n const params = new HttpParams().set('commonId', commonId);\r\n return this.http.get<IAslResponse[]>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei distretti in base al parametro\r\n\r\n getDistricts(): Observable<IDistrictResponse[]> {\r\n return this.http.get<IDistrictResponse[]>(`${this.endpoint}District`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getDistrictByParameters(id: string | \"\", name: string | \"\", aslId: string | \"\"): Observable<IDistrictResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('aslId', aslId);\r\n // return this.http.get<IDistrictResponse[]>(`${this.endpoint}District`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getDistrictById(id: string): Observable<IDistrictResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDistrictResponse>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getDistrictByName(name: string): Observable<IDistrictResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IDistrictResponse>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getDistrictByAslId(aslId: string): Observable<IDistrictResponse[]> {\r\n const params = new HttpParams().set('aslId', aslId);\r\n return this.http.get<IDistrictResponse[]>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //funzioni per la ricerca dei comuni in base al parametro\r\n\r\n getCommons(): Observable<ICommonResponse[]> {\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getCommonByParameters(provinceId: string | \"\", regionId: string | \"\"): Observable<ICommonResponse[]> {\r\n const params = new HttpParams().set('provinceId', provinceId).set('regionId', regionId);\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n \r\n getCommonById(id: string): Observable<ICommonResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ICommonResponse>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCommonByName(name: string): Observable<ICommonResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<ICommonResponse>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCommonByProvinceId(provinceId: string): Observable<ICommonResponse[]> {\r\n const params = new HttpParams().set('provinceId', provinceId);\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCommonByRegionId(regionId: string): Observable<ICommonResponse[]> {\r\n const params = new HttpParams().set('regionId', regionId);\r\n return this.http.get<ICommonResponse[]>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei countries in base al parametro\r\n\r\n getCountries(): Observable<ICountryResponse[]> {\r\n return this.http.get<ICountryResponse[]>(`${this.endpoint}Country`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getCountryByParameters(id: string | \"\", name: string | \"\"): Observable<ICountryResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name);\r\n // return this.http.get<ICountryResponse[]>(`${this.endpoint}Country`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getCountryById(id: string): Observable<ICountryResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ICountryResponse>(`${this.endpoint}Country`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCountryByName(name: string): Observable<ICountryResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<ICountryResponse>(`${this.endpoint}Country`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca delle province in base al parametro\r\n\r\n getProvinces(): Observable<IProvinceResponse[]> {\r\n return this.http.get<IProvinceResponse[]>(`${this.endpoint}Province`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getProvinceByParameters(id: string | \"\", name: string | \"\", regionId: string | \"\"): Observable<IProvinceResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('regionId', regionId).set('regionId', regionId);\r\n // return this.http.get<IProvinceResponse[]>(`${this.endpoint}Province`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getProvinceById(id: string): Observable<IProvinceResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IProvinceResponse>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getProvinceByName(name: string): Observable<IProvinceResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IProvinceResponse>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getProvinceByRegionId(regionId: string): Observable<IProvinceResponse[]> {\r\n const params = new HttpParams().set('regionId', regionId);\r\n return this.http.get<IProvinceResponse[]>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca delle regioni in base al parametro\r\n\r\n getRegions(): Observable<IRegionResponse[]> {\r\n return this.http.get<IRegionResponse[]>(`${this.endpoint}Region`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n // getRegionByParameters(id: string | \"\", name: string | \"\", countryId: string | \"\"): Observable<IRegionResponse[]> {\r\n // const params = new HttpParams().set('id', id).set('name', name).set('countryId', countryId);\r\n // return this.http.get<IRegionResponse[]>(`${this.endpoint}Region`, {\r\n // params: params,\r\n // });\r\n // }\r\n\r\n \r\n getRegionById(id: string): Observable<IRegionResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IRegionResponse>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRegionByName(name: string): Observable<IRegionResponse> {\r\n const params = new HttpParams().set('name', name);\r\n return this.http.get<IRegionResponse>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRegionByCountryId(countryId: string): Observable<IRegionResponse[]> {\r\n const params = new HttpParams().set('countryId', countryId);\r\n return this.http.get<IRegionResponse[]>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica della asl\r\n postAsl(aslRequest: IAslRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Asl`, aslRequest);\r\n }\r\n //funzione per l'inserimento e modifica del distretto\r\n postDistrict(districtRequest: IDistrictRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}District`, districtRequest);\r\n }\r\n //funzione per l'inserimento e modifica del comune\r\n postCommon(commonRequest: ICommonRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Common`, commonRequest);\r\n }\r\n //funzione per l'inserimento e modifica del country\r\n postCountry(countryRequest: ICountryRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Country`, countryRequest);\r\n }\r\n //funzione per l'inserimento e modifica della provincia\r\n postProvince(provinceRequest: IProvinceRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Province`, provinceRequest);\r\n }\r\n //funzione per l'inserimento e modifica della regione\r\n postRegion(regionRequest: IRegionRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Region`, regionRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteAsl(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Asl`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del distretto\r\n deleteDistrict(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}District`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del comune\r\n deleteCommon(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Common`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del country\r\n deleteCountry(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Country`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione della provincia\r\n deleteProvince(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Province`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione della regione\r\n deleteRegion(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Region`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { Inject, inject, Injectable } from \"@angular/core\";\r\nimport { IPatientDataRequest } from \"../DTOPatient/Request/IPatientDataRequest\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IPatientIdentifierRequest } from \"../DTOPatient/Request/IPatientIdentifierRequest\";\r\nimport { IPatientContactRequest } from \"../DTOPatient/Request/IPatientContactRequest\";\r\nimport { IPatientIdentifierResponse } from \"../DTOPatient/Response/IPatientIdentifierResponse\";\r\nimport { IPatientContactResponse } from \"../DTOPatient/Response/IPatientContactResponse\";\r\nimport { IPatientAddressResponse } from \"../DTOPatient/Response/IPatientAddressResponse\";\r\nimport { IPatientAddressRequest } from \"../DTOPatient/Request/IPatientAddressRequest\";\r\nimport { API_CONFIG } from \"../../../services/api-config.token\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiAdministrationService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Administration/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientIdentifiers(): Observable<IPatientIdentifierResponse[]> {\r\n return this.http.get<IPatientIdentifierResponse[]>(`${this.endpoint}Patient/Identifier`)\r\n }\r\n\r\n getPatientIdentifierByParameters(patientId: string | '', identifierId: number | 0): Observable<IPatientIdentifierResponse[]> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('identifierId', identifierId)\r\n\r\n return this.http.get<IPatientIdentifierResponse[]>(`${this.endpoint}Patient/Identifier`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientContacts(): Observable<IPatientContactResponse[]> {\r\n return this.http.get<IPatientContactResponse[]>(`${this.endpoint}Patient/Contact`)\r\n }\r\n\r\n getPatientContactByParameters(patientId: string | '', contactId: number | 0): Observable<IPatientContactResponse[]> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('contactId', contactId)\r\n\r\n return this.http.get<IPatientContactResponse[]>(`${this.endpoint}Patient/Contact`, {\r\n params: params\r\n })\r\n }\r\n\r\n getPatientAddresses(): Observable<IPatientAddressResponse[]> {\r\n return this.http.get<IPatientAddressResponse[]>(`${this.endpoint}Patient/Address`)\r\n }\r\n\r\n getPatientAddressByParameters(patientId: string | '', addressId: number | 0): Observable<IPatientAddressResponse[]> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('addressId', addressId)\r\n\r\n return this.http.get<IPatientAddressResponse[]>(`${this.endpoint}Patient/Address`, {\r\n params: params\r\n })\r\n }\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postPatientData(patientDataRequest: IPatientDataRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient`, patientDataRequest);\r\n }\r\n\r\n //inserire\r\n postPatientIdentifier(patientIdentifierRequest: IPatientIdentifierRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient/Identifier`, patientIdentifierRequest)\r\n }\r\n\r\n postPatientContact(patientContactRequest: IPatientContactRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient/Contact`, patientContactRequest)\r\n }\r\n\r\n postPatientAddress(patientAddressRequest: IPatientAddressRequest): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Patient/Address`, patientAddressRequest)\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //modificare\r\n putPatientIdentifier(patientIdentifierRequest: IPatientIdentifierRequest): Observable<boolean> {\r\n return this.http.put<boolean>(`${this.endpoint}Patient/Identifier`, patientIdentifierRequest)\r\n }\r\n\r\n putPatientContact(patientContactRequest: IPatientContactRequest): Observable<boolean> {\r\n return this.http.put<boolean>(`${this.endpoint}Patient/Contact`, patientContactRequest)\r\n }\r\n\r\n putPatientAddress(patientAddressRequest: IPatientAddressRequest): Observable<boolean> {\r\n return this.http.put<boolean>(`${this.endpoint}Patient/Address`, patientAddressRequest)\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n deletePatientIdentifier(patientId: string, identifierId: number): Observable<boolean> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('identifierId', identifierId);\r\n\r\n return this.http.delete<boolean>(`${this.endpoint}Patient/Identifier`, { params });\r\n }\r\n\r\n deletePatientContact(contactId: number): Observable<boolean> {\r\n const params = new HttpParams()\r\n .set('contactId', contactId);\r\n\r\n return this.http.delete<boolean>(`${this.endpoint}Patient/Contact`, { params });\r\n }\r\n\r\n deletePatientAddress(patientId: string, typeAddressId: number): Observable<boolean> {\r\n const params = new HttpParams()\r\n .set('patientId', patientId)\r\n .set('typeAddressId', typeAddressId)\r\n\r\n return this.http.delete<boolean>(`${this.endpoint}Patient/Address`, { params });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IPatientResponse } from '../DTOPatient/Response/IPatientResponse';\r\nimport { IPatientRequest } from '../DTOPatient/Request/IPatientRequest';\r\nimport { ITargetResponse } from '../DTOPatient/Response/ITargetResponse';\r\nimport { ISettingResponse } from '../DTOPatient/Response/ISettingResponse';\r\nimport { ISettingRequest } from '../DTOPatient/Request/ISettingRequest';\r\nimport { ICaregiverDTO } from '../DTOPatient/ICaregiverDTO';\r\nimport { IAnnotationResponse } from '../DTOPatient/Response/IAnnotationResponse';\r\nimport { IAnnotationRequest } from '../DTOPatient/Request/IAnnotationRequest';\r\nimport { IAlertResponse } from '../DTOPatient/Response/IAlertResponse';\r\nimport { IRiskDTO } from '../DTOPatient/IRiskDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiPatientService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Patient/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatients(): Observable<IPatientResponse[]> {\r\n return this.http.get<IPatientResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n //funzione per la ricerca del paziente\r\n getPatientById(id: string): Observable<IPatientResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IPatientResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getPatientByFiscalCode(fiscalcode: string): Observable<IPatientResponse> {\r\n const params = new HttpParams().set('fiscalcode', fiscalcode);\r\n return this.http.get<IPatientResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per recupero dei target dei pazienti\r\n getTargets(): Observable<ITargetResponse[]> {\r\n return this.http.get<ITargetResponse[]>(`${this.endpoint}Target`)\r\n }\r\n\r\n getTargetByPatientId(patientId: string): Observable<ITargetResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<ITargetResponse[]>(`${this.endpoint}Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getTargetByParameters(patientId: string | '', targetId: string | ''): Observable<ITargetResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('targetId', targetId);\r\n return this.http.get<ITargetResponse[]>(`${this.endpoint}Target`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSettings(): Observable<ISettingResponse[]> {\r\n return this.http.get<ISettingResponse[]>(`${this.endpoint}Setting`);\r\n }\r\n\r\n //funzione per recupero dei setting dei pazienti\r\n getSettingByPatientId(patientId: string): Observable<ISettingResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<ISettingResponse[]>(`${this.endpoint}Setting`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSettingById(id: number): Observable<ISettingResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ISettingResponse>(`${this.endpoint}Setting`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getCaregivers(): Observable<ICaregiverDTO[]> {\r\n return this.http.get<ICaregiverDTO[]>(`${this.endpoint}Caregiver`);\r\n }\r\n\r\n //funzione per recupero del caregiver del paziente\r\n getCaregiverById(id: string): Observable<ICaregiverDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<ICaregiverDTO>(`${this.endpoint}Caregiver`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per recuperare tutte le note\r\n getNotes(): Observable<IAnnotationResponse[]> {\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Note`)\r\n }\r\n\r\n //funzione per recuperare le note di un paziente\r\n getNotesByPatientId(patientId: string): Observable<IAnnotationResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Note`, {\r\n params: params\r\n })\r\n }\r\n\r\n //funzione per recuperare tutti i log\r\n getLogs(): Observable<IAnnotationResponse[]> {\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Log`)\r\n }\r\n\r\n //funzione per recuperare i log di un paziente\r\n getLogsByPatientId(patientId: string): Observable<IAnnotationResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IAnnotationResponse[]>(`${this.endpoint}Log`, {\r\n params: params\r\n })\r\n }\r\n\r\n //funzione per recuperare tutti gli alert\r\n getAlerts(): Observable<IAlertResponse[]> {\r\n return this.http.get<IAlertResponse[]>(`${this.endpoint}Alert`)\r\n }\r\n\r\n //funzione per recuperare gli alert di un paziente\r\n getAlertsByPatientId(patientId: string): Observable<IAlertResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IAlertResponse[]>(`${this.endpoint}Alert`, {\r\n params: params\r\n })\r\n }\r\n\r\n \r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento del paziente\r\n postPatient(patientRequest: IPatientRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}`, patientRequest);\r\n }\r\n\r\n //funzione per l'inserimento di parametri\r\n postTarget(targetRequest: ITargetResponse): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Target`, targetRequest);\r\n }\r\n\r\n //funzione per l'inserimento dei setting\r\n postSetting(settingRequest: ISettingRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Setting`, settingRequest);\r\n }\r\n\r\n //funzione per l'inserimento del caregiver\r\n postCaregiver(dictionaryCaregiver: ICaregiverDTO): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Caregiver`, dictionaryCaregiver);\r\n }\r\n\r\n //funzione per l'inserimento di una nota\r\n postNote(annotationRequest: IAnnotationRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Note`, annotationRequest);\r\n }\r\n\r\n //funzione per l'inserimento di un log\r\n postLog(annotationRequest: IAnnotationRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Log`, annotationRequest);\r\n }\r\n\r\n postRisk(riskRequest: IRiskDTO): Observable<boolean> {\r\n return this.http.post<boolean>(`${this.endpoint}Risk`, riskRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //funzione per aggiornare la visualizzazione dell'alert\r\n putAlert(patientId: string): Observable<boolean> {\r\n console.log('chiamata', patientId);\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.put<boolean>(`${this.endpoint}Alert`, {}, { params })\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione del paziente\r\n deletePatient(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`);\r\n }\r\n\r\n deleteSetting(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Setting/${id}`);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryIdentifier } from '../DTOPatient/Dictionary/IDictionaryIdentifier';\r\nimport { IDictionaryTypeAddress } from '../DTOPatient/Dictionary/IDictionaryTypeAddress';\r\nimport { IDictionaryTypeContact } from '../DTOPatient/Dictionary/IDictionaryTypeContact';\r\nimport { IDictionarySetting } from '../DTOPatient/Dictionary/IDictionarySetting';\r\nimport { IDictionarySettingStatus } from '../DTOPatient/Dictionary/IDictionarySettingStatus';\r\nimport { IDictionaryTypeEventDTO } from '../DTOPatient/Dictionary/IDictionaryTypeEventDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiPatientDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Patient/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzione per il ritorno degli identifier in base ai parametri\r\n getIdentifiers(): Observable<IDictionaryIdentifier[]> {\r\n return this.http.get<IDictionaryIdentifier[]>(`${this.endpoint}Dictionary/Identifier`);\r\n }\r\n\r\n getDictionaryIdentifierById(identifierId: number): Observable<IDictionaryIdentifier> {\r\n const params = new HttpParams().set('identifierId', identifierId);\r\n return this.http.get<IDictionaryIdentifier>(`${this.endpoint}Dictionary/Identifier`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per il ritorno dei tipi di address in base al parametro\r\n\r\n getDictionaryTypesAddress(): Observable<IDictionaryTypeAddress[]> {\r\n return this.http.get<IDictionaryTypeAddress[]>(`${this.endpoint}Dictionary/TypeAddress`);\r\n }\r\n\r\n getDictionaryTypeAddressById(addressId: number): Observable<IDictionaryTypeAddress> {\r\n const params = new HttpParams().set('addressId', addressId);\r\n return this.http.get<IDictionaryTypeAddress>(`${this.endpoint}Dictionary/TypeAddress`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per il ritorno dei tipi di contatto\r\n getDictionaryTypesContact(): Observable<IDictionaryTypeContact[]> {\r\n return this.http.get<IDictionaryTypeContact[]>(`${this.endpoint}Dictionary/TypeContact`);\r\n }\r\n\r\n getDictionaryTypeContactById(contactId: number): Observable<IDictionaryTypeContact> {\r\n const params = new HttpParams().set('contactId', contactId);\r\n return this.http.get<IDictionaryTypeContact>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per il ritorno dei setting\r\n getSettingBySenderReceiver(sender: boolean, receiver: boolean): Observable<IDictionarySetting[]> {\r\n const params = new HttpParams().set('sender', sender).set('receiver', receiver);\r\n return this.http.get<IDictionarySetting[]>(`${this.endpoint}Dictionary/Setting`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getSettingById(id: string): Observable<IDictionarySetting> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionarySetting>(`${this.endpoint}Dictionary/Setting`, {\r\n params: params,\r\n })\r\n }\r\n\r\n //funzione per il ritorno di setting status\r\n getSettingStatus(): Observable<IDictionarySettingStatus[]> {\r\n return this.http.get<IDictionarySettingStatus[]>(`${this.endpoint}Dictionary/Setting/Status`);\r\n }\r\n\r\n getSettingStatusById(id: number): Observable<IDictionarySettingStatus> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionarySettingStatus>(`${this.endpoint}Dictionary/Setting/Status`, {\r\n params: params,\r\n })\r\n }\r\n\r\n getTypeEvent(): Observable<IDictionaryTypeEventDTO[]> {\r\n return this.http.get<IDictionaryTypeEventDTO[]>(`${this.endpoint}Dictionary/TypeEvent`)\r\n }\r\n\r\n getTypeEventByCode(code: string): Observable<IDictionaryTypeEventDTO> {\r\n const params = new HttpParams().set('code', code);\r\n return this.http.get<IDictionaryTypeEventDTO>(`${this.endpoint}Dictionary/TypeEvent`, {\r\n params: params,\r\n })\r\n }\r\n\r\n getTypeEventById(id: string): Observable<IDictionaryTypeEventDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeEventDTO>(`${this.endpoint}Dictionary/TypeEvent`, {\r\n params: params,\r\n })\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //inserimento identifier\r\n postDictionaryIdentifier(dictionaryIdentifierRequest: IDictionaryIdentifier): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Identifier`, dictionaryIdentifierRequest);\r\n }\r\n\r\n //inserimento tipo address\r\n postDictionaryTypeAddress(dictionaryTypeAddressRequest: IDictionaryTypeAddress): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeAddress`, dictionaryTypeAddressRequest);\r\n }\r\n\r\n //insirimento tipo contatto\r\n postDictionaryTypeContact(dictionaryTypeContactRequest: IDictionaryTypeContact): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeContact`, dictionaryTypeContactRequest);\r\n }\r\n\r\n //inserimento sender/receiver\r\n postDictionarySetting(dictionarySetting: IDictionarySetting): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Setting`, dictionarySetting);\r\n }\r\n\r\n //inserimento status setting\r\n postDictionarySettingStatus(dictionarySettingStatus: IDictionarySettingStatus): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Setting/Status`, dictionarySettingStatus)\r\n }\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //eliminazione identifier\r\n deleteIdentifier(identifierId : number): Observable<boolean> {\r\n const params = new HttpParams().set('identifierId', identifierId );\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //eliminazione tipo address\r\n deleteTypeAddress(addressId : number): Observable<boolean> {\r\n const params = new HttpParams().set('addressId', addressId);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeAddress`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //eliminazione tipo contatto\r\n deleteTypeContact(contactId : number): Observable<boolean> {\r\n const params = new HttpParams().set('contactId', contactId);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeContact`, {\r\n params: params,\r\n });\r\n }\r\n\r\n deleteSetting(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Setting/${id}`);\r\n }\r\n\r\n deleteStatus(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Setting/Status/${id}`);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IRequestResponse } from '../DTORequest/Response/IRequestResponse';\r\nimport { IRequestRequest } from '../DTORequest/Request/IRequestRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiRequestService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Request/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle richieste in base al parametro\r\n getRequests(): Observable<IRequestResponse[]> {\r\n return this.http.get<IRequestResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n \r\n getRequestByParameters(statusId: string | \"\", typeId: string | \"\"): Observable<IRequestResponse[]> {\r\n const params = new HttpParams().set('statusId', statusId).set('typeId', typeId);\r\n return this.http.get<IRequestResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n \r\n\r\n getRequestByKey(key: string): Observable<IRequestResponse> {\r\n const params = new HttpParams().set('key', key);\r\n return this.http.get<IRequestResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRequestsByStatus(statusId: string): Observable<IRequestResponse> {\r\n const params = new HttpParams().set('statusId', statusId);\r\n return this.http.get<IRequestResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getRequestByType(typeId: number): Observable<IRequestResponse> {\r\n const params = new HttpParams().set('typeId', typeId);\r\n return this.http.get<IRequestResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento della richiesta\r\n postRequest(requestRequest: IRequestRequest, accountProfileId: string | \"\"): Observable<string> {\r\n const params = new HttpParams().set('accountProfileId', accountProfileId)\r\n return this.http.post<string>(`${this.endpoint}`, requestRequest, {\r\n params: params,\r\n });\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n setRequestStatus(requestId: string, statusId: number, accountProfileId: string | \"\"): Observable<boolean>{\r\n const params = new HttpParams().set('requestId', requestId).set('statusId', statusId).set('accountProfileId', accountProfileId); \r\n return this.http.put<boolean>(`${this.endpoint}`, null, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteRequest(key: string): Observable<boolean> {\r\n const params = new HttpParams().set('key', key);\r\n return this.http.delete<boolean>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryStatus } from '../DTORequest/Dictionary/IDictionaryStatus';\r\nimport { IDictionaryTypeRequest } from '../DTORequest/Dictionary/IDictionaryTypeRequest';\r\nimport { IOutcomeRequestTypeResponse } from '../DTORequest/Response/IOutcomeRequestTypeResponse';\r\nimport { IDictionaryPriority } from '../DTORequest/Dictionary/IDictionaryPriority';\r\nimport { IOutcomeRequestTypeRequest } from '../DTORequest/Request/IOutcomeRequestTypeRequest';\r\nimport { IDTOKey } from '../DTORequest/IDTOKey';\r\nimport { IDictionaryOutcome } from '../DTORequest/Dictionary/IDictionaryOutcome';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiRequestDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Request/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle key in base al parametro\r\n //tutte le key\r\n getKeys(): Observable<IDTOKey[]> {\r\n return this.http.get<IDTOKey[]>(`${this.endpoint}Dictionary/Key`);\r\n }\r\n\r\n //ricerca con più di un parametro\r\n getKeyByParameters(patientId: string | \"\", accessId: string | \"\", requestId: string | \"\", spoke: string | \"\"): Observable<IDTOKey[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('accessId', accessId).set('requestId', requestId).set('spoke', spoke);\r\n return this.http.get<IDTOKey[]>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //dati parametri singoli\r\n getKeyById(id: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('id', id)\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n \r\n getKeyByPatientId(patientId: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('patientId', patientId);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getKeyByAccessId(accessId: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('accessId', accessId);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getKeyByRequestId(requestId: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('requestId', requestId);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getKeyBySpoke(spoke: string): Observable<IDTOKey> {\r\n const params = new HttpParams().set('spoke', spoke);\r\n return this.http.get<IDTOKey>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna gli outcome \r\n getOutcomes(): Observable<IDictionaryOutcome[]> {\r\n return this.http.get<IDictionaryOutcome[]>(`${this.endpoint}Dictionary/Outcome`);\r\n }\r\n\r\n //funzione che ritorna gli outcome dato l'id\r\n getOutcomeById(id: string): Observable<IDictionaryOutcome> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryOutcome>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti gli status\r\n getStatus(): Observable<IDictionaryStatus[]> {\r\n return this.http.get<IDictionaryStatus[]>(`${this.endpoint}Dictionary/Status`);\r\n }\r\n\r\n //funzione che ritorna gli stauts dato l'id\r\n getStatusById(id: string): Observable<IDictionaryStatus> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryStatus>(`${this.endpoint}Dictionary/Status`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti i tipi richiesta\r\n getTypesRequest(): Observable<IDictionaryTypeRequest[]> {\r\n return this.http.get<IDictionaryTypeRequest[]>(`${this.endpoint}Dictionary/TypeRequest`);\r\n }\r\n\r\n //funzione che ritorna il tipo richiesta dato l'id\r\n getTypeRequestById(id: string): Observable<IDictionaryTypeRequest> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeRequest>(`${this.endpoint}Dictionary/TypeRequest`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti i tipi richiesta\r\n getTypeRequestOutcome(): Observable<IOutcomeRequestTypeResponse[]> {\r\n return this.http.get<IOutcomeRequestTypeResponse[]>(`${this.endpoint}Dictionary/TypeRequest/Outcome`);\r\n }\r\n\r\n //funzione che ritorna il tipo richiesta dato l'id\r\n getTypeRequestOutcomeById(id: string): Observable<IOutcomeRequestTypeResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IOutcomeRequestTypeResponse>(`${this.endpoint}Dictionary/TypeRequest/Outcome`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione che ritorna tutti i tipi di priorità\r\n getPriorities(): Observable<IDictionaryPriority[]> {\r\n return this.http.get<IDictionaryPriority[]>(`${this.endpoint}Dictionary/Priority`);\r\n }\r\n\r\n //funzione che ritorna la priorità dato l'id\r\n getPriority(id: string): Observable<IDictionaryPriority> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryPriority>(`${this.endpoint}Dictionary/Priority`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione post delle key\r\n postKey(dictionaryKey: IDTOKey): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Key`, dictionaryKey);\r\n }\r\n\r\n //post outcome per inserimento\r\n postOutcome(dictionaryOutcome: IDictionaryOutcome): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Outcome`, dictionaryOutcome);\r\n }\r\n\r\n //post status per inserimento\r\n postStatus(dictionaryStatus: IDictionaryStatus): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Stauts`, dictionaryStatus);\r\n }\r\n //post TypeRequest per inserimento\r\n postTypeRequest(dictionaryTypeRequest: IDictionaryTypeRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeRequest`, dictionaryTypeRequest);\r\n }\r\n //post tipo outcome per inserimento\r\n postTypeRequestOutcome(dictionaryTypeRequestOutcome: IOutcomeRequestTypeRequest): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeRequest/Outcome`, dictionaryTypeRequestOutcome);\r\n }\r\n //post priorità per inserimento\r\n postPriority(dictionaryPriority: IDictionaryPriority): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Priority`, dictionaryPriority);\r\n }\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n putKey(dictionaryKey: IDTOKey): Observable<string> {\r\n return this.http.put<string>(`${this.endpoint}Dictionary/Key`, dictionaryKey);\r\n }\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della key\r\n deleteKey(key: string): Observable<boolean> {\r\n const params = new HttpParams().set('key', key);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Key`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione dell'outcome\r\n deleteOutcome(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Outcome`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione dello Status\r\n deleteStatus(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Status`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del tipo richiesta\r\n deleteTypeRequest(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeRequest`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione del tipo di outcome\r\n deleteTypeRequestOutcome(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeRequest/Outcome`, {\r\n params: params,\r\n });\r\n }\r\n //funzione per l'eliminazione della priorità\r\n deletePriority(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Priority`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IStructureResponse } from '../DTOStructure/Response/IStructureResponse';\r\nimport { IStructureRequest } from '../DTOStructure/Request/IStructureRequest';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiStructureService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Structure/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca delle richieste in base al parametro\r\n getStructures(): Observable<IStructureResponse[]> {\r\n return this.http.get<IStructureResponse[]>(`${this.endpoint}`);\r\n }\r\n\r\n getRequestById(id: string): Observable<IStructureResponse> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IStructureResponse>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getStructureByDepartmentId(departmentId: string): Observable<IStructureResponse[]> {\r\n const params = new HttpParams().set('departmentId', departmentId);\r\n return this.http.get<IStructureResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica della struttura\r\n postStructure(structureRequest: IStructureRequest): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}`, structureRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteStructure(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}${id}`);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDepartmentResponse } from '../DTOStructure/Response/IDepartmentResponse';\r\nimport { IDepartmentRequest } from '../DTOStructure/Request/IDepartmentRequest';\r\nimport { IDictionaryTypeStructure } from '../DTOStructure/Dictionary/IDictionaryTypeStructure';\r\nimport { IDictionaryDepartment } from '../DTOStructure/Dictionary/IDictionaryDepartment';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiStructureDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Structure/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei department in base al parametro\r\n getDepartments(): Observable<IDictionaryDepartment[]> {\r\n return this.http.get<IDictionaryDepartment[]>(`${this.endpoint}Dictionary/Department`);\r\n }\r\n\r\n getDepartmentById(id: string): Observable<IDictionaryDepartment> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryDepartment>(`${this.endpoint}Dictionary/Department`, {\r\n params: params,\r\n });\r\n }\r\n\r\n getDepartmentByCode(code: string): Observable<IDictionaryDepartment> {\r\n const params = new HttpParams().set('code', code);\r\n return this.http.get<IDictionaryDepartment>(`${this.endpoint}Dictionary/Department`, {\r\n params: params\r\n });\r\n }\r\n\r\n getDepartmentByParameters(id: string, code: string): Observable<IDictionaryDepartment> {\r\n const params = new HttpParams().set('id', id).set('code', code);\r\n return this.http.get<IDictionaryDepartment>(`${this.endpoint}Dictionary/Department`, {\r\n params: params\r\n });\r\n }\r\n\r\n getTypesStructure(): Observable<IDictionaryTypeStructure[]> {\r\n return this.http.get<IDictionaryTypeStructure[]>(`${this.endpoint}Dictionary/TypeStructure`);\r\n }\r\n\r\n getTypeStructureById(id: string): Observable<IDictionaryTypeStructure> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeStructure>(`${this.endpoint}Dictionary/TypeStructure`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n //funzione per l'inserimento e modifica del department\r\n postDepartment(departmentRequest: IDictionaryDepartment): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/Department`, departmentRequest);\r\n }\r\n\r\n postTypeStructure(typeStructureRequest: IDictionaryTypeStructure): Observable<string> {\r\n return this.http.post<string>(`${this.endpoint}Dictionary/TypeStructure`, typeStructureRequest);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione della richiesta\r\n deleteDepartment(id: string): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Department/${id}`);\r\n }\r\n\r\n deleteTypeStructure(id: string): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeStructure`, {\r\n params: params,\r\n });\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IDictionaryTypeQuestionDTO } from '../DTOSurvey/Dictionary/IDictionaryTypeQuestionDTO';\r\nimport { IDictionaryTypeSurveyDTO } from '../DTOSurvey/Dictionary/IDictionaryTypeSurveyDTO';\r\nimport { IDictionaryIconDTO } from '../DTOSurvey/Dictionary/IDictionaryIconDTO';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiSurveyDictionaryService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Survey/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n getTypeQuestions(): Observable<IDictionaryTypeQuestionDTO[]> {\r\n return this.http.get<IDictionaryTypeQuestionDTO[]>(`${this.endpoint}Dictionary/TypeQuestion`);\r\n }\r\n\r\n getTypeQuestionById(id: number): Observable<IDictionaryTypeQuestionDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeQuestionDTO>(`${this.endpoint}Dictionary/TypeQuestion`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n getTypeSurveys(): Observable<IDictionaryTypeQuestionDTO[]> {\r\n return this.http.get<IDictionaryTypeQuestionDTO[]>(`${this.endpoint}Dictionary/TypeSurvey`);\r\n }\r\n \r\n getTypeSurveyById(id: number): Observable<IDictionaryTypeSurveyDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryTypeSurveyDTO>(`${this.endpoint}Dictionary/TypeSurvey`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzioni per la ricerca dei tipi di domanda in base al parametro\r\n getIcons(): Observable<IDictionaryIconDTO[]> {\r\n return this.http.get<IDictionaryIconDTO[]>(`${this.endpoint}Dictionary/TypeSurvey`);\r\n }\r\n \r\n getIconById(id: number): Observable<IDictionaryIconDTO> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.get<IDictionaryIconDTO>(`${this.endpoint}Dictionary/TypeSurvey`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n postTypeQuestion(dictionaryTypeQuestion: IDictionaryTypeQuestionDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeQuestion`, dictionaryTypeQuestion);\r\n }\r\n\r\n postTypeSurvey(dictionarySurveyQuestion: IDictionaryTypeSurveyDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/TypeSurvey`, dictionarySurveyQuestion);\r\n }\r\n\r\n postIcon(dictionaryIcon: IDictionaryIconDTO): Observable<number> {\r\n return this.http.post<number>(`${this.endpoint}Dictionary/Icon`, dictionaryIcon);\r\n }\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n //funzione per l'eliminazione del tipo domanda\r\n deleteTypeQuestion(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeQuestion`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //funzione per l'eliminazione del tipo questionario\r\n deleteTypeSurvey(id: number): Observable<boolean> {\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/TypeSurvey/${id}`);\r\n }\r\n\r\n //funzione per l'eliminazione dell'icona\r\n deleteIcon(id: number): Observable<boolean> {\r\n const params = new HttpParams().set('id', id);\r\n return this.http.delete<boolean>(`${this.endpoint}Dictionary/Icon`, {\r\n params: params,\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Inject, inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IEventResponse } from '../DTOPatient/Response/IEventResponse';\r\nimport { API_CONFIG } from '../../../services/api-config.token';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiEventService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Event/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getEventsByPatientIdStartEnd(patientId: string, start: string, end: string): Observable<IEventResponse[]> {\r\n const params = new HttpParams().set('patientId', patientId).set('start', start).set('end', end);\r\n return this.http.get<IEventResponse[]>(`${this.endpoint}`, {\r\n params: params,\r\n });\r\n }\r\n\r\n //##############\r\n //#### POST ####\r\n //##############\r\n\r\n\r\n\r\n //###############\r\n //##### PUT #####\r\n //###############\r\n\r\n //##############\r\n //### DELETE ###\r\n //##############\r\n\r\n}\r\n","import { inject, Inject, Injectable } from \"@angular/core\";\r\nimport { API_CONFIG } from \"../../../services/api-config.token\";\r\nimport { HttpClient, HttpParams } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IReportResponseDto } from \"../DtoResponse/IReportReponseDto.interface\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n\r\n//Servizio api per le chiamate riguardarti le strutture\r\nexport class ApiReportService {\r\n \r\n endpoint!: string;\r\n\r\n constructor(@Inject(API_CONFIG) private gateway: string) {\r\n this.endpoint = `${this.gateway}/Report/`;\r\n }\r\n\r\n http = inject(HttpClient);\r\n\r\n //###############\r\n //##### GET #####\r\n //###############\r\n\r\n getPatientReportPdf(patientId: string, from?: string, to?: string): Observable<IReportResponseDto> {\r\n const params = new HttpParams().set('patientId', patientId).set('from', from || '').set('to', to || '');\r\n\r\n return this.http.get<IReportResponseDto>(`${this.endpoint}Patient/Pdf`, {\r\n params: params,\r\n });\r\n }\r\n}","import { Component, computed, input, output } from '@angular/core';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\nexport type ButtonVariant = 'primary' | 'secondary' | 'third' | 'fourth';\r\n\r\n@Component({\r\n selector: 'lib-button',\r\n imports: [FaIconComponent],\r\n templateUrl: './button.html',\r\n styleUrl: './button.css'\r\n})\r\nexport class Button {\r\n variant = input<ButtonVariant>('fourth');\r\n label = input<string>();\r\n icon = input<IconProp>();\r\n disabled = input<boolean>(false);\r\n ariaLabel = input<string>(); //necessario per accessibilità, se il bottone ha solo un'icona\r\n\r\n //colori personalizzabili - default nero\r\n bgColor = input<string>('#000');\r\n textColor = input<string>('#fff');\r\n borderColor = input<string>('#000');\r\n iconColor = input<string>('#fff');\r\n //hover\r\n bgColorHover = input<string>('#333');\r\n textColorHover = input<string>('#fff');\r\n borderColorHover = input<string>('#333');\r\n iconColorHover = input<string>('#fff');\r\n\r\n clicked = output<void>();\r\n\r\n\r\n\r\n protected classes = computed(() => {\r\n const parts = ['btn', `btn--${this.variant()}`];\r\n \r\n if (this.icon() && !this.label()) parts.push('btn--icon-only');\r\n else if (this.icon() && this.label()) parts.push('btn--with-icon');\r\n else parts.push('btn--label-only');\r\n\r\n return parts.join(' ');\r\n })\r\n\r\n protected styles = computed(() => ({\r\n '--btn-bg': this.bgColor(),\r\n '--btn-color': this.textColor(),\r\n '--btn-border-color': this.borderColor(),\r\n '--btn-icon-color': this.iconColor(),\r\n //colori hover\r\n '--btn-bg-hover': this.bgColorHover(),\r\n '--btn-color-hover': this.textColorHover(),\r\n '--btn-border-color-hover': this.borderColorHover(),\r\n '--btn-icon-color-hover': this.iconColorHover()\r\n }))\r\n\r\n protected handleClick() {\r\n this.clicked.emit();\r\n }\r\n\r\n}\r\n","<button\r\n [class]=\"classes()\"\r\n [style]=\"styles()\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"ariaLabel()\"\r\n (click)=\"handleClick()\" \r\n>\r\n\r\n @if (icon()) {\r\n <span class=\"btn__icon\">\r\n <fa-icon [icon]=\"icon()!\"></fa-icon>\r\n </span>\r\n }\r\n\r\n @if (label()) {\r\n <span class=\"btn__label\">\r\n {{ label() }}\r\n </span>\r\n }\r\n\r\n</button>","/*\r\n * Public API Surface of itc-library20\r\n */\r\n\r\nexport * from './lib/itc-library20';\r\nexport * from './lib/primary-button/primary-button';\r\nexport * from './lib/secondary-button/secondary-button';\r\nexport * from './lib/third-button/third-button';\r\nexport * from './lib/basic-table/basic-table';\r\nexport * from './lib/sortable-table/sortable-table';\r\nexport * from './lib/calendar/calendar';\r\nexport * from './lib/message/message';\r\nexport * from './lib/survey/survey';\r\nexport * from './lib/survey/survey-radio/survey-radio';\r\nexport * from './lib/survey/survey-valuebox/survey-valuebox';\r\nexport * from './lib/survey/survey-text/survey-text';\r\nexport * from './lib/services/minio';\r\nexport * from './lib/services/config.interface';\r\nexport * from './lib/services/primeng-italian-locale';\r\nexport * from './lib/services/format-date';\r\nexport * from './lib/microservices/account/serviceAccount/account';\r\nexport * from './lib/microservices/account/serviceAccount/account-dictionary';\r\nexport * from './lib/microservices/exam/serviceExam/exam';\r\nexport * from './lib/microservices/exam/serviceExam/exam-appointment';\r\nexport * from './lib/microservices/exam/serviceExam/exam-dictionary';\r\nexport * from './lib/microservices/exam/serviceExam/exam-kit';\r\nexport * from './lib/microservices/geography/serviceGeography/geography';\r\nexport * from './lib/microservices/patient/servicePatient/administration';\r\nexport * from './lib/microservices/patient/servicePatient/patient';\r\nexport * from './lib/microservices/patient/servicePatient/patient-dictionary';\r\nexport * from './lib/microservices/request/serviceRequest/request';\r\nexport * from './lib/microservices/request/serviceRequest/request-dictionary';\r\nexport * from './lib/microservices/structure/serviceStructure/structure';\r\nexport * from './lib/microservices/structure/serviceStructure/structure-dictionary';\r\nexport * from './lib/microservices/survey/serviceSurvey/survey';\r\nexport * from './lib/microservices/survey/serviceSurvey/survey-dictionary';\r\nexport * from './lib/microservices/patient/servicePatient/event';\r\nexport * from './lib/services/api-config.token';\r\nexport * from './lib/microservices/report/reportService/report';\r\nexport * from './lib/button/button';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4"],"mappings":"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"}
|