@arsedizioni/ars-utils 22.0.37 → 22.0.40

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":"arsedizioni-ars-utils-clipper.common.mjs","sources":["../../../projects/ars-utils/clipper.common/common/messages.ts","../../../projects/ars-utils/clipper.common/common/definitions.ts","../../../projects/ars-utils/clipper.common/common/notes.ts","../../../projects/ars-utils/clipper.common/common/services/documents.service.ts","../../../projects/ars-utils/clipper.common/common/services/login.service.ts","../../../projects/ars-utils/clipper.common/common/services/core.service.ts","../../../projects/ars-utils/clipper.common/common/services/account.service.ts","../../../projects/ars-utils/clipper.common/common/services/archive.service.ts","../../../projects/ars-utils/clipper.common/common/services/calendar.service.ts","../../../projects/ars-utils/clipper.common/common/services/collaboration.service.ts","../../../projects/ars-utils/clipper.common/common/services/clipper.service.ts","../../../projects/ars-utils/clipper.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/clipper.common/common/services/index.ts","../../../projects/ars-utils/clipper.common/public_api.ts","../../../projects/ars-utils/clipper.common/arsedizioni-ars-utils-clipper.common.ts"],"sourcesContent":["export const ClipperMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n // Error\r\n ERROR: '§clipper-error', \r\n SUCCESS: '§clipper-success',\r\n SUCCESS_TOAST: '§clipper-success-toast',\r\n\r\n // Login\r\n LOGIN_CHANGED: '§clipper-login-changed',\r\n LOGIN_COMPLETED: '§clipper-login-completed',\r\n LOGIN_PENDING: '§clipper-login-pending',\r\n LOGIN_FAILED: '§clipper-login-failed',\r\n LOGOUT: '§clipper-logout',\r\n LOGOUT_COMPLETED: '§clipper-logout-completed',\r\n LOGOUT_FAILED: '§clipper-logout-failed',\r\n\r\n // Document\r\n DOCUMENT_READ: '$clipper-document-read',\r\n DOCUMENT_NAVIGATE: '$clipper-document-navigate',\r\n DOCUMENT_NAVIGATED: '$clipper-document-navigated',\r\n DOCUMENT_SELECTED: '$clipper-document-selected',\r\n DOCUMENT_SELECTED_INNER: '$clipper-document-selected_inner',\r\n\r\n // Settings\r\n SETTINGS_CHANGED: '$clipper-settings-changed',\r\n\r\n // Commands\r\n COMMAND_ARCHIVE_ADD: '$clipper-command-archive-add',\r\n COMMAND_CALENDAR_ADD: '$clipper-command-calendar-add',\r\n COMMAND_WORKING_OPEN: '$clipper-command-working-documents-open',\r\n COMMAND_WORKING_ADD: '$clipper-command-working-documents-add',\r\n COMMAND_NOTES_ADD: '$clipper-command-notes-add',\r\n COMMAND_NOTES_DELETE: '$clipper-command-notes-delete',\r\n COMMAND_NOTES_UPDATE: '$clipper-command-notes-update',\r\n COMMAND_SEARCH_RESTORED: '$clipper-command-search-restored',\r\n COMMAND_SEARCH_EXECUTED: '$clipper-command-search-executed',\r\n COMMAND_SEARCH_EMPTY_RESULT: '$clipper-command-search-empty-result',\r\n COMMAND_HISTORY_OPEN: '$clipper-command-history-open',\r\n COMMAND_DASHBOARD_UPDATED: '$clipper-command-dashboard-updated',\r\n\r\n\r\n // AI\r\n AI_CONCERN_ME: '$clipper-ai-concernme',\r\n AI_EXPLAIN: '$clipper-ai-explain',\r\n AI_COMMENT: '$clipper-ai-comment',\r\n AI_NEWS: '$clipper-ai-news',\r\n\r\n // Interop\r\n INTEROP_RS_NEW_LAW: '$clipper-interop-rs-new-law',\r\n INTEROP_RS_NEW_ACTIVITY: '$clipper-interop-rs-new-activity',\r\n INTEROP_RS_USAGE_REPORT: '$clipper-interop-rs-usage-report',\r\n\r\n // Updates\r\n UPDATE_RELOAD: '§update-reload',\r\n};\r\n","import { computed, Signal, signal } from '@angular/core';\r\nimport { Folder, LoginResult, NameValueItem, QueryModel, QueryResultModel } from '@arsedizioni/ars-utils/core';\r\nimport { SendToDialogResult } from '@arsedizioni/ars-utils/ui.application';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport interface EditedEventArgs<T> {\r\n data: T;\r\n isNew?: boolean;\r\n}\r\n\r\nexport interface EditDialogData<T> {\r\n currentItem?: T;\r\n isEditable?: boolean;\r\n parentId?: number;\r\n}\r\n\r\n\r\nexport interface EditDialogCompleted<T> {\r\n data: T;\r\n dismissed?: boolean;\r\n isNew?: boolean;\r\n preview?: boolean;\r\n}\r\n\r\n\r\n\r\nexport enum ClipperServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1,\r\n Embedded = 1 << 2\r\n}\r\n\r\nexport enum ClipperRecurrenceType {\r\n Year = 1,\r\n Month = 2,\r\n Day = 3\r\n}\r\n\r\nexport const ClipperRecurrenceTypes: NameValueItem<ClipperRecurrenceType>[] = [\r\n { name: 'Anni', value: ClipperRecurrenceType.Year },\r\n { name: 'Mesi', value: ClipperRecurrenceType.Month },\r\n { name: 'Giorni', value: ClipperRecurrenceType.Day }\r\n]\r\n\r\nexport enum ClipperSelectionMode {\r\n None = 0,\r\n Single = 1,\r\n TwoOrMore = 2,\r\n Multi = 3\r\n}\r\n\r\n\r\n\r\nexport enum ClipperModuleGroup {\r\n Home = 0,\r\n NormativaVigente = 1,\r\n UltimeNovità = 2,\r\n ParApprofondire = 3,\r\n DGInfo = 4,\r\n Giurisprudenza = 5,\r\n Calendario = 11,\r\n Archivio = 12,\r\n Evolution = 201,\r\n Ars = 202,\r\n Ricerca = 99\r\n}\r\n\r\nexport enum ClipperModule {\r\n NormativaVigente = 4,\r\n News = 1,\r\n GazzetteBollettiniEFontiDiverse = 2,\r\n Giurisprudenza = 5,\r\n ModificheAbrogazioniERinvii = 3,\r\n ScadenzeESegnalazioni = 12,\r\n AllerteAlimentari = 8,\r\n Approfondimenti = 6,\r\n QuesitiECasiRisolti = 10,\r\n MetodiDiAnalisi = 11,\r\n DGInfo = 61,\r\n Ricerca = 99,\r\n GiurisprudenzaRecente = 18\r\n\r\n}\r\n\r\nexport enum ClipperModel {\r\n Unknown = 0,\r\n AggiornamentoNormativo = 2,\r\n News = 3,\r\n Articoli = 4,\r\n Juris = 5,\r\n Quesiti = 8,\r\n NormativaVigente = 9,\r\n Scadenze = 10,\r\n Coordinamento = 11,\r\n AllerteAlimentari = 13,\r\n MetodiDiAnalisi = 14,\r\n GiurisprudenzaRecente = 18,\r\n Segnalazioni = 20,\r\n UltimeNovità = 21\r\n}\r\n\r\nexport const ClipperModels: NameValueItem<number>[] = [\r\n { value: ClipperModel.AggiornamentoNormativo, name: \"Testi storici\" },\r\n { value: ClipperModel.News, name: 'News' },\r\n { value: ClipperModel.Articoli, name: 'Articoli' },\r\n { value: ClipperModel.Juris, name: 'Note a sentenza' },\r\n { value: ClipperModel.GiurisprudenzaRecente, name: 'Giurisprudenza' },\r\n { value: ClipperModel.Quesiti, name: 'Quesiti' },\r\n { value: ClipperModel.NormativaVigente, name: 'Normativa vigente' },\r\n { value: ClipperModel.Scadenze, name: 'Scadenze' },\r\n { value: ClipperModel.AllerteAlimentari, name: 'Allerte alimentari' },\r\n { value: ClipperModel.Coordinamento, name: 'Modifiche e abrogazioni' },\r\n]\r\n\r\nexport const ClipperModuleGroups: NameValueItem<number>[] = [\r\n { name: \"Ultime novità\", value: ClipperModuleGroup.Home },\r\n { name: \"Ricerca\", value: ClipperModuleGroup.Ricerca },\r\n { name: \"DG Info\", value: ClipperModuleGroup.DGInfo },\r\n { name: \"Calendario\", value: ClipperModuleGroup.Calendario },\r\n { name: \"Archivio\", value: ClipperModuleGroup.Archivio }\r\n];\r\n\r\nexport const ClipperModules: NameValueItem<number>[] = [\r\n { name: 'News, articoli di approfondimento e note a sentenza', shortName: 'Novità', value: ClipperModule.News },\r\n { name: 'Gazzette, Bollettini e fonti diverse', shortName: 'Gazzette, Bollettini e fonti diverse', value: ClipperModule.GazzetteBollettiniEFontiDiverse },\r\n { name: 'Giurisprudenza', shortName: 'Giurisprudenza', value: ClipperModule.Giurisprudenza },\r\n { name: 'Modifiche, abrogazioni e rinvii', shortName: 'Modifiche, abrogazioni e rinvii', value: ClipperModule.ModificheAbrogazioniERinvii },\r\n { name: 'Allerte alimentari', shortName: 'Allerte alimentari', value: ClipperModule.AllerteAlimentari },\r\n { name: 'Scadenze e segnalazioni', shortName: 'Scadenze e segnalazioni', value: ClipperModule.ScadenzeESegnalazioni },\r\n { name: 'Normativa vigente', shortName: 'Normativa vigente', value: ClipperModule.NormativaVigente },\r\n { name: 'Quesiti e casi risolti', shortName: 'Quesiti', value: ClipperModule.QuesitiECasiRisolti },\r\n]\r\n\r\nexport enum ClipperChannel {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n MerciPericolose = 3,\r\n Energia = 4,\r\n DGInfo = 5\r\n}\r\n\r\nexport const ClipperChannels: NameValueItem<ClipperChannel>[] = [\r\n { value: ClipperChannel.LavoroEAmbiente, name: \"Lavoro e Ambiente\", header: \"LA\" },\r\n { value: ClipperChannel.SostanzeAlimentari, name: \"Sostanze Alimentari\", header: \"SA\" },\r\n { value: ClipperChannel.Energia, name: \"Energia\", header: \"E\" },\r\n { value: ClipperChannel.MerciPericolose, name: \"Merci Pericolose\", header: \"MP\" }\r\n]\r\n\r\nexport interface ClipperAvailableChannel extends NameValueItem<ClipperChannel> {\r\n active?: boolean;\r\n suspended?: boolean;\r\n}\r\n\r\nexport const ClipperRegions: NameValueItem<string>[] = [\r\n {\r\n value: '4RAB',\r\n name: 'Abruzzo',\r\n },\r\n {\r\n value: '4RBA',\r\n name: 'Basilicata',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: 'Calabria',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: 'Campania',\r\n },\r\n {\r\n value: '4REM',\r\n name: 'Emilia Romagna',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: 'Friuli Venezia Giulia',\r\n },\r\n {\r\n value: '4RLA',\r\n name: 'Lazio',\r\n },\r\n {\r\n value: '4RLI',\r\n name: 'Liguria',\r\n },\r\n {\r\n value: '4RLO',\r\n name: 'Lombardia',\r\n },\r\n {\r\n value: '4RMA',\r\n name: 'Marche',\r\n },\r\n {\r\n value: '4RMO',\r\n name: 'Molise',\r\n },\r\n {\r\n value: '4RPI',\r\n name: 'Piemonte',\r\n },\r\n {\r\n value: '4RPU',\r\n name: 'Puglia',\r\n },\r\n {\r\n value: '4RSA',\r\n name: 'Sardegna',\r\n },\r\n {\r\n value: '4RSI',\r\n name: 'Sicilia',\r\n },\r\n {\r\n value: '4RTO',\r\n name: 'Toscana',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: 'Trentino Alto Adige',\r\n },\r\n {\r\n value: '4RUM',\r\n name: 'Umbria',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \"Valle D'Aosta\",\r\n },\r\n {\r\n value: '4RVE',\r\n name: 'Veneto',\r\n },\r\n {\r\n value: '4PAT',\r\n name: 'Prov. Aut. Trento',\r\n },\r\n {\r\n value: '4PAB',\r\n name: 'Prov. Aut. Bolzano',\r\n }\r\n]\r\n\r\nexport interface SectorInfo extends NameValueItem<string> {\r\n\r\n group?: string;\r\n channels?: string;\r\n sectorId?: string;\r\n}\r\n\r\nexport const ClipperSectors: SectorInfo[] = [\r\n {\r\n value: 'LC',\r\n name: 'Legislazione comunitaria',\r\n shortName: 'Comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'LN',\r\n name: 'Legislazione nazionale',\r\n shortName: 'Nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n\r\n {\r\n value: 'LR',\r\n name: 'Legislazione regionale',\r\n shortName: 'Regionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RAB',\r\n name: ' Abruzzo',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAB',\r\n name: ' Prov. Aut. Bolzano',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RBA',\r\n name: ' Basilicata',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: ' Calabria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: ' Campania',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4REM',\r\n name: ' Emilia Romagna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: ' Friuli Venezia Giulia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLA',\r\n name: ' Lazio',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLI',\r\n name: ' Liguria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLO',\r\n name: ' Lombardia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMA',\r\n name: ' Marche',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMO',\r\n name: ' Molise',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPI',\r\n name: ' Piemonte',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPU',\r\n name: ' Puglia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSA',\r\n name: ' Sardegna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSI',\r\n name: ' Sicilia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTO',\r\n name: ' Toscana',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: ' Trentino Alto Adige',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAT',\r\n name: ' Prov. Aut. Trento',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RUM',\r\n name: ' Umbria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \" Valle D'Aosta\",\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVE',\r\n name: ' Veneto',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GC',\r\n name: 'Giurisprudenza comunitaria',\r\n shortName: 'Giur. comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GN',\r\n name: 'Giurisprudenza nazionale',\r\n shortName: 'Giur. nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'TN',\r\n name: 'Normativa tecnica',\r\n shortName: 'Tecnica',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'TI',\r\n name: 'Normativa tecnica internazionale',\r\n shortName: 'Tecnica internaz.',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },*/\r\n {\r\n value: 'NI',\r\n name: 'Normativa internazionale',\r\n shortName: 'Internazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'SN',\r\n name: 'Documentazione scientifica',\r\n shortName: 'Scientifica',\r\n group: 'S',\r\n channels: '|SA|',\r\n } */\r\n]\r\n\r\nexport const ClipperSectorTypes: NameValueItem<string>[] =\r\n [\r\n { parentValue: \"LN\", value: \"10\", name: \"Circolare Ministeriale\" },\r\n { parentValue: \"LN\", value: \"100\", name: \"Rettifica (naz.)\" },\r\n { parentValue: \"LR\", value: \"102\", name: \"Rettifica (reg.)\" },\r\n { parentValue: \"NI\", value: \"104\", name: \"Regolamento UNECE\" },\r\n { parentValue: \"SN\", value: \"105\", name: \"Documento\" },\r\n { parentValue: \"TN\", value: \"106\", name: \"Direttiva (Enti e Istituti)\" },\r\n { parentValue: \"TI\", value: \"107\", name: \"Normativa Tecnica Internazionale\" },\r\n { parentValue: \"LR\", value: \"11\", name: \"Circolare Pres. Giunta Reg\" },\r\n { parentValue: \"LC\", value: \"111\", name: \"Decisione (CEE)\" },\r\n { parentValue: \"LC\", value: \"112\", name: \"Decisione (CE)\" },\r\n { parentValue: \"LC\", value: \"113\", name: \"Decisione (UE)\" },\r\n { parentValue: \"LC\", value: \"114\", name: \"Decisione delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"115\", name: \"Decisione di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"116\", name: \"Regolamento (CEE)\" },\r\n { parentValue: \"LC\", value: \"117\", name: \"Regolamento (CE)\" },\r\n { parentValue: \"LC\", value: \"118\", name: \"Regolamento (UE)\" },\r\n { parentValue: \"LC\", value: \"119\", name: \"Regolamento delegato (UE)\" },\r\n { parentValue: \"LR\", value: \"12\", name: \"Direttiva (reg.)\" },\r\n { parentValue: \"LC\", value: \"120\", name: \"Regolamento di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"121\", name: \"Direttiva (CEE)\" },\r\n { parentValue: \"LC\", value: \"122\", name: \"Direttiva (CE)\" },\r\n { parentValue: \"LC\", value: \"123\", name: \"Direttiva (UE)\" },\r\n { parentValue: \"LC\", value: \"124\", name: \"Direttiva delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"125\", name: \"Direttiva di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"126\", name: \"Comunicazione (CE)\" },\r\n { parentValue: \"LC\", value: \"127\", name: \"Comunicazione (UE)\" },\r\n { parentValue: \"LC\", value: \"128\", name: \"Raccomandazione (CEE)\" },\r\n { parentValue: \"LC\", value: \"129\", name: \"Raccomandazione (CE)\" },\r\n { parentValue: \"LN\", value: \"13\", name: \"Comunicato (naz.)\" },\r\n { parentValue: \"LC\", value: \"130\", name: \"Raccomandazione (UE)\" },\r\n { parentValue: \"LC\", value: \"131\", name: \"Posizione Comune (CE)\" },\r\n { parentValue: \"LC\", value: \"132\", name: \"Posizione Comune (UE)\" },\r\n { parentValue: \"LC\", value: \"133\", name: \"Risoluzione\" },\r\n { parentValue: \"LC\", value: \"134\", name: \"Trattato\" },\r\n { parentValue: \"LC\", value: \"135\", name: \"Rettifica\" },\r\n { parentValue: \"LC\", value: \"138\", name: \"Parere\" },\r\n { parentValue: \"LC\", value: \"139\", name: \"Accordi (CE)\" },\r\n { parentValue: \"NI\", value: \"14\", name: \"Convenzione Internazionale\" },\r\n { parentValue: \"LC\", value: \"140\", name: \"Atti diversi (CE/UE)\" },\r\n { parentValue: \"GC\", value: \"141\", name: \"Sentenza (CE)\" },\r\n { parentValue: \"GC\", value: \"142\", name: \"Sentenza (UE)\" },\r\n { parentValue: \"GC\", value: \"143\", name: \"Ordinanza (CE)\" },\r\n { parentValue: \"GC\", value: \"144\", name: \"Ordinanza (UE)\" },\r\n { parentValue: \"LC\", value: \"145\", name: \"Direttiva (Euratom)\" },\r\n { parentValue: \"LC\", value: \"146\", name: \"Decisione (Euratom)\" },\r\n { parentValue: \"LC\", value: \"147\", name: \"Regolamento (Euratom)\" },\r\n { parentValue: \"LC\", value: \"148\", name: \"Raccomandazione (Euratom)\" },\r\n { parentValue: \"LN\", value: \"15\", name: \"Costituzione della Repubblica\" },\r\n { parentValue: \"LN\", value: \"16\", name: \"Linee guida (naz.)\" },\r\n { parentValue: \"LN\", value: \"17\", name: \"Circolare Commissariale\" },\r\n { parentValue: \"LN\", value: \"18\", name: \"Decreto Commissariale\" },\r\n { parentValue: \"LR\", value: \"19\", name: \"Decreto dell'Assessore Regionale\" },\r\n { parentValue: \"TN\", value: \"20\", name: \"Comunicato (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"21\", name: \"Decreto Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"22\", name: \"Decreto Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"23\", name: \"Decreto Pres. Giunta Reg.\" },\r\n { parentValue: \"LR\", value: \"24\", name: \"Decreto Pres. Giunta Prov.\" },\r\n { parentValue: \"LN\", value: \"25\", name: \"Decreto Presidente Repubblica\" },\r\n { parentValue: \"LN\", value: \"26\", name: \"Documento di consultazione\" },\r\n { parentValue: \"LN\", value: \"27\", name: \"Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"28\", name: \"Decreto Legge Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"29\", name: \"D.Lgs. Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"3\", name: \"Direttiva (naz.)\" },\r\n { parentValue: \"LN\", value: \"30\", name: \"D.Lgs. Governo\" },\r\n { parentValue: \"LR\", value: \"31\", name: \"Delib. Consiglio Prov.\" },\r\n { parentValue: \"LN\", value: \"32\", name: \"D.Lgs. Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"33\", name: \"Decreto Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"34\", name: \"Decreto Ministeriale\" },\r\n { parentValue: \"LN\", value: \"35\", name: \"Deliberazione (naz.)\" },\r\n { parentValue: \"LR\", value: \"36\", name: \"Delib. Consiglio Reg.\" },\r\n { parentValue: \"LR\", value: \"37\", name: \"Delib. Giunta Prov.\" },\r\n { parentValue: \"LR\", value: \"38\", name: \"Delib. Giunta Reg.\" },\r\n { parentValue: \"LN\", value: \"4\", name: \"Accordo\" },\r\n { parentValue: \"TN\", value: \"40\", name: \"Delibera (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"41\", name: \"Decreto Penale\" },\r\n { parentValue: \"LN\", value: \"42\", name: \"Lettera Circolare (Comitati)\" },\r\n { parentValue: \"LN\", value: \"43\", name: \"Lettera Circolare Ministeriale\" },\r\n { parentValue: \"TN\", value: \"44\", name: \"Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"45\", name: \"Istruzione Tecnica\" },\r\n { parentValue: \"LR\", value: \"46\", name: \"Circolare dell'Assessore Regionale\" },\r\n { parentValue: \"LN\", value: \"47\", name: \"Determinazione (naz.)\" },\r\n { parentValue: \"LN\", value: \"48\", name: \"Legge\" },\r\n { parentValue: \"LR\", value: \"49\", name: \"Legge Prov. Aut.\" },\r\n { parentValue: \"LR\", value: \"5\", name: \"Decreto Assessore Prov.\" },\r\n { parentValue: \"LR\", value: \"50\", name: \"Legge Regionale\" },\r\n { parentValue: \"LR\", value: \"51\", name: \"Linee guida (reg.)\" },\r\n { parentValue: \"TN\", value: \"52\", name: \"Regolamento (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"53\", name: \"Fascicolo (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"54\", name: \"Ordinanza\" },\r\n { parentValue: \"LR\", value: \"55\", name: \"Ordinanza Pres. Reg.\" },\r\n { parentValue: \"LN\", value: \"56\", name: \"Nota Ministeriale\" },\r\n { parentValue: \"LN\", value: \"57\", name: \"Ordinanza Ministeriale\" },\r\n { parentValue: \"LN\", value: \"58\", name: \"Circolare (Comitati)\" },\r\n { parentValue: \"TN\", value: \"59\", name: \"Lettera Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"NI\", value: \"6\", name: \"Accordo Multilaterale\" },\r\n { parentValue: \"TN\", value: \"60\", name: \"Decreto (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"61\", name: \"Decreto del Capo del Governo\" },\r\n { parentValue: \"GN\", value: \"62\", name: \"Ricorso\" },\r\n { parentValue: \"GN\", value: \"63\", name: \"Decisione\" },\r\n { parentValue: \"LR\", value: \"65\", name: \"Regolamento Regionale\" },\r\n { parentValue: \"LN\", value: \"66\", name: \"Regio Decreto\" },\r\n { parentValue: \"LN\", value: \"67\", name: \"Regio Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"68\", name: \"Regio Decreto Legislativo\" },\r\n { parentValue: \"LR\", value: \"69\", name: \"Altri documenti (reg.)\" },\r\n { parentValue: \"LR\", value: \"70\", name: \"Comunicato (reg.)\" },\r\n { parentValue: \"LN\", value: \"71\", name: \"Statuto delle Regioni Ordinarie\" },\r\n { parentValue: \"GN\", value: \"72\", name: \"Sentenza\" },\r\n { parentValue: \"TN\", value: \"73\", name: \"Altri documenti (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"74\", name: \"Prassi di riferimento\" },\r\n { parentValue: \"LN\", value: \"75\", name: \"Altri documenti (naz.)\" },\r\n { parentValue: \"LN\", value: \"76\", name: \"Provvedimento (naz.)\" },\r\n { parentValue: \"TN\", value: \"77\", name: \"Pubblicazione (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"79\", name: \"Linee guida (Enti ed Istituti)\" },\r\n { parentValue: \"LR\", value: \"80\", name: \"Decreto del Dirigente (reg.)\" },\r\n { parentValue: \"LR\", value: \"81\", name: \"Determinazione del Dirigente (reg.)\" },\r\n { parentValue: \"LN\", value: \"82\", name: \"Ordinanza Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"83\", name: \"Circolare (reg.)\" },\r\n { parentValue: \"TN\", value: \"84\", name: \"Istruzione Operativa (Enti e Istituti)\" },\r\n { parentValue: \"LR\", value: \"85\", name: \"Provvedimento (reg.)\" },\r\n { parentValue: \"TN\", value: \"86\", name: \"Quaderno\" },\r\n { parentValue: \"LR\", value: \"9\", name: \"Ordinanza Pres. Prov.\" },\r\n { parentValue: \"LN\", value: \"91\", name: \"Ordinanza Commissariale\" },\r\n { parentValue: \"LN\", value: \"93\", name: \"Risoluzione (naz.)\" },\r\n { parentValue: \"TN\", value: \"94\", name: \"Nota (Enti e Istituti)\" },\r\n { parentValue: \"TN\", value: \"97\", name: \"Opuscolo Tecnico\" },\r\n { parentValue: \"TN\", value: \"98\", name: \"Norma Tecnica\" },\r\n { parentValue: \"NI\", value: \"99\", name: \"Norma Tecnica Internaz.\" }\r\n ]\r\n\r\nexport const ClipperAuthors: SectorInfo[] = [\r\n {\r\n value: \"1CAM\",\r\n sectorId: undefined,\r\n name: \"Camera dei Deputati\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MA\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAE\",\r\n sectorId: undefined,\r\n name: \"Ministero degli Affari Esteri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAP\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Attività Produttive\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MARP\",\r\n sectorId: undefined,\r\n name: \"Ministero per gli Affari Regionali e per i Problemi Istituzionali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura, della Sovranità Alimentare e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASE\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Sicurezza Energetica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATT\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATTM\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio e del Mare\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Aree Urbane\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni e delle Attività Culturali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBCA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni Culturali e Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MC\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Comunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCE\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio con l'Estero\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCI\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio Internazionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento delle Politiche Comunitarie\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCRU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Ricerca Universitaria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Cultura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MDIF\",\r\n sectorId: undefined,\r\n name: \"Ministero della Difesa\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MEF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Economia e delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MFP\",\r\n sectorId: undefined,\r\n name: \"Ministero della Funzione Pubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MG\",\r\n sectorId: undefined,\r\n name: \"Ministero della Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MGG\",\r\n sectorId: undefined,\r\n name: \"Ministero di Grazia e Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MI\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Interno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MICA\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Industria, il Commercio e l'Artigianato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIME\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione e del Merito\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMI\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Imprese e del Made in Italy\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMS\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e della Mobilità Sostenibili\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MINF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MISM\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Intervento Straordinario nel Mezzogiorno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIUR\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione, Università e Ricerca\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLP\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPO\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Previdenza Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLSPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro, della Salute e delle Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MMM\",\r\n sectorId: undefined,\r\n name: \"Ministero della Marina Mercantile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAFT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole Alimentari e Forestali e del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento della Protezione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPI\",\r\n sectorId: undefined,\r\n name: \"Ministero della Pubblica Istruzione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Poste e Telecomunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Risorse Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRP\",\r\n sectorId: undefined,\r\n name: \"Ministero per i Rapporti Parlamentari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MS\",\r\n sectorId: undefined,\r\n name: \"Ministero della Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSA\",\r\n sectorId: undefined,\r\n name: \"Ministero della Salute\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSE\",\r\n sectorId: undefined,\r\n name: \"Ministero dello Sviluppo Economico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MT\",\r\n sectorId: undefined,\r\n name: \"Ministero del Tesoro\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e dell'Aviazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTE\",\r\n sectorId: undefined,\r\n name: \"Ministero della Transizione Ecologica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTNA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e della Navigazione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTRA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo e dello Spettacolo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MURS\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Universitá e della Ricerca Scientifica e Tecnica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PCM\",\r\n sectorId: undefined,\r\n name: \"Presidente del Consiglio dei Ministri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PR\",\r\n sectorId: undefined,\r\n name: \"Presidente della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1SEN\",\r\n sectorId: undefined,\r\n name: \"Senato della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEG\",\r\n sectorId: undefined,\r\n name: \"Autorità per l'Energia Elettrica e il Gas\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEGSI\",\r\n sectorId: undefined,\r\n name: \"Autorità Energia Elettrica e Gas e Sistema Idrico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARERA\",\r\n sectorId: undefined,\r\n name: \"Autorità di Regolazione per Energia, Reti e Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARIR\",\r\n sectorId: undefined,\r\n name: \"Autorità di Vigilanza sulle Risorse Idriche e sui Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVCP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Contratti Pubblici di Lavori, Servizi e Forniture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVLP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAGA\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Naz. Gestori Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAN\",\r\n sectorId: undefined,\r\n name: \"Comitato per le Aree Naturali protette.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDEA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Ambientale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDMN\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per la Sicurezza dei Materiali Nucleari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDRA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Rifiuti e la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIAB\",\r\n sectorId: undefined,\r\n name: \"Comitato Istituzionale Autorità di Bacino\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CICP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Coordinamento Politica Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Prezzi\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPE\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPESS\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica e lo Sviluppo Sostenibile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIR\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per i Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CITA\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSR\",\r\n sectorId: undefined,\r\n name: \"Conferenza Permanente Rapporti Stato e Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSSR\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Imprese Esercenti Servizi Smaltimento Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CUN\",\r\n sectorId: undefined,\r\n name: \"Conferenza Unificata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2GPDP\",\r\n sectorId: undefined,\r\n name: \"Garante per la Protezione dei Dati Personali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CCEE\",\r\n sectorId: \"LC\",\r\n name: \"Commissario CEE/CE\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CDR\",\r\n sectorId: \"LC\",\r\n name: \"Comitato delle Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CEDM\",\r\n sectorId: \"LC\",\r\n name: \"Corte Europea per i Diritti dell'Uomo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CES\",\r\n sectorId: \"LC\",\r\n name: \"Comitato Economico e Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCE\",\r\n sectorId: \"LC\",\r\n name: \"Corte di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCO\",\r\n sectorId: \"LC\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3COMM\",\r\n sectorId: \"LC\",\r\n name: \"Commissione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONS\",\r\n sectorId: \"LC\",\r\n name: \"Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONSUE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento e Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CWJ\",\r\n sectorId: \"LC\",\r\n name: \"Corte Internazionale di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3EFTA\",\r\n sectorId: \"LC\",\r\n name: \"EFTA - Associaz. Europea di Libero Scambio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3OTIF\",\r\n sectorId: \"LC\",\r\n name: \"OTIF - Intergov. Org. for International Carriage by Rail\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3PAE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3T1CE\",\r\n sectorId: \"LC\",\r\n name: \"Tribunale di Primo Grado\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3UNECE\",\r\n sectorId: \"LC\",\r\n name: \"UNECE - United Nations Economic Commission for Europe\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAB\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Bolzano\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAT\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Trento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RAB\",\r\n sectorId: \"LR\",\r\n name: \"Regione Abruzzo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RBA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Basilicata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAL\",\r\n sectorId: \"LR\",\r\n name: \"Regione Calabria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Campania\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4REM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Emilia Romagna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RFVG\",\r\n sectorId: \"LR\",\r\n name: \"Regione Friuli Venezia Giulia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lazio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Liguria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lombardia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Marche\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Molise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Piemonte\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPU\",\r\n sectorId: \"LR\",\r\n name: \"Regione Puglia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sardegna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTAA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Trentino Alto Adige\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Toscana\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RUM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Umbria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Valle D'Aosta\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVE\",\r\n sectorId: \"LR\",\r\n name: \"Regione Veneto\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CAS\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CASA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CC\",\r\n sectorId: \"GN\",\r\n name: \"Corte Costituzionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCC\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCP\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Penale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDC\",\r\n sectorId: \"GN\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDS\",\r\n sectorId: \"GN\",\r\n name: \"Consiglio di Stato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CGAS\",\r\n sectorId: \"GN\",\r\n name: \"Cons. di Giustizia Amm.va della Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTP\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Provinciale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTR\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5GDP\",\r\n sectorId: \"GN\",\r\n name: \"Giudice di Pace\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5P\",\r\n sectorId: \"GN\",\r\n name: \"Pretura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PCA\",\r\n sectorId: \"GN\",\r\n name: \"Procura Generale Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PR\",\r\n sectorId: \"GN\",\r\n name: \"Procura della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5T\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TAR\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Amministrativo Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TGA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Regionale acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TSA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Superiore delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CAC\",\r\n sectorId: \"TN\",\r\n name: \"Codex Alimentarius Commission\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CEI\",\r\n sectorId: \"TN\",\r\n name: \"C.E.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CNR\",\r\n sectorId: \"TN\",\r\n name: \"C.N.R.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ENPI\",\r\n sectorId: \"TN\",\r\n name: \"E.N.P.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INAI\",\r\n sectorId: \"TN\",\r\n name: \"I.N.A.I.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INPS\",\r\n sectorId: \"TN\",\r\n name: \"I.N.P.S.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISO\",\r\n sectorId: \"NI\",\r\n name: \"I.S.O.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISPS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.P.E.S.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.S. - Istituto Superiore di Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6NSF\",\r\n sectorId: \"TN\",\r\n name: \"NSF International\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6UNI\",\r\n sectorId: \"TN\",\r\n name: \"U.N.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6USDA\",\r\n sectorId: \"TN\",\r\n name: \"USDA - United States Department of Agriculture\",\r\n channels: undefined\r\n }\r\n]\r\n\r\nexport const ClipperSources: NameValueItem<string>[] = [\r\n {\r\n value: 'ACCML',\r\n name: 'Accordi Multilaterali',\r\n },\r\n {\r\n value: 'AEEG',\r\n name: \"Sito Autorità per l'Energia Elettrica, il Gas e il Sistema Idrico\",\r\n },\r\n {\r\n value: 'ARERA',\r\n name: 'Sito Autorità di Regolazione per Energia, Reti e Ambiente',\r\n },\r\n {\r\n value: 'BUR',\r\n name: 'Bollettino Uff. Regione',\r\n },\r\n {\r\n value: 'BUS',\r\n name: 'Suppl. speciale al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSO',\r\n name: 'Suppl. ordin. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSS',\r\n name: 'Suppl. straord. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'GU',\r\n name: 'Gazzetta Ufficiale Italiana',\r\n },\r\n {\r\n value: 'GUCC',\r\n name: 'Gazz. Uff. Corte Costituzionale',\r\n },\r\n {\r\n value: 'GUCE',\r\n name: 'Gazzetta ufficiale delle Comunità europee',\r\n },\r\n {\r\n value: 'GUES',\r\n name: 'Gazz. Uff. Ediz. Speciale',\r\n },\r\n {\r\n value: 'GURS',\r\n name: 'Gazz. Uff. Regione Sicilia',\r\n },\r\n {\r\n value: 'GUS',\r\n name: 'Gazz. Uff. Serie Speciale',\r\n },\r\n {\r\n value: 'GUSO',\r\n name: 'Suppl. ordin. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUSS',\r\n name: 'Suppl. straord. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUUE',\r\n name: 'Gazzetta ufficiale dell’Unione europea',\r\n },\r\n {\r\n value: 'MAC',\r\n name: 'Massimario Civile',\r\n },\r\n {\r\n value: 'MAP',\r\n name: 'Massimario Penale',\r\n },\r\n {\r\n value: 'NONE',\r\n name: 'Fonti diverse',\r\n }\r\n]\r\n\r\n\r\nexport interface ClipperSettingsInfo {\r\n lastUpdated?: Date;\r\n enableNotifications: boolean;\r\n channels?: ClipperChannelSettings[];\r\n bulletinTaxonomy?: string[];\r\n bulletinOrigins?: string[];\r\n enableBulletinFilter: boolean;\r\n}\r\n\r\nexport class ClipperUpdateChannelsStateParams {\r\n activeChannels: ClipperChannel[] = [];\r\n}\r\n\r\nexport interface ClipperChannelSettingsItem<T> {\r\n name: string;\r\n value: T;\r\n checked: boolean;\r\n}\r\n\r\nexport class ClipperChannelSettings {\r\n channelId?: ClipperChannel;\r\n channelName?: string;\r\n isEnabled?: boolean = false;\r\n isSuspended?: boolean = false;\r\n isActive?: boolean = false;\r\n sectors: ClipperChannelSettingsItem<string>[] = [];\r\n regions: ClipperChannelSettingsItem<string>[] = [];\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given sector codes\r\n * matches a sector assigned to this channel.\r\n * @param values - Array of sector code strings to test against.\r\n */\r\n hasAnyOfSectors(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.sectors.some(s => s.value === v));\r\n }\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given region codes\r\n * matches a region assigned to this channel.\r\n * @param values - Array of region code strings to test against.\r\n */\r\n hasAnyOfRegions(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.regions.some(r => r.value === v));\r\n }\r\n\r\n}\r\n\r\nexport interface ClipperUserChannelInfo {\r\n channel: ClipperChannel;\r\n channelName?: string;\r\n expiringDate: string;\r\n isTrial?: boolean;\r\n isDisabled: boolean;\r\n isSuspended: boolean;\r\n isDvd: boolean;\r\n isActive: boolean;\r\n documentsViewable?: number;\r\n documentsViewed?: number;\r\n settings?: ClipperChannelSettings;\r\n}\r\n\r\nexport interface ClipperUserInfo {\r\n userId: number;\r\n customerId?: number;\r\n companyName: string;\r\n displayName: string;\r\n firstName: string;\r\n email: string;\r\n oauth?: boolean;\r\n sessionId?: string;\r\n scope: number;\r\n isAuthenticated: boolean;\r\n isTemporary: boolean;\r\n hasTrial: boolean;\r\n hasTeam: boolean;\r\n hasSharedNotes: boolean;\r\n hasSharedArchive: boolean;\r\n hasSharedCalendar: boolean;\r\n hasBulletin: boolean;\r\n hasAI: boolean;\r\n hasAIAssistant: boolean;\r\n hasAIEditor: boolean;\r\n channels: ClipperUserChannelInfo[];\r\n firstChannelTrial: ClipperUserChannelInfo;\r\n trialInfo?: ClipperUserTrialInfo;\r\n}\r\n\r\nexport interface ClipperLoginResult extends LoginResult<ClipperUserInfo> {\r\n settings?: ClipperChannelSettings[];\r\n}\r\n\r\nexport interface ClipperLoginInfo {\r\n context?: ClipperUserInfo;\r\n complianceContext?: any;\r\n channels?: ClipperChannelSettings[];\r\n oauth?: LoginOAuthType;\r\n remember?: boolean;\r\n}\r\n\r\nexport enum ClipperQueryDocumentFlags {\r\n None = 0,\r\n TitleOnly = 1,\r\n AbrogatedOnly = 1 << 1,\r\n NotAbrogatedOnly = 1 << 2,\r\n CommentedOnly = 1 << 3,\r\n UseSemanticSearch = 1 << 5,\r\n NotRead = 1 << 6,\r\n ExcludeUserFilters = 1 << 7\r\n}\r\n\r\nexport class ClipperSearchParams {\r\n version: number = 6;\r\n searchId?: number;\r\n searchName?: string;\r\n text?: string;\r\n title?: string;\r\n titleOnly?: boolean = false;\r\n showUnreadDocumentsOnly?: boolean = false;\r\n showCommentedDocumentsOnly?: boolean = false;\r\n showNotAbrogatedDocumentsOnly?: boolean = false;\r\n number?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n year?: number;\r\n sourceNumber?: string;\r\n source?: string;\r\n sourceFromDate?: Date;\r\n sourceToDate?: Date;\r\n sourceYear?: number;\r\n sector?: string;\r\n sectors?: SectorInfo[];\r\n topic?: string;\r\n topics?: NameValueItem<string>[];\r\n taxonomy?: string;\r\n taxonomies?: NameValueItem<string>[];\r\n taxonomyPath?: string;\r\n taxonomyNode?: string;\r\n type?: string;\r\n types?: NameValueItem<string>[];\r\n tag?: string;\r\n tags?: NameValueItem<string>[];\r\n author?: string;\r\n authors?: NameValueItem<string>[];\r\n changeReason?: number;\r\n changedNumber?: string;\r\n changedYear?: number;\r\n changedTitle?: string;\r\n changedId?: string;\r\n modifierId?: string;\r\n modifierNumber?: string;\r\n modifierYear?: number;\r\n modifierTitle?: string;\r\n model?: ClipperModel;\r\n models?: ClipperModel[];\r\n module?: ClipperModule;\r\n modules?: NameValueItem<ClipperModule>[];\r\n mode?: ClipperQueryReferencesMode;\r\n channels?: NameValueItem<ClipperChannel>[] = [...ClipperChannels];\r\n count?: number = 15;\r\n id?: string;\r\n anchor?: string;\r\n excludeTextReferences?: boolean = false;\r\n excludeNotesReferences?: boolean = false;\r\n useModifierInfo?: boolean = false;\r\n returnModifierInfo?: boolean = false;\r\n flags?: ClipperQueryDocumentFlags;\r\n first?: number = 0;\r\n sortMode?: number;\r\n}\r\n\r\nexport interface ClipperReferencesSearchParams {\r\n documentId: string;\r\n year?: number;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n model?: string;\r\n mode?: ClipperQueryReferencesMode;\r\n excludeTextReferences?: boolean;\r\n excludeNotesReferences?: boolean;\r\n useModifierInfo?: boolean;\r\n returnModifierInfo?: boolean;\r\n count?: number;\r\n first?: number;\r\n}\r\n\r\nexport enum ClipperDocumentContainer {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n OrangeProject = 4,\r\n Energia = 8,\r\n DGInfo = 0x10,\r\n DLGS231 = 0x20,\r\n All = 0x3F\r\n}\r\n\r\nexport const ClipperDocumentChangeReasons: NameValueItem<number>[] = [\r\n { name: 'Abrogazione', value: 1 },\r\n { name: 'Annullamento', value: 5 },\r\n { name: 'Modifica', value: 2 },\r\n { name: 'Sostiuzione', value: 3 },\r\n { name: 'Segnalazione', value: 6 },\r\n { name: 'Rettifica', value: 7 },\r\n]\r\n\r\nexport interface ClipperDocumentAnchorInfo {\r\n documentId?: string;\r\n type?: number;\r\n typeDescription?: string;\r\n text?: string;\r\n title?: string;\r\n description?: string;\r\n uri: string;\r\n ordinal?: string;\r\n score?: number;\r\n chunk?: number;\r\n veryRelevant?: boolean;\r\n value?: string;\r\n level?: number;\r\n}\r\n\r\nexport interface ClipperDocumentRelevantChunkHit {\r\n id?: number;\r\n score: string;\r\n text: string;\r\n index?: number;\r\n uri?: string;\r\n}\r\n\r\nexport interface ClipperDocumentRelevants {\r\n items: ClipperDocumentAnchorInfo[];\r\n hits: number;\r\n hit: number;\r\n chunks: number;\r\n}\r\n\r\nexport interface ClipperDocumentNoteTracking {\r\n id: string;\r\n userMailId: number;\r\n email?: string;\r\n sentDate: Date;\r\n openDate?: Date;\r\n}\r\n\r\nexport interface ClipperDocumentNote {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n documentId?: string;\r\n documentTitle?: string;\r\n color?: string;\r\n name?: string;\r\n note?: string;\r\n trackings?: ClipperDocumentNoteTracking[];\r\n trackingsCount?: number;\r\n trackingsOpenedCount?: number;\r\n expiringDate?: Date; \r\n isExpired?: boolean;\r\n isTroubled?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n created?: Date;\r\n}\r\n\r\nexport interface ClipperNotesSearchParams extends QueryModel {\r\n documentId?: string;\r\n teamId?: string;\r\n teamTitle?: string;\r\n color?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n state?: number;\r\n}\r\n\r\nexport interface ClipperNotesSearchResult extends QueryResultModel<ClipperDocumentNote> {\r\n teams: NameValueItem<string>[];\r\n}\r\n\r\nexport interface ClipperDocumentInfo {\r\n id?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n model?: number;\r\n modelName?: string;\r\n module?: number;\r\n moduleName?: string;\r\n channelName?: string;\r\n group?: string;\r\n title2?: string;\r\n title1?: string;\r\n tags?: string;\r\n topics?: string;\r\n number?: string;\r\n date?: Date;\r\n description?: string;\r\n publishingDate?: Date;\r\n pictureId?: string;\r\n sourceNumber?: string;\r\n sourceDate?: Date;\r\n source?: string;\r\n sector?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n author?: string;\r\n anchors?: ClipperDocumentAnchorInfo[];\r\n notes?: ClipperDocumentNote[];\r\n chunks?: ClipperDocumentAnchorInfo[];\r\n chunksList?: string;\r\n taxonomy?: string;\r\n taxonomyPath?: string;\r\n info?: string;\r\n isRead?: boolean;\r\n isExportable?: boolean;\r\n isCommented?: boolean;\r\n isJuris?: boolean;\r\n isOver?: boolean;\r\n isTrial?: boolean;\r\n isNew?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isMenuOpen?: boolean;\r\n applicableFromDate?: Date;\r\n validityState?: number;\r\n validFromDate?: Date;\r\n validUntilDate?: Date;\r\n validityDescription?: string;\r\n validityInfo?: string;\r\n expiringDate?: Date;\r\n expiringDescription?: string;\r\n expiringInfo?: string;\r\n popularity?: number;\r\n part?: number;\r\n primaryId?: string;\r\n primaryDescription?: string;\r\n primaryModel?: number;\r\n hasPrimary?: boolean;\r\n secondaryId?: string;\r\n bag?: any;\r\n lastUpdate?: string;\r\n\r\n}\r\n\r\nexport class ClipperSearchResult {\r\n days?: string;\r\n interval?: string;\r\n items?: ClipperDocumentInfo[];\r\n facets?: ClipperSearchFacetsSnapshot = new ClipperSearchFacetsSnapshot();\r\n tags?: NameValueItem<string>[];\r\n total?: number;\r\n terms?: string[];\r\n searchInfo?: any;\r\n searchParams?: ClipperSearchParams = new ClipperSearchParams();\r\n snapshotMode?: ClipperQueryReferencesMode;\r\n}\r\n\r\nexport interface ClipperSearchFacet {\r\n type: number;\r\n typeName: string;\r\n title: string;\r\n value: string;\r\n count: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetGroup {\r\n name: string;\r\n selectedValue?: string;\r\n selectedValueDescription?: string;\r\n values: ClipperSearchFacet[];\r\n index: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetsResult {\r\n interval?: string;\r\n facets?: ClipperSearchFacet[][];\r\n total?: number;\r\n}\r\n\r\n\r\nexport class ClipperSearchFacetsSnapshot {\r\n groups: ClipperSearchFacetGroup[] = [];\r\n usedGroups: ClipperSearchFacetGroup[] = [];\r\n hasFacets: boolean = false;\r\n hasMoreFacets: boolean = false;\r\n hasTooManyResults: boolean = false;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n type?: string;\r\n reason?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n interval?: string;\r\n}\r\n\r\nexport interface ClipperSearchCalendarSnapshotMonth {\r\n days: number[];\r\n monthShortName: string;\r\n monthName: string;\r\n month: number;\r\n year: number;\r\n total: number;\r\n expired: number;\r\n expiring: number;\r\n}\r\n\r\nexport class ClipperSearchCalendarSnapshotResult {\r\n months?: ClipperSearchCalendarSnapshotMonth[];\r\n}\r\n\r\n\r\n\r\nexport enum ClipperSort {\r\n Default = 0,\r\n Relevance = 1,\r\n DateAsc = 2,\r\n DateDesc = 3,\r\n SourceDateAsc = 7,\r\n SourceDateDesc = 8,\r\n Popularity = 5\r\n}\r\n\r\nexport enum ClipperQueryReferencesMode {\r\n ReferencesIn = 1,\r\n ReferencesOut = 2,\r\n ChangesIn = 3,\r\n ChangesOut = 5,\r\n Juris = 4\r\n}\r\n\r\nexport enum ClipperFacet {\r\n Sector = 1,\r\n Year = 2,\r\n DocumentType = 3,\r\n Topic = 4,\r\n Article = 5,\r\n Author = 6,\r\n Reason = 95\r\n}\r\n\r\nexport interface ClipperOTPInfo {\r\n code: string;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n}\r\n\r\nexport enum ClipperExportDocumentsFormat {\r\n Deafault = 1,\r\n iCalendar = 2\r\n}\r\n\r\nexport interface ClipperExportDocumentsParams {\r\n query: ClipperSearchParams;\r\n ids: string[];\r\n format?: ClipperExportDocumentsFormat;\r\n}\r\n\r\nexport interface ClipperSendDocumentsByEmailParams extends SendToDialogResult {\r\n ids?: string[];\r\n isCalendar?: boolean;\r\n public?: string;\r\n userNoteId?: number;\r\n}\r\n\r\n\r\nexport interface ClipperNotifyDocumentNoteParams extends SendToDialogResult {\r\n userNoteId?: number;\r\n notifyIfNotOpen?: boolean;\r\n resend?: boolean;\r\n}\r\n\r\nexport interface ClipperDocumentStructure {\r\n id: string;\r\n title: string;\r\n items?: ClipperDocumentAnchorInfo[];\r\n}\r\n\r\n\r\nexport interface ClipperSearchFilter {\r\n container: ClipperDocumentContainer;\r\n models: number[];\r\n sectors: string[];\r\n regions: string[];\r\n notifications: number[];\r\n isEnabled: boolean;\r\n isActive: boolean;\r\n}\r\nexport interface ClipperTaxonomyParams {\r\n countItems: boolean;\r\n model: ClipperModel;\r\n userFilters?: ClipperSearchFilter[];\r\n}\r\n\r\nexport interface ClipperUserSearch {\r\n id?: number;\r\n userId?: number;\r\n name?: string;\r\n module?: ClipperModule;\r\n data?: string;\r\n}\r\n\r\nexport interface ClipperUserWorkingDocument {\r\n userId?: number;\r\n documentId?: string;\r\n documentDescriptor?: string;\r\n title1?: string;\r\n title2?: string;\r\n timestamp?: string;\r\n}\r\n\r\nexport interface ClipperDeleteWorkingDocumentsParams {\r\n documentIds: string[];\r\n deleteAll: boolean;\r\n}\r\n\r\n\r\nexport interface ClipperUserLink {\r\n id?: number;\r\n userId: number;\r\n userName?: string;\r\n key: string;\r\n}\r\n\r\nexport interface ClipperUserTrialInfo {\r\n channelName: string;\r\n expiringDate: Date;\r\n remainingDocuments: number;\r\n}\r\n\r\nexport interface ClipperArsEventInfo {\r\n id: number;\r\n location?: string;\r\n title?: string;\r\n pictureId?: string;\r\n date?: string;\r\n endDate?: string;\r\n startTime?: string;\r\n endTime?: string;\r\n hours?: number;\r\n days?: number;\r\n dateIntervalDescription?: string;\r\n durationDescription?: string;\r\n group?: string;\r\n address?: string;\r\n city?: string;\r\n isOver?: boolean;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperSearchArsEventsParams {\r\n group?: string;\r\n group1?: string;\r\n collectGroups?: boolean;\r\n collectBundles?: boolean;\r\n fromDate?: string;\r\n untilDate?: string;\r\n text?: string;\r\n sortBy?: string;\r\n count: number\r\n}\r\n\r\nexport interface ClipperSearchArsEventsResult {\r\n interval?: string;\r\n items?: ClipperArsEventInfo[];\r\n total?: number;\r\n}\r\n\r\nexport interface ClipperDocumentUpdateStateParams {\r\n documentIds: string[];\r\n isRead: boolean;\r\n}\r\n\r\nexport interface ClipperDashboardModelItem {\r\n id: ClipperModel;\r\n newItems: number;\r\n unreadItems: number;\r\n}\r\n\r\nexport interface ClipperDashboardItem {\r\n id: ClipperModule;\r\n models: ClipperDashboardModelItem[];\r\n newItems: number;\r\n unreadItems: number;\r\n lastUpdated?: string;\r\n}\r\n\r\nexport interface ClipperDashboardResult {\r\n items?: ClipperDashboardItem[];\r\n isTrial?: boolean;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n channels?: ClipperChannelSettings[];\r\n}\r\n\r\nexport class ClipperDashboard {\r\n items = signal<ClipperDashboardItem[]>([]);\r\n isTrial?: boolean = false;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n unreadItems: Signal<[ClipperModule, number][]> = computed(() => {\r\n const states: [ClipperModule, number][] = [];\r\n states.push([ClipperModule.News, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.News)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.GazzetteBollettiniEFontiDiverse, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.GazzetteBollettiniEFontiDiverse)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Giurisprudenza, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Giurisprudenza)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.ModificheAbrogazioniERinvii, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.ModificheAbrogazioniERinvii)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.AllerteAlimentari, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.AllerteAlimentari)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Approfondimenti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Approfondimenti)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.QuesitiECasiRisolti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.QuesitiECasiRisolti)?.unreadItems ?? 0]);\r\n return states;\r\n });\r\n unreadItemsByModel: Signal<[ClipperModel, number][]> = computed(() => {\r\n const states: [ClipperModel, number][] = [];\r\n this.items().forEach(item => {\r\n if (item.models) {\r\n item.models.forEach(itemModel => {\r\n states.push([itemModel.id, itemModel.unreadItems]);\r\n });\r\n } else {\r\n if (item.id == ClipperModule.News) {\r\n states.push([ClipperModel.News, item.unreadItems]);\r\n } else if (item.id == ClipperModule.GazzetteBollettiniEFontiDiverse) {\r\n states.push([ClipperModel.AggiornamentoNormativo, item.unreadItems]);\r\n } else if (item.id == ClipperModule.QuesitiECasiRisolti) {\r\n states.push([ClipperModel.Quesiti, item.unreadItems]);\r\n } else if (item.id == ClipperModule.AllerteAlimentari) {\r\n states.push([ClipperModel.AllerteAlimentari, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Approfondimenti) {\r\n states.push([ClipperModel.Articoli, item.unreadItems]);\r\n } else if (item.id == ClipperModule.ModificheAbrogazioniERinvii) {\r\n states.push([ClipperModel.Coordinamento, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Giurisprudenza) {\r\n states.push([ClipperModel.Juris, item.unreadItems]);\r\n }\r\n }\r\n })\r\n return states;\r\n });\r\n\r\n /**\r\n * Increments (or decrements) the unread item counter for the given module or model.\r\n * Triggers a signal update so computed values and templates react to the change.\r\n * @param module - The `ClipperModule` whose counter should be adjusted.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @param increment - Amount to add (use a negative value to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model: ClipperModel | undefined, increment: number): void {\r\n if (model) {\r\n for (const item of this.items()) {\r\n const itemModel = item.models?.find(x => x.id === model);\r\n if (itemModel) {\r\n itemModel.unreadItems += increment;\r\n break;\r\n }\r\n }\r\n }\r\n const item = this.items().find((x: ClipperDashboardItem) => x.id === module);\r\n if (item) {\r\n item.unreadItems += increment;\r\n }\r\n this.items.update(values => [...values]);\r\n }\r\n\r\n /**\r\n * Returns the unread-item count for the given module, or for a specific model within it.\r\n * @param module - The `ClipperModule` to query.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @returns Number of unread items, or `0` when none are found.\r\n */\r\n getUnreadItems(module: ClipperModule, model?: ClipperModel): number {\r\n if (model) {\r\n return this.unreadItemsByModel().find((x: [ClipperModel, number]) => x[0] === model)?.[1] ?? 0;\r\n }\r\n return this.unreadItems().find((x: [ClipperModule, number]) => x[0] === module)?.[1] ?? 0;\r\n }\r\n\r\n /**\r\n * Returns the sum of unread items across all tracked modules.\r\n * @returns Total unread-item count.\r\n */\r\n getTotalUnreadItems(): number {\r\n return this.unreadItems().reduce((acc, item) => acc + item[1], 0);\r\n }\r\n}\r\n\r\nexport interface ClipperDayItem {\r\n day: string;\r\n label: string;\r\n items: ClipperDayGroup[];\r\n count: number;\r\n}\r\n\r\nexport interface ClipperDayGroup {\r\n model: ClipperModel;\r\n label: string;\r\n items: ClipperDocumentInfo[];\r\n}\r\n\r\nexport interface ClipperLastDaysResult {\r\n items: ClipperDayItem[];\r\n}\r\n\r\nexport interface ClipperTopicInfo {\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport interface ClipperTeamMemberInfo {\r\n id: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n name?: string;\r\n email?: string;\r\n isAdmin?: boolean;\r\n isDisabled?: boolean;\r\n hasPermission55?: boolean;\r\n hasPermission56?: boolean;\r\n hasPermission57?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n}\r\n\r\nexport enum ClipperTeamProduct {\r\n SharedArchive = 1004676,\r\n SharedCalendar = 1004683,\r\n SharedNotes = 1013721\r\n}\r\n\r\nexport enum ClipperTeamProductPermission {\r\n SharedNotes = 55,\r\n SharedArchive = 56,\r\n SharedCalendar = 57\r\n}\r\n\r\nexport interface ClipperTeamProductInfo {\r\n permissionId: ClipperTeamProductPermission;\r\n name: string;\r\n maxMembers: number;\r\n usedMembers: number;\r\n}\r\n\r\nexport interface ClipperTeamMembersSearchResult {\r\n teamId?: string;\r\n teamTitle?: string;\r\n total?: number;\r\n customerId?: number;\r\n canEdit?: boolean;\r\n products?: ClipperTeamProductInfo[];\r\n items?: ClipperTeamMemberInfo[];\r\n}\r\n\r\nexport interface ClipperTeamsSearchParams {\r\n teamId?: string;\r\n permissionId?: number;\r\n productId?: number;\r\n adminsOnly?: boolean;\r\n activeMembersOnly?: boolean;\r\n includeRSTeams?: boolean;\r\n}\r\n\r\nexport interface ClipperTeamsSearchResult {\r\n total: number;\r\n items: NameValueItem<string>[];\r\n}\r\n\r\nexport class ClipperTeamInfo {\r\n id?: string;\r\n customerId?: number;\r\n title?: string;\r\n isDisabled?: boolean;\r\n created?: string;\r\n lastModified?: string;\r\n}\r\n\r\n\r\nexport interface ClipperContactsSearchParams extends QueryModel {\r\n teamId?: string;\r\n name?: string;\r\n includeDisabled?: boolean;\r\n}\r\n\r\nexport interface ClipperContactInfo {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n userId?: number;\r\n name?: string;\r\n emails?: string;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n}\r\n\r\nexport enum ClipperCalendarState {\r\n Open = 101,\r\n Expired = 102,\r\n Expiring = 103,\r\n Closed = 104\r\n}\r\n\r\nexport const ClipperCalendarStates: NameValueItem<ClipperCalendarState>[] = [\r\n { name: 'Aperte', value: ClipperCalendarState.Open },\r\n { name: 'Chiuse', value: ClipperCalendarState.Closed },\r\n { name: 'Scadute', value: ClipperCalendarState.Expired },\r\n { name: 'Imminenti', value: ClipperCalendarState.Expiring }\r\n]\r\n\r\n\r\nexport class ClipperCalendarSearchParams {\r\n id?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n teamId?: string;\r\n text?: string;\r\n month?: number;\r\n year?: number;\r\n sortDescending?: boolean;\r\n state?: ClipperCalendarState;\r\n recurrentOnly?: boolean;\r\n first?: number = 0;\r\n count?: number = 15\r\n}\r\n\r\nexport interface ClipperCalendarSearchResult {\r\n interval: string;\r\n items: ClipperDeadlineInfo[];\r\n days: number[];\r\n teams: NameValueItem<string>[];\r\n total: number;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperDeadlineInfo {\r\n id?: string;\r\n companyId?: number;\r\n userId?: number;\r\n teamId: string;\r\n teamName?: string;\r\n group?: string;\r\n description?: string;\r\n documentTitle?: string;\r\n documentId?: string;\r\n documentNumber?: string;\r\n documentDate?: Date;\r\n emails?: string;\r\n expiringDate?: Date;\r\n expiredAlertSent?: boolean;\r\n expiringInfo?: string;\r\n expiringDescription?: string;\r\n nextExpiringDate?: Date;\r\n alarmDays?: number;\r\n alarmDate?: Date;\r\n alarmMemo?: string;\r\n alarmSent?: boolean;\r\n hasAlarm?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isClosed?: boolean;\r\n isClosable?: boolean;\r\n isPrivate?: boolean;\r\n isRecurrent?: boolean;\r\n recurrencePatternType?: ClipperRecurrenceType;\r\n recurrenceFrequency?: number;\r\n recurrenceEndOfMonth?: boolean;\r\n recurrenceNewId?: string;\r\n outlookAppointmentId?: string;\r\n created?: Date;\r\n lastModified?: Date;\r\n}\r\n\r\nexport interface ClipperCalendarSaveDeadlineParams {\r\n deadline: ClipperDeadlineInfo;\r\n teamIds?: string[];\r\n}\r\n\r\nexport enum ClipperCalendarCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperCalendarCopyDeadlinesParams {\r\n ids: string[];\r\n teamId: string;\r\n mode: ClipperCalendarCopyMode;\r\n}\r\n\r\nexport enum ClipperArchiveFileType {\r\n None = 0,\r\n Procedure = 1,\r\n OperatingInstructions = 2,\r\n TechnicalReport = 3,\r\n AdministrativeDocument = 4,\r\n Document = 5,\r\n OtherApplicableRules = 6,\r\n Other = 7,\r\n File = 101,\r\n Image = 102\r\n}\r\n\r\nexport const ClipperArchiveFileTypes: NameValueItem<ClipperArchiveFileType>[] = [\r\n { name: 'File', value: ClipperArchiveFileType.File },\r\n { name: 'Immagine', value: ClipperArchiveFileType.Image },\r\n { name: 'Procedura', value: ClipperArchiveFileType.Procedure },\r\n { name: 'Istruzioni operative', value: ClipperArchiveFileType.OperatingInstructions },\r\n { name: 'Relazione tecnica', value: ClipperArchiveFileType.TechnicalReport },\r\n { name: 'Documento iter amministrativo', value: ClipperArchiveFileType.AdministrativeDocument },\r\n { name: 'Documento aziendale', value: ClipperArchiveFileType.Document },\r\n { name: 'Altre norme applicabili', value: ClipperArchiveFileType.OtherApplicableRules },\r\n { name: 'Altro', value: ClipperArchiveFileType.Other }\r\n]\r\n\r\n\r\nexport enum ClipperArchiveFileStorageType {\r\n ArsCloud = 2,\r\n OtherCloud = 3\r\n}\r\nexport const ClipperArchiveFileStorageTypes: NameValueItem<ClipperArchiveFileStorageType>[] = [\r\n { name: 'ARS Cloud', value: ClipperArchiveFileStorageType.ArsCloud },\r\n { name: 'Altro cloud', value: ClipperArchiveFileStorageType.OtherCloud }\r\n]\r\n\r\n\r\nexport interface ClipperArchiveFileInfo {\r\n id?: string;\r\n parentFolderId?: string;\r\n isFolder?: boolean;\r\n folderId?: string;\r\n folderName?: string;\r\n folderItemsCount?: number;\r\n teamId: string;\r\n teamName?: string;\r\n topicId?: string;\r\n topicPath?: string;\r\n topicName?: string;\r\n topics?: string[];\r\n tags?: string;\r\n isPrivate?: boolean;\r\n isFile?: boolean;\r\n fileName?: string;\r\n storageType?: ClipperArchiveFileStorageType;\r\n isBinary?: boolean;\r\n binaryId?: number;\r\n binaryFilePath?: string;\r\n isPermalink?: boolean;\r\n fileType?: ClipperArchiveFileType;\r\n file?: any;\r\n notes?: string;\r\n position?: number;\r\n documentIds?: string;\r\n documentLastChangedBy?: string;\r\n documentLastChangedById?: string;\r\n documentLastChangedReasonDescription?: string;\r\n documentLastChanged?: Date;\r\n documentUpdateState?: number;\r\n isDocumentChanged?: boolean;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n channelName?: string;\r\n model?: ClipperModel;\r\n modelName?: string;\r\n title1?: string;\r\n title2?: string;\r\n date?: Date;\r\n number?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n isDocument?: boolean;\r\n isRead?: boolean;\r\n isJuris?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n validityState?: number;\r\n validUntilDate?: Date;\r\n expiringDate?: Date;\r\n expiringInfo?: string;\r\n uniqueId: string;\r\n}\r\n\r\n\r\nexport interface ClipperArchiveFolderTree extends Folder {\r\n subFolders: ClipperArchiveFolderTree[];\r\n}\r\n\r\n\r\nexport class ClipperArchiveFoldersSearchParams {\r\n teamId?: string;\r\n privateOnly?: boolean;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersSearchResult {\r\n name: string;\r\n teams: NameValueItem<string>[];\r\n files: ClipperArchiveFileInfo[];\r\n subFolders: ClipperArchiveFolderTree[];\r\n\r\n}\r\n\r\n\r\nexport class ClipperArchiveFilesSearchParams {\r\n teamId?: string;\r\n folderId?: string;\r\n folderName?: string;\r\n fileType?: ClipperArchiveFileType;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n topicPath?: string;\r\n topicId?: string;\r\n topicName?: string;\r\n titlesOnly?: boolean;\r\n text?: string;\r\n documentNumber?: string;\r\n documentYear?: number;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface ClipperArchiveFilesSearchResult {\r\n items: ClipperArchiveFileInfo[];\r\n folderName?: string;\r\n total: number;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersImportParams {\r\n teamId: string;\r\n destFolderId?: string;\r\n sourcePath?: string;\r\n sourceFileName?: string;\r\n file?: any;\r\n overwrite?: boolean;\r\n version?: number;\r\n}\r\n\r\nexport enum ClipperArchiveCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperArchiveFilesCopyParams {\r\n destTeamId: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n mode?: ClipperArchiveCopyMode;\r\n}\r\n\r\nexport interface ClipperArchiveFilesDeleteParams {\r\n sourceFolderId?: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n}\r\n\r\n\r\nexport class ClipperUtils {\r\n\r\n /**\r\n * Returns `true` when the given model corresponds to a readable document type\r\n * (i.e., can be opened in the document viewer).\r\n * @param model - The `ClipperModel` to test.\r\n */\r\n static isClipperModelReadable(model: ClipperModel): boolean {\r\n return model !== ClipperModel.Unknown &&\r\n model !== ClipperModel.NormativaVigente &&\r\n model !== ClipperModel.Scadenze &&\r\n model !== ClipperModel.Segnalazioni\r\n }\r\n\r\n /**\r\n * Returns the `ClipperModule` that owns the given document, derived from its model type.\r\n * @param item - The document info object to inspect.\r\n * @returns The matching `ClipperModule`, or `undefined` when the model has no direct module mapping.\r\n */\r\n static getClipperModuleFromModel(item: ClipperDocumentInfo): ClipperModule | undefined {\r\n switch (item.model) {\r\n case ClipperModel.AllerteAlimentari: return ClipperModule.AllerteAlimentari;\r\n case ClipperModel.News: return ClipperModule.News;\r\n case ClipperModel.Articoli:\r\n case ClipperModel.Juris: return ClipperModule.Approfondimenti;\r\n case ClipperModel.Quesiti: return ClipperModule.QuesitiECasiRisolti;\r\n case ClipperModel.Coordinamento: return ClipperModule.ModificheAbrogazioniERinvii;\r\n case ClipperModel.GiurisprudenzaRecente: return ClipperModule.Giurisprudenza;\r\n case ClipperModel.NormativaVigente: return ClipperModule.NormativaVigente;\r\n case ClipperModel.Segnalazioni:\r\n case ClipperModel.Scadenze: return ClipperModule.ScadenzeESegnalazioni;\r\n case ClipperModel.AggiornamentoNormativo: return ClipperModule.GazzetteBollettiniEFontiDiverse;\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the display name for the given `ClipperModuleGroup`.\r\n * @param value - The module group enum value to look up.\r\n * @returns The group display name, or an empty string when not found.\r\n */\r\n static getClipperModuleGroupName(value: ClipperModuleGroup): string {\r\n return ClipperModuleGroups.find(n => n.value === value)?.name ?? '';\r\n }\r\n\r\n /**\r\n * Returns the list of `ClipperModule` items belonging to the given module group.\r\n * @param value - The module group to filter by.\r\n * @returns Array of matching `NameValueItem` entries.\r\n */\r\n static getClipperModuleGroupItems(value: ClipperModuleGroup): NameValueItem<ClipperModule>[] {\r\n return ClipperModules.filter(n => n.parentValue === value);\r\n }\r\n\r\n /**\r\n * Tests a set of modules against the currently selected modules in the search filter.\r\n * @param modules - The modules to test.\r\n * @param currentModules - The currently selected modules to check against.\r\n * @param mode - Matching strategy:\r\n * `1` = all and only the specified modules (exact set),\r\n * `2` = all specified modules must be present,\r\n * `3` = at least one specified module must be present.\r\n * @returns `true` when the condition defined by `mode` is satisfied.\r\n */\r\n private static checkModules(\r\n modules: ClipperModule[],\r\n currentModules: NameValueItem<ClipperModule>[],\r\n mode: number = 1\r\n ): boolean {\r\n let ok = false;\r\n if (mode === 1) {\r\n // All and only the elements specified\r\n for (const current of currentModules) {\r\n ok = modules.findIndex(x => x === current.value) !== -1;\r\n if (!ok) break;\r\n }\r\n ok = ok && modules.length >= currentModules.length;\r\n } else if (mode === 2) {\r\n // All the elements specified\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (!ok) break;\r\n }\r\n } else if (mode === 3) {\r\n // Any of the specified elements\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (ok) break;\r\n }\r\n }\r\n return ok;\r\n }\r\n\r\n /**\r\n * Returns the sort options available for the given module selection.\r\n * Includes the relevance option only when the query contains free text.\r\n * @param modules - Currently selected modules (used to determine which date axes are available).\r\n * @param params - Current search params (checked for free-text content).\r\n * @returns Array of applicable `NameValueItem<ClipperSort>` sort options.\r\n */\r\n static getClipperAvailableSortOptions(\r\n modules?: NameValueItem<ClipperModule>[],\r\n params?: ClipperSearchParams): NameValueItem<ClipperSort>[] {\r\n const options: NameValueItem<ClipperSort>[] = [\r\n { name: \"Data decrescente\", value: ClipperSort.DateDesc },\r\n { name: \"Data crescente\", value: ClipperSort.DateAsc },\r\n { name: \"Data fonte decrescente\", value: ClipperSort.SourceDateDesc },\r\n { name: \"Data fonte crescente\", value: ClipperSort.SourceDateAsc },\r\n { name: \"Rilevanza\", value: ClipperSort.Relevance },\r\n //{ name: \"Popolarità\", value: ClipperSort.Popularity },\r\n ];\r\n const sortOptions: NameValueItem<ClipperSort>[] = []\r\n if (params && ClipperSearchUtils.isTextQuery(params)) {\r\n sortOptions.push(options[4]);\r\n }\r\n if (modules && modules.length > 0) {\r\n if (this.checkModules([ClipperModule.GazzetteBollettiniEFontiDiverse], modules, 1)) {\r\n sortOptions.push(options[2]);\r\n sortOptions.push(options[3]);\r\n } else if (this.checkModules([ClipperModule.NormativaVigente], modules, 1) ||\r\n this.checkModules([ClipperModule.Giurisprudenza], modules, 1)) {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n return sortOptions;\r\n }\r\n\r\n}\r\n\r\nexport class ClipperSearchUtils {\r\n\r\n /**\r\n * Resets all filter fields of a `ClipperSearchParams` instance to their default (empty) values.\r\n * @param params - The search-params object to clear.\r\n */\r\n static clear(params: ClipperSearchParams): void {\r\n params.sector = undefined;\r\n params.sectors = undefined;\r\n params.author = undefined;\r\n params.authors = undefined;\r\n params.topic = undefined;\r\n params.topics = undefined;\r\n params.taxonomy = undefined;\r\n params.taxonomies = undefined;\r\n params.taxonomyPath = undefined;\r\n params.taxonomyNode = undefined;\r\n params.number = undefined;\r\n params.fromDate = undefined;\r\n params.toDate = undefined;\r\n params.year = undefined;\r\n params.sourceNumber = undefined;\r\n params.source = undefined;\r\n params.sourceFromDate = undefined;\r\n params.sourceToDate = undefined;\r\n params.sourceYear = undefined;\r\n params.tags = undefined;\r\n params.text = undefined;\r\n params.titleOnly = false;\r\n params.type = undefined;\r\n params.types = undefined;\r\n params.showUnreadDocumentsOnly = false;\r\n params.showCommentedDocumentsOnly = false;\r\n params.showNotAbrogatedDocumentsOnly = false;\r\n if (!params.channels || params.channels.length === 0) {\r\n params.channels = [...ClipperChannels];\r\n }\r\n params.changeReason = undefined;\r\n params.changedNumber = undefined;\r\n params.changedYear = undefined;\r\n params.changedTitle = undefined;\r\n params.changedId = undefined;\r\n params.modifierId = undefined;\r\n params.modifierNumber = undefined;\r\n params.modifierYear = undefined;\r\n params.modifierTitle = undefined;\r\n params.model = undefined;\r\n params.models = undefined;\r\n params.module = undefined;\r\n params.modules = undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the list of `ClipperModel` values that correspond to the given modules.\r\n * @param modules - The selected modules to map to their underlying data models.\r\n * @returns Array of `ClipperModel` values matching the provided modules.\r\n */\r\n static getModulesModels(modules?: NameValueItem<ClipperModule>[]): ClipperModel[] {\r\n const models: ClipperModel[] = [];\r\n if (modules && modules.length > 0) {\r\n modules.forEach(module => {\r\n switch (module.value) {\r\n case ClipperModule.ScadenzeESegnalazioni:\r\n [ClipperModel.Scadenze, ClipperModel.Segnalazioni].forEach(x => models.push(x));\r\n break;\r\n case ClipperModule.QuesitiECasiRisolti:\r\n models.push(ClipperModel.Quesiti);\r\n break;\r\n case ClipperModule.News:\r\n models.push(ClipperModel.News);\r\n break;\r\n case ClipperModule.Approfondimenti:\r\n models.push(ClipperModel.Articoli);\r\n break;\r\n case ClipperModule.AllerteAlimentari:\r\n models.push(ClipperModel.AllerteAlimentari);\r\n break;\r\n case ClipperModule.GazzetteBollettiniEFontiDiverse:\r\n models.push(ClipperModel.AggiornamentoNormativo);\r\n break;\r\n case ClipperModule.GiurisprudenzaRecente:\r\n models.push(ClipperModel.GiurisprudenzaRecente);\r\n break;\r\n case ClipperModule.NormativaVigente:\r\n models.push(ClipperModel.NormativaVigente);\r\n break;\r\n case ClipperModule.ModificheAbrogazioniERinvii:\r\n models.push(ClipperModel.Coordinamento);\r\n break;\r\n case ClipperModule.Giurisprudenza:\r\n models.push(ClipperModel.Juris);\r\n break;\r\n }\r\n });\r\n }\r\n return models;\r\n }\r\n\r\n /**\r\n * Returns `true` when the search params contain a non-empty free-text query.\r\n * @param params - The search params to inspect.\r\n */\r\n static isTextQuery(params: ClipperSearchParams): boolean {\r\n return params.text != null && params.text.length > 0;\r\n }\r\n\r\n /**\r\n * Wraps `q` in quotes (if not already quoted) and appends it to `queries`.\r\n * @param q - A single search term to process.\r\n * @param queries - The accumulated query string to append to.\r\n * @returns The updated `queries` string.\r\n */\r\n private static concatTextQuery(q: string, queries: string): string {\r\n if (q && q.length > 1) {\r\n if ((q[0] === '+' || q[0] === '-') && q[1] !== '\"') {\r\n q = q[0] + '\"' + q.substring(1) + '\"';\r\n } else if (q[0] !== '\"') {\r\n q = \"\\\"\" + q + \"\\\"\";\r\n }\r\n queries += q + \" \";\r\n }\r\n return queries;\r\n }\r\n\r\n /**\r\n * Normalises a comma-separated search string by wrapping each term in quotes.\r\n * @param text - The raw search input to normalise.\r\n * @returns The normalised query string, or `undefined` when `text` is empty.\r\n */\r\n static normalizeTextQuery(text: string): string | undefined {\r\n if (!text || text.length === 0) return undefined;\r\n let q: string = '';\r\n let queries: string = '';\r\n for (let i = 0; i < text.length; i++) {\r\n if (text[i] === ',') {\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n q = '';\r\n }\r\n else q += text[i];\r\n }\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n return queries;\r\n }\r\n\r\n /**\r\n * Wraps the entire query in double quotes when it contains no boolean operators\r\n * (`\"`, `+`, or ` -`), making it an exact-phrase search.\r\n * @param text - The query string to normalise.\r\n * @returns The normalised query string.\r\n */\r\n static normalizeTextQuery2(text: string): string {\r\n if (!text) return text;\r\n // Add quotes only if there are no quoted elements, no '+', and no ' -'\r\n if (!text.includes('\"') && !text.includes('+') && !text.includes(' -')) {\r\n return '\"' + text + '\"';\r\n }\r\n return text;\r\n }\r\n\r\n\r\n /**\r\n * Maps a letter rank (`A`, `B`, or any other) to a numeric relevance threshold.\r\n * @param value - The single-character rank string.\r\n * @returns `0.751` for `'A'`, `0.71` for `'B'`, `0.51` for anything else.\r\n */\r\n static getRankFromChar(value: string): number {\r\n switch (value.toUpperCase()) {\r\n case 'A': return 0.751;\r\n case 'B': return 0.71;\r\n default:\r\n return 0.51;\r\n }\r\n }\r\n}","import { NameValueItem } from \"@arsedizioni/ars-utils/core\";\r\n\r\nexport const NotesColors: NameValueItem<string>[] = \r\n[{ name: \"Verde\", value: \"#2E8B74\" },\r\n { name: \"Viola\", value: \"#9B59B6\" },\r\n { name: \"Giallo\", value: \"#E8A838\" },\r\n { name: \"Ciano\", value: \"#17A8BA\" },\r\n { name: \"Arancione\", value: \"#FD7E14\" },\r\n { name: \"Magenta\", value: \"#E91E8C\" },\r\n { name: \"Grigio\", value: \"#6C757D\" },\r\n { name: \"Indaco\", value: \"#5B6EBF\" }\r\n];\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, BroadcastService, FolderTree, NameValueItem, SystemUtils, UpdateResultModel } from '@arsedizioni/ars-utils/core';\r\nimport {\r\n ClipperCalendarSearchParams,\r\n ClipperDocumentInfo,\r\n ClipperDocumentNote,\r\n ClipperDocumentNoteTracking,\r\n ClipperDocumentStructure,\r\n ClipperDocumentUpdateStateParams,\r\n ClipperExportDocumentsParams,\r\n ClipperModule,\r\n ClipperNotifyDocumentNoteParams,\r\n ClipperQueryReferencesMode,\r\n ClipperReferencesSearchParams,\r\n ClipperSearchCalendarSnapshotResult,\r\n ClipperSearchFacetsResult,\r\n ClipperSearchParams,\r\n ClipperSearchResult,\r\n ClipperSendDocumentsByEmailParams,\r\n ClipperTaxonomyParams,\r\n ClipperUserSearch,\r\n ClipperUserWorkingDocument,\r\n} from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Document search, references, export and metadata, plus the dashboard counters,\r\n * taxonomy/topics/tags lookups, the working-documents \"bag\" and saved searches.\r\n */\r\n@Service()\r\nexport class ClipperDocumentsService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n\r\n /////\r\n // DOCUMENTS\r\n /////\r\n\r\n /**\r\n * Queries documents matching the given search parameters.\r\n * @param params - The document search parameters.\r\n * @returns An observable emitting the API result wrapping the search result.\r\n */\r\n query(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the facets for a document query.\r\n * @param params - The document search parameters.\r\n * @returns An observable emitting the API result wrapping the search facets.\r\n */\r\n queryFacets(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/facets',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Updates the state of one or more documents.\r\n * @param params - The document state update parameters.\r\n * @returns An observable emitting the API result wrapping the number of updated documents.\r\n */\r\n updateState(params: ClipperDocumentUpdateStateParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/state/update',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Exports a single document in PDF format.\r\n * @param id - The ID of the document to export.\r\n * @returns An observable emitting the PDF binary content as a blob.\r\n */\r\n exportPdf(id: string) {\r\n return this.httpClient.get(\r\n this.core.serviceUri + '/documents/export/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Exports a document list (query or selected items), or exports deadlines as ICS.\r\n * @param params - The export parameters.\r\n * @returns An observable emitting the exported content as a blob.\r\n */\r\n export(params: ClipperExportDocumentsParams) {\r\n return this.httpClient.post(\r\n this.core.serviceUri + '/documents/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Sends document links by email.\r\n * @param params - The send-by-email parameters including recipients and documents.\r\n * @returns An observable emitting the API result wrapping the number of sent items.\r\n */\r\n sendTo(params: ClipperSendDocumentsByEmailParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/send',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Sends an email notification about a document note update to the specified recipients.\r\n * @param params - The notification parameters including recipients and note details.\r\n * @returns An observable emitting the API result wrapping the note tracking update.\r\n */\r\n notifyNoteTo(params: ClipperNotifyDocumentNoteParams) {\r\n return this.httpClient.post<ApiResult<UpdateResultModel<ClipperDocumentNoteTracking>>>(\r\n this.core.serviceUri + '/documents/notes/notify',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the full document report page.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the report content as a blob.\r\n */\r\n report(id: string) {\r\n return this.httpClient.get(\r\n this.core.serviceUri + '/documents/report/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Gets the comment associated with a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the comment text.\r\n */\r\n comment(id: string) {\r\n return this.httpClient.get<ApiResult<string>>(\r\n this.core.serviceUri + '/documents/comment/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the info for a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the document info.\r\n */\r\n info(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentInfo>>(\r\n this.core.serviceUri + '/documents/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the structure (index) of a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the document structure.\r\n */\r\n index(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentStructure>>(\r\n this.core.serviceUri + '/documents/structure/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the last-update metadata for a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the last update string and its notes.\r\n */\r\n metadata(id: string) {\r\n return this.httpClient.get<ApiResult<{ item1?: string; item2?: ClipperDocumentNote[] }>>(\r\n this.core.serviceUri + '/documents/metadata/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Queries document references, changes or jurisprudence depending on the requested mode.\r\n * @param params - The references search parameters; `mode` defaults to `ReferencesIn`.\r\n * @returns An observable emitting the API result wrapping the search result, or `null` for an unsupported mode.\r\n */\r\n references(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode;\r\n if (!mode) mode = ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/references',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/changes',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/juris',\r\n params\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the facets for a document references query.\r\n * @param params - The references search parameters; `mode` defaults to `ReferencesIn`.\r\n * @returns An observable emitting the API result wrapping the search facets, or `null` for an unsupported mode.\r\n */\r\n referencesFacets(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode ?? ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/references/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/changes/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/juris/facets',\r\n params\r\n );\r\n default: return null;\r\n }\r\n }\r\n\r\n /**\r\n * Wraps document rendering to allow token refresh.\r\n * @returns An observable emitting the API result wrapping a boolean readiness flag.\r\n */\r\n preRender() {\r\n return this.httpClient.get<ApiResult<boolean>>(\r\n this.core.serviceUri + '/documents/pre-render?nocache=' + SystemUtils.generateUUID()\r\n );\r\n }\r\n\r\n /**\r\n * Gets the jurisprudence articles for a document query.\r\n * @param params - The document search parameters.\r\n * @returns An observable emitting the API result wrapping the search result.\r\n */\r\n jurisArticles(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/juris/articles',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Gets a deadlines snapshot based on the supplied deadlines.\r\n * @param params - The calendar search parameters.\r\n * @returns An observable emitting the API result wrapping the calendar snapshot result.\r\n */\r\n deadlinesSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this.core.serviceUri + '/documents/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the taxonomy.\r\n * @param params - Optional taxonomy parameters. Defaults to `{ model: 0, countItems: false }`.\r\n * @returns An observable emitting the API result wrapping the taxonomy folder tree.\r\n */\r\n getTaxonomy(params?: ClipperTaxonomyParams) {\r\n return this.httpClient.post<ApiResult<FolderTree>>(\r\n this.core.serviceUri + '/taxonomy',\r\n params ?? { model: 0, countItems: false }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the topics as a flat list.\r\n * @returns An observable emitting the API result wrapping the list of topics.\r\n */\r\n getTopics() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this.core.serviceUri + '/topics'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the topics as a tree.\r\n * @returns An observable emitting the API result wrapping the topics folder tree.\r\n */\r\n getTopicsAsTree() {\r\n return this.httpClient.get<ApiResult<FolderTree>>(\r\n this.core.serviceUri + '/topics2'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the tags.\r\n * @returns An observable emitting the API result wrapping the list of tags.\r\n */\r\n getTags() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this.core.serviceUri + '/tags'\r\n );\r\n }\r\n\r\n\r\n ///\r\n // BAG\r\n ///\r\n\r\n /**\r\n * Loads the working documents and populates the shared bag.\r\n * @returns The subscription to the working-documents request.\r\n */\r\n loadBag() {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.core.serviceUri + '/documents/working'\r\n )\r\n .subscribe(\r\n r => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n if (r.value) {\r\n const items: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n if (!n.documentId) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n }\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : undefined;\r\n }\r\n n.documentDescriptor = undefined;\r\n items.push(n);\r\n }\r\n });\r\n this.core.bag.set(items);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adds one or more documents to the working documents bag.\r\n * @param documentIds - The IDs of the documents to add.\r\n * @returns The subscription to the add-to-bag request.\r\n */\r\n addToBag(documentIds: string[]) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.core.serviceUri + '/documents/working/add',\r\n { documentIds: documentIds }\r\n )\r\n .subscribe((r: ApiResult<ClipperUserWorkingDocument[]>) => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_CHANGED);\r\n } else {\r\n if (r.value) {\r\n const newItems: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : null;\r\n }\r\n n.documentDescriptor = undefined;\r\n newItems.push(n);\r\n }\r\n });\r\n if (newItems.length > 0) {\r\n this.core.bag.update((values: any) => [...values, ...newItems]);\r\n }\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Operazione completata con successo.\", icon: 'check', duration: 1500 });\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Removes a document from the working documents bag.\r\n * @param documentId - The ID of the document to remove.\r\n * @returns The subscription to the remove-from-bag request.\r\n */\r\n removeFromBag(documentId: string) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/working/delete',\r\n { documentIds: [documentId] }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n const p = this.core.bag().findIndex((n: any) => n.documentId === documentId);\r\n if (p !== -1) {\r\n this.core.bag.update((values: any) => {\r\n values.splice(p, 1);\r\n return [...values];\r\n });\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Operazione completata con successo.\", icon: 'check', duration: 1500 });\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clears all working documents from the bag.\r\n * @returns The subscription to the clear-bag request.\r\n */\r\n clearBag() {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/working/delete',\r\n { deleteAll: true }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n this.core.bag.set([]);\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Operazione completata con successo.\", icon: 'check', duration: 1500 });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves the saved searches for the given module.\r\n * @param module - The Clipper module whose saved searches to load.\r\n * @returns An observable emitting the API result wrapping the list of saved searches.\r\n */\r\n loadSearches(module: ClipperModule) {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserSearch[]>>(\r\n this.core.serviceUri + '/documents/searches/?module=' + module\r\n );\r\n }\r\n\r\n /**\r\n * Persists a user search configuration on the server.\r\n * @param params - The search configuration to save.\r\n * @returns An observable emitting the API result wrapping the saved search.\r\n */\r\n saveSearch(params: ClipperUserSearch) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserSearch>>(\r\n this.core.serviceUri + '/documents/searches/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a saved search by its ID.\r\n * @param id - The ID of the saved search to remove.\r\n * @returns An observable emitting the API result wrapping the number of deleted searches.\r\n */\r\n deleteSearch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/searches/delete',\r\n { id: id }\r\n );\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, BroadcastService, SplashService } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\nimport { of, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { ClipperLoginResult, ClipperOTPInfo } from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Authentication: credential / OAuth2 login, MFA confirmation, logout and OTP.\r\n * Shared login context, channels and the logged-in flag live in `ClipperCoreService`.\r\n */\r\n@Service()\r\nexport class ClipperLoginService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly splashService = inject(SplashService);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Attempts an automatic login using the credentials currently stored in session storage.\r\n * @param onSuccess - Optional callback invoked with the login result value on success.\r\n */\r\n autoLogin(onSuccess?: (value?: any) => void) {\r\n this.login(undefined, undefined, true)\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n if (!r.value.requiresMfa) {\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Connesso a Clipper\", icon: 'power', duration: 1500 });\r\n }\r\n if (onSuccess) {\r\n onSuccess(r.value);\r\n }\r\n }\r\n },\r\n error: () => { this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: \"Clipper non disponibile.\" }) }\r\n });\r\n }\r\n\r\n /**\r\n * Performs an automatic logout and clears the stored session.\r\n * @param onSuccess - Optional callback invoked after a successful logout.\r\n */\r\n autoLogout(onSuccess?: () => void) {\r\n this.logout()\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_CHANGED);\r\n } else {\r\n this.broadcastService.sendMessage(ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Disconnesso da Clipper\", icon: 'power_off', duration: 1500 });\r\n }\r\n },\r\n error: () => { },\r\n complete: () => {\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Authenticates the user against the Clipper API, supporting both credential-based and\r\n * OAuth2 login flows.\r\n * @param email - The user's email address (credential login only).\r\n * @param password - The user's password (credential login only).\r\n * @param remember - When `true`, the session is remembered across browser restarts.\r\n * @param oauth - The OAuth2 provider type, when authenticating via SSO.\r\n * @param oauthAccessToken - The OAuth2 bearer token. Defaults to the value stored in session storage.\r\n * @returns An observable emitting the API result wrapping the login result.\r\n */\r\n login(email?: string,\r\n password?: string,\r\n remember?: boolean,\r\n oauth?: LoginOAuthType,\r\n oauthAccessToken: string | undefined = sessionStorage.getItem(\"clipper_oauth_token\") ?? undefined) {\r\n this.splashService.setMessage('Accesso in corso...');\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this.core.serviceUri + '/login2',\r\n {\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n remember: remember,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth || !oauthAccessToken\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", 'Bearer ' + oauthAccessToken)\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n const info = this.core.ensureLoginInfo();\r\n info.oauth = oauth;\r\n info.remember = remember;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_PENDING);\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Finalises the login flow by updating the stored context, setting the logged-in signal,\r\n * initialising channels, and broadcasting `LOGIN_COMPLETED`.\r\n * @param result - The login result returned by the API.\r\n */\r\n private completeLogin(result: ClipperLoginResult): void {\r\n // Update context info\r\n this.core.updateContext(result);\r\n this.core.setLoggedIn(!result.context?.isTemporary);\r\n this.core.loggingIn.set(false);\r\n // Initialize channels\r\n this.core.initializeChannels();\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n /**\r\n * Submits the MFA confirmation code to complete a two-factor login flow.\r\n * @param code - The one-time confirmation code provided to the user.\r\n * @returns An observable emitting the API result wrapping the login result.\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this.core.serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Logs the user out and clears the current session.\r\n * @param forget - When `true`, all stored user credentials are also removed.\r\n * @returns An observable that completes once the logout request has been processed.\r\n */\r\n logout(forget: boolean = false) {\r\n return this.httpClient.post<any>(this.core.serviceUri + '/logout/?forget=' + forget, {})\r\n .pipe(\r\n finalize(() => {\r\n this.core.clear(true);\r\n // Clean up\r\n localStorage.removeItem('clipper_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n }\r\n\r\n /**\r\n * Clears all session-storage authentication keys and resets the login state.\r\n * @param clearOAuthToken - When `true`, the OAuth bearer token is also removed.\r\n */\r\n clear(clearOAuthToken: boolean = false): void {\r\n this.core.clear(clearOAuthToken);\r\n }\r\n\r\n /**\r\n * Requests a new one-time password for the given repository.\r\n * @param id - The repository ID for which the OTP should be generated.\r\n * @returns An observable emitting the API result wrapping the generated OTP info.\r\n */\r\n newOTP(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperOTPInfo>>(\r\n this.core.serviceUri + '/otp/new/?id=' + id,\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { DestroyRef, Injector, Service, Signal, computed, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ApiResult, BroadcastService, NameValueItem, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { EMPTY } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport {\r\n ClipperAvailableChannel,\r\n ClipperChannels,\r\n ClipperDashboard,\r\n ClipperDocumentInfo,\r\n ClipperLoginInfo,\r\n ClipperLoginResult,\r\n ClipperSearchResult,\r\n ClipperServiceFlags,\r\n} from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperDocumentsService } from './documents.service';\r\nimport { ClipperLoginService } from './login.service';\r\n\r\n/**\r\n * Shared state and bootstrap for the Clipper application.\r\n *\r\n * Holds every piece of state used by more than one feature service (service URI,\r\n * flags, login context, teams, dashboard, working-documents bag, channels and the\r\n * various UI signals) plus the low-level helpers that mutate that state.\r\n *\r\n * The feature services (`ClipperLoginService`, `ClipperDocumentsService`, ...) inject\r\n * this service to read shared state and call shared helpers. `ClipperService` (the\r\n * barrel/facade) re-exports the state declared here.\r\n */\r\n@Service()\r\nexport class ClipperCoreService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly broadcastService = inject(BroadcastService);\r\n /** Used to lazily resolve feature services inside `initialize`, avoiding circular DI. */\r\n private readonly injector = inject(Injector);\r\n\r\n private broadcastInitialized = false;\r\n\r\n private _appUri?: string;\r\n /** @returns The URI of the Clipper web application, or `undefined` if not set. */\r\n get appUri(): string | undefined {\r\n return this._appUri;\r\n }\r\n\r\n private _serviceUri: string = '';\r\n /** @returns The base URI of the Clipper REST API. */\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n\r\n private _flags: ClipperServiceFlags = ClipperServiceFlags.None;\r\n /** @returns The active feature flags. */\r\n get flags(): ClipperServiceFlags {\r\n return this._flags;\r\n }\r\n\r\n private _loginInfo?: ClipperLoginInfo;\r\n /**\r\n * Lazily loads the login context from `localStorage` on first access.\r\n * @returns The current login context, or `undefined` if not authenticated.\r\n */\r\n get loginInfo(): ClipperLoginInfo | undefined {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('clipper_context');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as ClipperLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n\r\n private readonly _loggedIn = signal<boolean>(sessionStorage.getItem(\"clipper_oauth_token\") !== null);\r\n public readonly loggedIn: Signal<boolean> = this._loggedIn.asReadonly();\r\n public readonly loggingIn = signal<boolean>(false);\r\n public readonly snapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly supportsRS = signal<boolean>(false);\r\n public readonly referencesSnapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly dashboard: ClipperDashboard = new ClipperDashboard();\r\n public readonly bag = signal<ClipperDocumentInfo[]>([]);\r\n public readonly bagTotal: Signal<number> = computed(() => this.bag().length);\r\n public readonly visible = signal<boolean>(false);\r\n\r\n private _teams: NameValueItem<string>[] = [];\r\n /** @returns The shared teams collection. */\r\n get teams(): NameValueItem<string>[] {\r\n return this._teams;\r\n }\r\n\r\n public readonly availableChannels = signal<ClipperAvailableChannel[]>([]);\r\n public readonly activeChannels: Signal<ClipperAvailableChannel[]> = computed(() => {\r\n return this.availableChannels()?.filter(x => !x.suspended && !x.disabled && x.active === true);\r\n });\r\n public readonly allowTags = signal<boolean>(false);\r\n public readonly pendingNotes = signal<number | undefined>(undefined);\r\n\r\n\r\n ////\r\n // SHARED MUTATORS\r\n ////\r\n\r\n /**\r\n * Ensures a login-info object exists and returns it for further mutation.\r\n * Replaces the inline `if (!this._loginInfo) { ... }` guards now that the field\r\n * is private to this service.\r\n * @returns The existing login-info object, or a freshly created empty one.\r\n */\r\n ensureLoginInfo(): ClipperLoginInfo {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n return this._loginInfo;\r\n }\r\n\r\n /**\r\n * Sets the logged-in state. The backing signal is read-only to consumers, so the\r\n * feature services use this method instead.\r\n * @param value - The new logged-in state.\r\n */\r\n setLoggedIn(value: boolean): void {\r\n this._loggedIn.set(value);\r\n }\r\n\r\n /**\r\n * Replaces the shared teams collection (populated by the calendar, archive and\r\n * collaboration queries).\r\n * @param teams - The teams to store.\r\n */\r\n setTeams(teams: NameValueItem<string>[]): void {\r\n this._teams = teams;\r\n }\r\n\r\n /**\r\n * Persists the current login context to `localStorage`.\r\n */\r\n storeContext(): void {\r\n localStorage.setItem('clipper_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n * Updates the stored login context with the values from a fresh login result.\r\n * @param result - The login result containing the new user context and channel settings.\r\n */\r\n updateContext(result: ClipperLoginResult): void {\r\n const info = this.ensureLoginInfo();\r\n info.context = result.context;\r\n info.channels = result.settings;\r\n this.storeContext();\r\n }\r\n\r\n /**\r\n * Rebuilds the `availableChannels` signal from the current login context.\r\n */\r\n initializeChannels(): void {\r\n if (this.loginInfo) {\r\n const channels: ClipperAvailableChannel[] = [];\r\n this.loginInfo.channels?.forEach(n => {\r\n const channelSubscription = this.loginInfo?.context?.channels?.find(x => x.channel === n.channelId);\r\n n.isSuspended = channelSubscription?.isSuspended === true;\r\n const channel = ClipperChannels.find(x => x.value === n.channelId) as ClipperAvailableChannel;\r\n if (channel) {\r\n channel.disabled = !n.isActive;\r\n channel.suspended = n.isSuspended === true;\r\n channel.active = n.isActive === true && n.isEnabled === true;\r\n channels.push(channel);\r\n }\r\n });\r\n this.availableChannels.set(channels);\r\n }\r\n }\r\n\r\n /**\r\n * Resets the login state, clears the stored login info, and broadcasts `LOGOUT_COMPLETED`.\r\n */\r\n reset(): void {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n // Logged out\r\n this._loggedIn.set(false);\r\n // Reset channels\r\n this.availableChannels.set([]);\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clears all session-storage authentication keys and resets the login state.\r\n * @param clearOAuthToken - When `true`, the OAuth bearer token is also removed.\r\n */\r\n clear(clearOAuthToken: boolean = false): void {\r\n // Clear local storage\r\n sessionStorage.removeItem('clipper_auth');\r\n sessionStorage.removeItem('clipper_oauth');\r\n if (clearOAuthToken) {\r\n sessionStorage.removeItem('clipper_oauth_token');\r\n }\r\n\r\n // Reset login\r\n this.reset();\r\n }\r\n\r\n\r\n ////\r\n // BOOTSTRAP\r\n ////\r\n\r\n /**\r\n * Initialises the service with the API base URI, optional app URI, and feature flags.\r\n * @param serviceUri - The base URI of the Clipper REST API.\r\n * @param appUri - Optional URI of the Clipper web application (used to build document links).\r\n * @param flags - Feature flags that control service behaviour. Defaults to `ClipperServiceFlags.None`.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n appUri?: string,\r\n flags: ClipperServiceFlags = ClipperServiceFlags.None,\r\n ) {\r\n\r\n // Create unique client and machine id\r\n if (!sessionStorage.getItem('clipper_client_id')) {\r\n sessionStorage.setItem('clipper_client_id',\r\n (flags && ClipperServiceFlags.Embedded) > 0\r\n ? 'embedded'\r\n : SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._appUri = appUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastInitialized) {\r\n this.broadcastInitialized = true;\r\n this.broadcastService.getMessage()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(message => {\r\n if (message.id === ClipperMessages.LOGIN_CHANGED) {\r\n this.injector.get(ClipperLoginService).login(\r\n undefined,\r\n undefined,\r\n true,\r\n message.data?.oauth ?? undefined,\r\n message.data?.oauthAccessToken ?? undefined).subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR,\r\n { message: \"Le credenziali di accesso sono cambiate o non sono più valide. Esegui un nuovo accesso.\" });\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_FAILED);\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Connesso a Clipper\", icon: 'power', duration: 1500 });\r\n }\r\n // Load bag\r\n this.injector.get(ClipperDocumentsService).loadBag();\r\n }\r\n },\r\n error: () => { console.error(\"Clipper non disponibile.\") } // Avoid unwanted errors on client\r\n });\r\n } else if (message.id === ClipperMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.injector.get(ClipperLoginService).logout().subscribe(r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR,\r\n { message: \"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Clipper accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\" });\r\n }\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.broadcastService.sendMessage(ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Disconnesso da Clipper\", icon: 'power_off', duration: 1500 });\r\n }\r\n // Empty bag\r\n this.bag.set([]);\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (this.loggedIn()) {\r\n // Auto login\r\n this.loggingIn.set(false);\r\n // Initialize channels\r\n this.initializeChannels();\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n }\r\n }\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, BroadcastService, NameValueItem } from '@arsedizioni/ars-utils/core';\r\nimport { RecoverPasswordDialogResult, ResetPasswordDialogResult } from '@arsedizioni/ars-utils/ui';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperChannel,\r\n ClipperChannelSettings,\r\n ClipperDashboardResult,\r\n ClipperLastDaysResult,\r\n ClipperModel,\r\n ClipperModule,\r\n ClipperSearchParams,\r\n ClipperSettingsInfo,\r\n ClipperUpdateChannelsStateParams,\r\n ClipperUserLink,\r\n ClipperUserTrialInfo,\r\n} from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Account management: password reset/recovery, settings, channel activation, trial info\r\n * and user links. Channel state lives in `ClipperCoreService`; the channel-mutating\r\n * helpers (`setChannels`, `setChannelsState`, `updateChannels`) live here.\r\n */\r\n@Service()\r\nexport class ClipperAccountService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Resets the user's password using the provided parameters.\r\n * @param params - The new password and confirmation data.\r\n * @returns An observable emitting the API result wrapping the reset password payload.\r\n */\r\n resetPassword(params: ResetPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<ResetPasswordDialogResult>>(\r\n this.core.serviceUri + '/account/password/reset',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Initiates a password recovery flow by sending a reset link to the user's email.\r\n * @param params - The password recovery request data.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n recoverPassword(params: RecoverPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/password/recover',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Gets the current user account settings.\r\n * @returns An observable emitting the API result wrapping the account settings.\r\n */\r\n getSettings() {\r\n return this.httpClient.get<ApiResult<ClipperSettingsInfo>>(\r\n this.core.serviceUri + '/account/settings'\r\n );\r\n }\r\n\r\n /**\r\n * Updates user account settings and applies any channel configuration changes.\r\n * @param params - A map of settings key-value pairs to update.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n updateSettings(params: ClipperSettingsInfo) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/settings/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n if (params.channels) {\r\n this.setChannels(params.channels);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Saves updated channel activation states to the server and applies the new dashboard result.\r\n * @param params - The channel state update parameters.\r\n * @returns An observable emitting the API result wrapping the dashboard result.\r\n */\r\n updateChannelsState(params: ClipperUpdateChannelsStateParams) {\r\n return this.httpClient.post<ApiResult<ClipperDashboardResult>>(\r\n this.core.serviceUri + '/account/settings/channels/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n this.setChannelsState(r.value);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Applies a new dashboard result: updates channel settings, dashboard counters, and\r\n * re-initialises the available-channels signal.\r\n * @param value - The dashboard result containing updated channel and counter data.\r\n */\r\n setChannelsState(value: ClipperDashboardResult): void {\r\n // Update channels\r\n const info = this.core.loginInfo;\r\n if (info) {\r\n info.channels = value.channels ?? [];\r\n }\r\n // Update dashboard\r\n this.core.dashboard.documentUpdates = value.documentUpdates;\r\n this.core.dashboard.expiredDeadlines = value.expiredDeadlines;\r\n this.core.dashboard.expiringDeadlines = value.expiringDeadlines;\r\n this.core.dashboard.isTrial = value.isTrial;\r\n this.core.dashboard.items.set(value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n this.core.storeContext();\r\n this.core.initializeChannels();\r\n }\r\n\r\n /**\r\n * Replaces the stored channel settings and re-initialises the available-channels signal.\r\n * @param channels - The new channel settings to store and activate.\r\n */\r\n setChannels(channels: ClipperChannelSettings[]): void {\r\n const info = this.core.loginInfo;\r\n if (info) {\r\n info.channels = channels;\r\n this.core.storeContext();\r\n this.core.initializeChannels();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the active state of available channels based on the supplied selection list.\r\n * @param values - The selected channel items; channels absent from this list are deactivated.\r\n */\r\n updateChannels(values: NameValueItem<ClipperChannel>[]): void {\r\n this.core.availableChannels().forEach(channel => {\r\n if (!channel.disabled) {\r\n channel.active = values?.findIndex(x => x.value === channel.value) !== -1;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Gets the trial info for the current account.\r\n * @returns An observable emitting the API result wrapping the trial info.\r\n */\r\n private getTrialInfo() {\r\n return this.httpClient.get<ApiResult<ClipperUserTrialInfo>>(\r\n this.core.serviceUri + '/account/trial'\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the trial status from the server and updates the stored login context.\r\n */\r\n updateTrialInfo(): void {\r\n const info = this.core.loginInfo;\r\n if (!info || info?.context?.hasTrial === false)\r\n return; // Not supported\r\n this.getTrialInfo().subscribe((r: ApiResult<ClipperUserTrialInfo>) => {\r\n if (r.success) {\r\n if (info?.context) {\r\n if (r.value) {\r\n info.context.hasTrial = true;\r\n info.context.trialInfo = r.value;\r\n } else {\r\n info.context.hasTrial = false;\r\n info.context.trialInfo = undefined;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Creates or updates a user link record.\r\n * @param item - The user link data to save.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n saveLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a user link record.\r\n * @param item - The user link to remove.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n deleteLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n\r\n\r\n ///\r\n // DASHBOARD\r\n ///\r\n\r\n /**\r\n * Retrieves the current dashboard and applies its counters to the shared dashboard state.\r\n * @returns The subscription to the dashboard request.\r\n */\r\n loadDashboard() {\r\n return this.httpClient\r\n .post<ApiResult<ClipperDashboardResult>>(\r\n this.core.serviceUri + '/account/dashboard',\r\n { refreshing: true }\r\n ).subscribe((r: ApiResult<ClipperDashboardResult>) => {\r\n if (r.success) {\r\n this.core.dashboard.documentUpdates = r.value.documentUpdates;\r\n this.core.dashboard.expiredDeadlines = r.value.expiredDeadlines;\r\n this.core.dashboard.expiringDeadlines = r.value.expiringDeadlines;\r\n this.core.dashboard.isTrial = r.value.isTrial;\r\n this.core.dashboard.items.set(r.value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves documents updated in the last 15 days for the given search parameters.\r\n * @param params - The search parameters to filter results.\r\n * @returns An observable emitting the API result wrapping the last-days result.\r\n */\r\n last15Days(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperLastDaysResult>>(\r\n this.core.serviceUri + '/account/last-15-days',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Adjusts the unread-item counter for the given module and broadcasts a dashboard update.\r\n * @param module - The Clipper module whose counter should be adjusted.\r\n * @param model - Optional document model to further scope the counter update.\r\n * @param increment - The signed increment to apply (use negative values to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model?: ClipperModel, increment?: number): void {\r\n increment ??= 0;\r\n if (increment !== 0) {\r\n this.core.dashboard.updateUnreadItems(module, model, increment);\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n}","import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, Folder } from '@arsedizioni/ars-utils/core';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperArchiveFileInfo,\r\n ClipperArchiveFilesCopyParams,\r\n ClipperArchiveFilesDeleteParams,\r\n ClipperArchiveFilesSearchParams,\r\n ClipperArchiveFilesSearchResult,\r\n ClipperArchiveFoldersImportParams,\r\n ClipperArchiveFoldersSearchParams,\r\n ClipperArchiveFoldersSearchResult,\r\n} from '../definitions';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Document archive: folders and files search, save, copy, delete, import/export and download.\r\n */\r\n@Service()\r\nexport class ClipperArchiveService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Retrieves all archive folders matching the given search parameters and stores the\r\n * returned teams in the shared state.\r\n * @param params - The folder search parameters.\r\n * @returns An observable emitting the API result wrapping the folders search result.\r\n */\r\n getArchiveFolders(params: ClipperArchiveFoldersSearchParams) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperArchiveFoldersSearchResult>>(\r\n this.core.serviceUri + '/archive/folders',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperArchiveFoldersSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this.core.setTeams(r.value.teams);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates an archive folder.\r\n * @param params - The folder data to save.\r\n * @returns An observable emitting the API result wrapping the saved folder.\r\n */\r\n saveArchiveFolder(params: Folder) {\r\n return this.httpClient.post<ApiResult<Folder>>(\r\n this.core.serviceUri + '/archive/folders/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Exports archive folders as a downloadable file.\r\n * @param id - The folder ID to export, or `undefined` to export all folders.\r\n * @param teamId - The optional team ID. Defaults to `undefined` (personal workspace).\r\n * @returns An observable emitting the exported folders content as a blob.\r\n */\r\n exportArchiveFolders(id?: string, teamId?: string) {\r\n let url = this.core.serviceUri + '/archive/export/?';\r\n if (id) {\r\n url += 'id=' + id;\r\n }\r\n if (teamId) {\r\n if (id) {\r\n url += '&';\r\n }\r\n url += 'team=' + teamId;\r\n }\r\n return this.httpClient.get(\r\n url,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/octet-stram'\r\n }),\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Uploads and imports archive folders from a file.\r\n * @param params - The import parameters including the source file and destination folder.\r\n * @returns An observable of HTTP events reporting upload progress and the final response.\r\n */\r\n importArchiveFolders(params: ClipperArchiveFoldersImportParams) {\r\n // Prepare form\r\n const formData = new FormData();\r\n formData.append(params.file.name, params.file);\r\n formData.append('sourceFileName', params.file.name);\r\n formData.append('overwrite', params.overwrite === true ? \"true\" : \"false\");\r\n if (params.destFolderId) {\r\n formData.append('destFolderId', params.destFolderId);\r\n }\r\n if (params.teamId) {\r\n formData.append('teamId', params.teamId);\r\n }\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this.core.serviceUri + '/archive/import/',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves archive files and folders matching the given search parameters.\r\n * @param params - The archive files search parameters.\r\n * @returns An observable emitting the API result wrapping the files search result.\r\n */\r\n queryArchiveItems(params: ClipperArchiveFilesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperArchiveFilesSearchResult>>(\r\n this.core.serviceUri + '/archive/files',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more archive files or folders.\r\n * @param params - The delete operation parameters.\r\n * @returns An observable emitting the API result wrapping the number of deleted items.\r\n */\r\n deleteArchiveItems(params: ClipperArchiveFilesDeleteParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/archive/files/delete',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Copies archive files or folders to a destination folder.\r\n * @param params - The copy operation parameters.\r\n * @returns An observable emitting the API result wrapping the number of copied items.\r\n */\r\n copyArchiveItems(params: ClipperArchiveFilesCopyParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/archive/files/copy',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Uploads and saves an archive file using multipart form data.\r\n * @param params - The file metadata and binary content to save.\r\n * @returns An observable of HTTP events reporting upload progress and the final response.\r\n */\r\n saveArchiveFile(params: ClipperArchiveFileInfo) {\r\n // Prepare form\r\n const formData = new FormData();\r\n if (params.file) formData.append(params.file.file.name, params.file.file);\r\n if (params.id) formData.append('id', params.id);\r\n if (params.folderId) {\r\n formData.append('folderId', params.folderId);\r\n }\r\n if (params.topicId && params.topicPath) {\r\n formData.append('topicId', params.topicId);\r\n formData.append('topicPath', params.topicPath);\r\n }\r\n if (params.title1) formData.append('title1', params.title1);\r\n if (params.title2) formData.append('title2', params.title2);\r\n if (params.origin) formData.append('origin', params.origin);\r\n if (params.originDescription) {\r\n formData.append('originDescription', params.originDescription);\r\n }\r\n if (params.documentId) formData.append('documentId', params.documentId);\r\n if (params.documentIds) formData.append('documentIds', params.documentIds);\r\n if (params.binaryId) formData.append('binaryId', params.binaryId?.toString());\r\n if (params.tags) formData.append('tags', params.tags);\r\n if (params.notes) formData.append('notes', params.notes);\r\n if (params.fileName) formData.append('fileName', params.fileName);\r\n if (params.fileType) formData.append('fileType', (params.fileType as number).toString());\r\n if (params.storageType) formData.append('storageType', (params.storageType as number).toString());\r\n if (params.model) formData.append('model', (params.model as number).toString());\r\n\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this.core.serviceUri + '/archive/files/save',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the metadata for a single archive file.\r\n * @param id - The ID of the archive file to retrieve.\r\n * @returns An observable emitting the API result wrapping the archive file info.\r\n */\r\n getArchiveFile(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperArchiveFileInfo>>(\r\n this.core.serviceUri + '/archive/files/' + id);\r\n }\r\n\r\n /**\r\n * Downloads the binary content of an archive file.\r\n * @param id - The binary ID of the file to download.\r\n * @param otp - An optional one-time password for authenticated downloads.\r\n * @returns An observable emitting the file binary content as a blob.\r\n */\r\n downloadArchiveFile(id: number, otp?: string) {\r\n return this.httpClient.get(\r\n this.core.serviceUri + '/archive/files/download/?id=' + id + '&otp=' + (otp ?? ''),\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult } from '@arsedizioni/ars-utils/core';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperCalendarCopyDeadlinesParams,\r\n ClipperCalendarSaveDeadlineParams,\r\n ClipperCalendarSearchParams,\r\n ClipperCalendarSearchResult,\r\n ClipperDeadlineInfo,\r\n ClipperSearchCalendarSnapshotResult,\r\n} from '../definitions';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Calendar deadlines: search, snapshot, save/copy/close/delete and iCalendar export.\r\n */\r\n@Service()\r\nexport class ClipperCalendarService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Queries the calendar and stores the returned teams in the shared state.\r\n * @param params - The calendar search parameters.\r\n * @returns An observable emitting the API result wrapping the calendar search result.\r\n */\r\n queryCalendar(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperCalendarSearchResult>>(\r\n this.core.serviceUri + '/calendar',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperCalendarSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this.core.setTeams(r.value.teams);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets the calendar snapshot.\r\n * @param params - The calendar search parameters.\r\n * @returns An observable emitting the API result wrapping the calendar snapshot result.\r\n */\r\n calendarSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this.core.serviceUri + '/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more calendar deadlines by ID.\r\n * @param ids - The IDs of the deadlines to delete.\r\n * @returns An observable emitting the API result wrapping the number of deleted deadlines.\r\n */\r\n deleteCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/calendar/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Copies one or more calendar deadlines using the given parameters.\r\n * @param params - The copy operation parameters.\r\n * @returns An observable emitting the API result wrapping the number of copied deadlines.\r\n */\r\n copyCalendarDeadlines(params: ClipperCalendarCopyDeadlinesParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/calendar/copy',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Marks the given calendar deadline as closed.\r\n * @param id - The ID of the deadline to close.\r\n * @returns An observable emitting the API result wrapping the updated deadline.\r\n */\r\n closeCalendarDeadline(id: string) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo>>(\r\n this.core.serviceUri + '/calendar/close',\r\n { id: id }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a calendar deadline.\r\n * @param params - The deadline data to save.\r\n * @returns An observable emitting the API result wrapping the saved deadlines.\r\n */\r\n saveCalendarDeadline(params: ClipperCalendarSaveDeadlineParams) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo[]>>(\r\n this.core.serviceUri + '/calendar/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves a single calendar deadline by its ID.\r\n * @param id - The ID of the deadline to retrieve.\r\n * @returns An observable emitting the API result wrapping the deadline.\r\n */\r\n getCalendarDeadline(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDeadlineInfo>>(\r\n this.core.serviceUri + '/calendar/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Exports the selected deadlines in iCalendar (.ics) format.\r\n * @param ids - The IDs of the deadlines to export.\r\n * @returns An observable emitting the iCalendar content as a blob.\r\n */\r\n exportCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post(\r\n this.core.serviceUri + '/calendar/export',\r\n { ids: ids },\r\n {\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, QueryResultModel } from '@arsedizioni/ars-utils/core';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperContactInfo,\r\n ClipperContactsSearchParams,\r\n ClipperDocumentNote,\r\n ClipperDocumentNoteTracking,\r\n ClipperNotesSearchParams,\r\n ClipperNotesSearchResult,\r\n ClipperTeamInfo,\r\n ClipperTeamMemberInfo,\r\n ClipperTeamMembersSearchResult,\r\n ClipperTeamsSearchParams,\r\n ClipperTeamsSearchResult,\r\n} from '../definitions';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Collaboration: teams and team members, contacts and shared document notes.\r\n */\r\n@Service()\r\nexport class ClipperCollaborationService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Renames the current user's team.\r\n * @param newName - The new display name for the team.\r\n * @returns An observable emitting the API result wrapping the updated team info.\r\n */\r\n renameTeam(newName: string) {\r\n return this.httpClient.post<ApiResult<ClipperTeamInfo>>(\r\n this.core.serviceUri + '/account/teams/update',\r\n { title: newName }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the list of teams available to the current user. When not querying\r\n * admins only, the result is also stored in the shared teams state.\r\n * @param params - The teams search parameters.\r\n * @returns An observable emitting the API result wrapping the teams search result.\r\n */\r\n getTeams(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamsSearchResult>>(\r\n this.core.serviceUri + '/account/teams',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperTeamsSearchResult>) => {\r\n // Store teams\r\n if (!params.adminsOnly) {\r\n this.core.setTeams(r.value.items);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the members of a team matching the given search parameters.\r\n * @param params - The team members search parameters.\r\n * @returns An observable emitting the API result wrapping the team members search result.\r\n */\r\n getTeamMembers(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMembersSearchResult>>(\r\n this.core.serviceUri + '/account/teams/members',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Removes the specified members from the team.\r\n * @param teamId - The ID of the team.\r\n * @param ids - The numeric IDs of the team members to remove.\r\n * @returns An observable emitting the API result wrapping the number of removed members.\r\n */\r\n deleteTeamMembers(teamId: string, ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/account/teams/members/delete',\r\n { teamId: teamId, ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a team member record.\r\n * @param item - The team member data to save.\r\n * @returns An observable emitting the API result wrapping the saved team member.\r\n */\r\n saveTeamMember(item: ClipperTeamMemberInfo) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMemberInfo>>(\r\n this.core.serviceUri + '/account/teams/members/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves contacts matching the given search parameters.\r\n * @param params - The contacts search parameters.\r\n * @returns An observable emitting the API result wrapping the contacts query result.\r\n */\r\n queryContacts(params: ClipperContactsSearchParams) {\r\n return this.httpClient.post<ApiResult<QueryResultModel<ClipperContactInfo>>>(\r\n this.core.serviceUri + '/account/contacts',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the specified contacts.\r\n * @param ids - The numeric IDs of the contacts to remove.\r\n * @returns An observable emitting the API result wrapping the number of deleted contacts.\r\n */\r\n deleteContacts(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/account/contacts/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a contact record.\r\n * @param item - The contact data to save.\r\n * @returns An observable emitting the API result wrapping the saved contact.\r\n */\r\n saveContact(item: ClipperContactInfo) {\r\n return this.httpClient.post<ApiResult<ClipperContactInfo>>(\r\n this.core.serviceUri + '/account/contacts/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves document notes matching the given search parameters and stores the\r\n * returned teams in the shared state.\r\n * @param params - The notes search parameters.\r\n * @returns An observable emitting the API result wrapping the notes search result.\r\n */\r\n queryNotes(params: ClipperNotesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperNotesSearchResult>>(\r\n this.core.serviceUri + '/account/notes',\r\n params\r\n ).pipe(\r\n map((r: ApiResult<ClipperNotesSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this.core.setTeams(r.value.teams);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the specified document notes.\r\n * @param ids - The numeric IDs of the notes to remove.\r\n * @returns An observable emitting the API result wrapping the number of deleted notes.\r\n */\r\n deleteNotes(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/account/notes/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a document note.\r\n * @param item - The note data to save.\r\n * @returns An observable emitting the API result wrapping the saved note.\r\n */\r\n saveNote(item: ClipperDocumentNote) {\r\n return this.httpClient.post<ApiResult<ClipperDocumentNote>>(\r\n this.core.serviceUri + '/account/notes/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the tracking history for the given document note.\r\n * @param id - The numeric ID of the note whose tracking records to retrieve.\r\n * @returns An observable emitting the API result wrapping the note tracking records.\r\n */\r\n getNoteTrackings(id: number) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentNoteTracking[]>>(\r\n this.core.serviceUri + '/account/notes/trackings/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the count of troubled tracking notifications for document notes,\r\n * which can be used to display an unread counter in the UI.\r\n * @returns An observable emitting the API result wrapping the troubled tracking count.\r\n */\r\n countNotesTrackingsTroubled() {\r\n return this.httpClient.get<ApiResult<number>>(\r\n this.core.serviceUri + '/account/notes/trackings/troubled'\r\n );\r\n }\r\n}\r\n","import { Service, Signal, WritableSignal, inject } from '@angular/core';\r\nimport { NameValueItem } from '@arsedizioni/ars-utils/core';\r\nimport {\r\n ClipperAvailableChannel,\r\n ClipperDashboard,\r\n ClipperDocumentInfo,\r\n ClipperLoginInfo,\r\n ClipperSearchResult,\r\n ClipperServiceFlags,\r\n} from '../definitions';\r\nimport { ClipperAccountService } from './account.service';\r\nimport { ClipperArchiveService } from './archive.service';\r\nimport { ClipperCalendarService } from './calendar.service';\r\nimport { ClipperCollaborationService } from './collaboration.service';\r\nimport { ClipperCoreService } from './core.service';\r\nimport { ClipperDocumentsService } from './documents.service';\r\nimport { ClipperLoginService } from './login.service';\r\n\r\n/**\r\n * Barrel / facade for the Clipper application.\r\n *\r\n * Exposes the feature services as named properties and re-exports the shared state\r\n * declared in `ClipperCoreService`. Inject `ClipperService` and reach a feature via\r\n * its property, e.g. `clipper.login.login(...)`, `clipper.documents.query(...)`,\r\n * `clipper.calendar.queryCalendar(...)`.\r\n */\r\n@Service()\r\nexport class ClipperService {\r\n\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /** Authentication: login/logout, MFA, OTP. */\r\n readonly session = inject(ClipperLoginService);\r\n /** Document search, references, export, working-documents bag and saved searches. */\r\n readonly documents = inject(ClipperDocumentsService);\r\n /** Account settings, dashboard, password, channels, trial info and user links. */\r\n readonly account = inject(ClipperAccountService);\r\n /** Archive folders and files. */\r\n readonly archive = inject(ClipperArchiveService);\r\n /** Calendar deadlines. */\r\n readonly calendar = inject(ClipperCalendarService);\r\n /** Teams, contacts and shared notes. */\r\n readonly collaboration = inject(ClipperCollaborationService);\r\n\r\n\r\n ////\r\n // RE-EXPORTED CORE STATE\r\n ////\r\n\r\n /** @returns The URI of the Clipper web application, or `undefined` if not set. */\r\n get appUri(): string | undefined { return this.core.appUri; }\r\n\r\n /** @returns The base URI of the Clipper REST API. */\r\n get serviceUri(): string { return this.core.serviceUri; }\r\n\r\n /** @returns The active feature flags. */\r\n get flags(): ClipperServiceFlags { return this.core.flags; }\r\n\r\n /** @returns The current login context, or `undefined` if not authenticated. */\r\n get loginInfo(): ClipperLoginInfo | undefined { return this.core.loginInfo; }\r\n\r\n /** @returns A read-only signal indicating whether the user is logged in. */\r\n get loggedIn(): Signal<boolean> { return this.core.loggedIn; }\r\n\r\n /** @returns A signal indicating whether a login is in progress. */\r\n get loggingIn(): WritableSignal<boolean> { return this.core.loggingIn; }\r\n\r\n /** @returns A signal holding the current documents search snapshot. */\r\n get snapshot(): WritableSignal<ClipperSearchResult | undefined> { return this.core.snapshot; }\r\n\r\n /** @returns A signal indicating whether reference search is supported. */\r\n get supportsRS(): WritableSignal<boolean> { return this.core.supportsRS; }\r\n\r\n /** @returns A signal holding the current references search snapshot. */\r\n get referencesSnapshot(): WritableSignal<ClipperSearchResult | undefined> { return this.core.referencesSnapshot; }\r\n\r\n /** @returns The shared dashboard state object. */\r\n get dashboard(): ClipperDashboard { return this.core.dashboard; }\r\n\r\n /** @returns A signal holding the working-documents bag. */\r\n get bag(): WritableSignal<ClipperDocumentInfo[]> { return this.core.bag; }\r\n\r\n /** @returns A computed signal with the number of items in the bag. */\r\n get bagTotal(): Signal<number> { return this.core.bagTotal; }\r\n\r\n /** @returns A signal controlling the Clipper UI visibility. */\r\n get visible(): WritableSignal<boolean> { return this.core.visible; }\r\n\r\n /** @returns The shared teams collection. */\r\n get teams(): NameValueItem<string>[] { return this.core.teams; }\r\n\r\n /** @returns A signal holding the available channels. */\r\n get availableChannels(): WritableSignal<ClipperAvailableChannel[]> { return this.core.availableChannels; }\r\n\r\n /** @returns A computed signal with the currently active channels. */\r\n get activeChannels(): Signal<ClipperAvailableChannel[]> { return this.core.activeChannels; }\r\n\r\n /** @returns A signal indicating whether tagging is allowed. */\r\n get allowTags(): WritableSignal<boolean> { return this.core.allowTags; }\r\n\r\n /** @returns A signal with the number of pending notes, or `undefined` if unknown. */\r\n get pendingNotes(): WritableSignal<number | undefined> { return this.core.pendingNotes; }\r\n\r\n\r\n ////\r\n // BOOTSTRAP\r\n ////\r\n\r\n /**\r\n * Initialises the application with the API base URI, optional app URI, and feature flags.\r\n * @param serviceUri - The base URI of the Clipper REST API.\r\n * @param appUri - Optional URI of the Clipper web application (used to build document links).\r\n * @param flags - Feature flags that control service behaviour. Defaults to `ClipperServiceFlags.None`.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n appUri?: string,\r\n flags: ClipperServiceFlags = ClipperServiceFlags.None,\r\n ) {\r\n this.core.initialize(serviceUri, appUri, flags);\r\n }\r\n\r\n /**\r\n * Pings the Clipper REST API to keep the session/token alive.\r\n */\r\n ping() {\r\n this.core.ping();\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { ClipperServiceFlags } from '../definitions';\r\nimport { ClipperService } from '../services/clipper.service';\r\nimport { ClipperMessages } from '../messages';\r\n\r\n/** Minimum milliseconds between consecutive error broadcasts (debounce guard). */\r\nconst ERROR_DEBOUNCE_MS = 5000;\r\n\r\n/**\r\n * HTTP interceptor that attaches Clipper authentication headers to every request\r\n * targeting the Clipper service, and broadcasts user-friendly error messages\r\n * when the server returns an error response.\r\n */\r\n@Injectable()\r\nexport class ClipperAuthInterceptor implements HttpInterceptor {\r\n private readonly clipperService = inject(ClipperService);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private lastErrorTime = -1;\r\n\r\n /**\r\n * Intercepts every outgoing HTTP request.\r\n * When the request targets the Clipper service URI, attaches credentials and\r\n * a client-ID header, then pipes the response through an error handler.\r\n * @param request - The outgoing HTTP request.\r\n * @param next - The next handler in the interceptor chain.\r\n * @returns An observable of the HTTP event stream.\r\n */\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (!request.url.startsWith(this.clipperService.serviceUri)) {\r\n return next.handle(request);\r\n }\r\n\r\n const authenticatedRequest = request.clone({\r\n withCredentials: true,\r\n setHeaders: {\r\n 'ngsw-bypass': 'ngsw-bypass',\r\n 'X-Client-Id': sessionStorage.getItem('clipper_client_id') ?? ''\r\n }\r\n });\r\n\r\n return next.handle(authenticatedRequest).pipe(\r\n catchError((error: unknown) => {\r\n this.handleError(error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Processes an HTTP error, broadcasting a user-friendly message when appropriate.\r\n * Errors are debounced: only one message is sent per `ERROR_DEBOUNCE_MS` window.\r\n *\r\n * This handler only ever runs for requests already targeting the Clipper service\r\n * (see `intercept`). A transport-level failure produces an `HttpErrorResponse`\r\n * with status `0` and a `null` url, so the url is only validated when present —\r\n * that way genuine network failures still surface the \"service unavailable\" message.\r\n * @param error - The raw error value thrown by the HTTP layer.\r\n */\r\n private handleError(error: unknown): void {\r\n if (!(error instanceof HttpErrorResponse)) return;\r\n // Reject only errors that explicitly belong to a different service; a missing\r\n // url (network failure on a Clipper request) is allowed through.\r\n if (error.url && !error.url.startsWith(this.clipperService.serviceUri)) return;\r\n\r\n const errorStatus = error.status;\r\n const shouldNotify =\r\n errorStatus === 0 ||\r\n (errorStatus > 0 && errorStatus < 500) ||\r\n (this.clipperService.flags & ClipperServiceFlags.NotifySystemErrors) > 0;\r\n\r\n if (!shouldNotify) return;\r\n\r\n const now = Date.now();\r\n if (now - this.lastErrorTime <= ERROR_DEBOUNCE_MS) return;\r\n this.lastErrorTime = now;\r\n\r\n let message: string;\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento Clipper non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (\r\n (error.error as Record<string, string> | null)?.['message'] ??\r\n error.message ??\r\n \"Impossibile eseguire l'operazione richiesta.\"\r\n ).replaceAll('\\r\\n', '</p><p>');\r\n break;\r\n }\r\n\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message,\r\n title: \"Errore in Clipper\",\r\n errorStatus,\r\n service: this.clipperService.serviceUri\r\n } as ErrorInfo\r\n );\r\n }\r\n}","// Public API surface for the Clipper services.\r\n//\r\n// `ClipperService` is the facade/barrel: inject it and reach a feature via its\r\n// property (e.g. `clipper.login.login(...)`, `clipper.documents.query(...)`).\r\n// The feature and core services are exported as well so they can be injected\r\n// directly or referenced as types where needed.\r\n\r\nexport * from './clipper.service';\r\nexport * from './login.service';\r\nexport * from './documents.service';\r\nexport * from './account.service';\r\nexport * from './archive.service';\r\nexport * from './calendar.service';\r\nexport * from './collaboration.service';","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './common/messages';\r\nexport * from './common/definitions';\r\nexport * from './common/notes';\r\nexport * from './common/interceptors/auth.interceptor';\r\nexport * from './common/services/index';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-clipper.common.mjs","sources":["../../../projects/ars-utils/clipper.common/common/messages.ts","../../../projects/ars-utils/clipper.common/common/definitions.ts","../../../projects/ars-utils/clipper.common/common/notes.ts","../../../projects/ars-utils/clipper.common/common/services/documents.service.ts","../../../projects/ars-utils/clipper.common/common/services/login.service.ts","../../../projects/ars-utils/clipper.common/common/services/core.service.ts","../../../projects/ars-utils/clipper.common/common/services/account.service.ts","../../../projects/ars-utils/clipper.common/common/services/archive.service.ts","../../../projects/ars-utils/clipper.common/common/services/calendar.service.ts","../../../projects/ars-utils/clipper.common/common/services/collaboration.service.ts","../../../projects/ars-utils/clipper.common/common/services/clipper.service.ts","../../../projects/ars-utils/clipper.common/common/interceptors/auth.interceptor.ts","../../../projects/ars-utils/clipper.common/common/services/index.ts","../../../projects/ars-utils/clipper.common/public_api.ts","../../../projects/ars-utils/clipper.common/arsedizioni-ars-utils-clipper.common.ts"],"sourcesContent":["export const ClipperMessages = {\r\n /**\r\n * Messages\r\n */\r\n\r\n // Error\r\n ERROR: '§clipper-error', \r\n SUCCESS: '§clipper-success',\r\n SUCCESS_TOAST: '§clipper-success-toast',\r\n\r\n // Login\r\n LOGIN_CHANGED: '§clipper-login-changed',\r\n LOGIN_COMPLETED: '§clipper-login-completed',\r\n LOGIN_PENDING: '§clipper-login-pending',\r\n LOGIN_FAILED: '§clipper-login-failed',\r\n LOGOUT: '§clipper-logout',\r\n LOGOUT_COMPLETED: '§clipper-logout-completed',\r\n LOGOUT_FAILED: '§clipper-logout-failed',\r\n\r\n // Document\r\n DOCUMENT_READ: '$clipper-document-read',\r\n DOCUMENT_NAVIGATE: '$clipper-document-navigate',\r\n DOCUMENT_NAVIGATED: '$clipper-document-navigated',\r\n DOCUMENT_SELECTED: '$clipper-document-selected',\r\n DOCUMENT_SELECTED_INNER: '$clipper-document-selected_inner',\r\n\r\n // Settings\r\n SETTINGS_CHANGED: '$clipper-settings-changed',\r\n\r\n // Commands\r\n COMMAND_ARCHIVE_ADD: '$clipper-command-archive-add',\r\n COMMAND_CALENDAR_ADD: '$clipper-command-calendar-add',\r\n COMMAND_WORKING_OPEN: '$clipper-command-working-documents-open',\r\n COMMAND_WORKING_ADD: '$clipper-command-working-documents-add',\r\n COMMAND_NOTES_ADD: '$clipper-command-notes-add',\r\n COMMAND_NOTES_DELETE: '$clipper-command-notes-delete',\r\n COMMAND_NOTES_UPDATE: '$clipper-command-notes-update',\r\n COMMAND_SEARCH_RESTORED: '$clipper-command-search-restored',\r\n COMMAND_SEARCH_EXECUTED: '$clipper-command-search-executed',\r\n COMMAND_SEARCH_EMPTY_RESULT: '$clipper-command-search-empty-result',\r\n COMMAND_HISTORY_OPEN: '$clipper-command-history-open',\r\n COMMAND_DASHBOARD_UPDATED: '$clipper-command-dashboard-updated',\r\n\r\n\r\n // AI\r\n AI_CONCERN_ME: '$clipper-ai-concernme',\r\n AI_EXPLAIN: '$clipper-ai-explain',\r\n AI_COMMENT: '$clipper-ai-comment',\r\n AI_NEWS: '$clipper-ai-news',\r\n\r\n // Interop\r\n INTEROP_RS_NEW_LAW: '$clipper-interop-rs-new-law',\r\n INTEROP_RS_NEW_ACTIVITY: '$clipper-interop-rs-new-activity',\r\n INTEROP_RS_USAGE_REPORT: '$clipper-interop-rs-usage-report',\r\n\r\n // Updates\r\n UPDATE_RELOAD: '§update-reload',\r\n};\r\n","import { computed, Signal, signal } from '@angular/core';\r\nimport { Folder, LoginResult, NameValueItem, QueryModel, QueryResultModel } from '@arsedizioni/ars-utils/core';\r\nimport { SendToDialogResult } from '@arsedizioni/ars-utils/ui.application';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\n\r\nexport interface EditedEventArgs<T> {\r\n data: T;\r\n isNew?: boolean;\r\n}\r\n\r\nexport interface EditDialogData<T> {\r\n currentItem?: T;\r\n isEditable?: boolean;\r\n parentId?: number;\r\n}\r\n\r\n\r\nexport interface EditDialogCompleted<T> {\r\n data: T;\r\n dismissed?: boolean;\r\n isNew?: boolean;\r\n preview?: boolean;\r\n}\r\n\r\n\r\n\r\nexport enum ClipperServiceFlags {\r\n None = 0,\r\n NotifySystemErrors = 1,\r\n DisplayConnectionStateMessages = 1 << 1,\r\n Embedded = 1 << 2\r\n}\r\n\r\nexport enum ClipperRecurrenceType {\r\n Year = 1,\r\n Month = 2,\r\n Day = 3\r\n}\r\n\r\nexport const ClipperRecurrenceTypes: NameValueItem<ClipperRecurrenceType>[] = [\r\n { name: 'Anni', value: ClipperRecurrenceType.Year },\r\n { name: 'Mesi', value: ClipperRecurrenceType.Month },\r\n { name: 'Giorni', value: ClipperRecurrenceType.Day }\r\n]\r\n\r\nexport enum ClipperSelectionMode {\r\n None = 0,\r\n Single = 1,\r\n TwoOrMore = 2,\r\n Multi = 3\r\n}\r\n\r\n\r\n\r\nexport enum ClipperModuleGroup {\r\n Home = 0,\r\n NormativaVigente = 1,\r\n UltimeNovità = 2,\r\n ParApprofondire = 3,\r\n DGInfo = 4,\r\n Giurisprudenza = 5,\r\n Calendario = 11,\r\n Archivio = 12,\r\n Evolution = 201,\r\n Ars = 202,\r\n Ricerca = 99\r\n}\r\n\r\nexport enum ClipperModule {\r\n NormativaVigente = 4,\r\n News = 1,\r\n GazzetteBollettiniEFontiDiverse = 2,\r\n Giurisprudenza = 5,\r\n ModificheAbrogazioniERinvii = 3,\r\n ScadenzeESegnalazioni = 12,\r\n AllerteAlimentari = 8,\r\n Approfondimenti = 6,\r\n QuesitiECasiRisolti = 10,\r\n MetodiDiAnalisi = 11,\r\n DGInfo = 61,\r\n Ricerca = 99,\r\n GiurisprudenzaRecente = 18\r\n\r\n}\r\n\r\nexport enum ClipperModel {\r\n Unknown = 0,\r\n AggiornamentoNormativo = 2,\r\n News = 3,\r\n Articoli = 4,\r\n Juris = 5,\r\n Quesiti = 8,\r\n NormativaVigente = 9,\r\n Scadenze = 10,\r\n Coordinamento = 11,\r\n AllerteAlimentari = 13,\r\n MetodiDiAnalisi = 14,\r\n GiurisprudenzaRecente = 18,\r\n Segnalazioni = 20,\r\n UltimeNovità = 21\r\n}\r\n\r\nexport const ClipperModels: NameValueItem<number>[] = [\r\n { value: ClipperModel.AggiornamentoNormativo, name: \"Testi storici\" },\r\n { value: ClipperModel.News, name: 'News' },\r\n { value: ClipperModel.Articoli, name: 'Articoli' },\r\n { value: ClipperModel.Juris, name: 'Note a sentenza' },\r\n { value: ClipperModel.GiurisprudenzaRecente, name: 'Giurisprudenza' },\r\n { value: ClipperModel.Quesiti, name: 'Quesiti' },\r\n { value: ClipperModel.NormativaVigente, name: 'Normativa vigente' },\r\n { value: ClipperModel.Scadenze, name: 'Scadenze' },\r\n { value: ClipperModel.AllerteAlimentari, name: 'Allerte alimentari' },\r\n { value: ClipperModel.Coordinamento, name: 'Modifiche e abrogazioni' },\r\n]\r\n\r\nexport const ClipperModuleGroups: NameValueItem<number>[] = [\r\n { name: \"Ultime novità\", value: ClipperModuleGroup.Home },\r\n { name: \"Ricerca\", value: ClipperModuleGroup.Ricerca },\r\n { name: \"DG Info\", value: ClipperModuleGroup.DGInfo },\r\n { name: \"Calendario\", value: ClipperModuleGroup.Calendario },\r\n { name: \"Archivio\", value: ClipperModuleGroup.Archivio }\r\n];\r\n\r\nexport const ClipperModules: NameValueItem<number>[] = [\r\n { name: 'News, articoli di approfondimento e note a sentenza', shortName: 'Novità', value: ClipperModule.News },\r\n { name: 'Gazzette, Bollettini e fonti diverse', shortName: 'Gazzette, Bollettini e fonti diverse', value: ClipperModule.GazzetteBollettiniEFontiDiverse },\r\n { name: 'Giurisprudenza', shortName: 'Giurisprudenza', value: ClipperModule.Giurisprudenza },\r\n { name: 'Modifiche, abrogazioni e rinvii', shortName: 'Modifiche, abrogazioni e rinvii', value: ClipperModule.ModificheAbrogazioniERinvii },\r\n { name: 'Allerte alimentari', shortName: 'Allerte alimentari', value: ClipperModule.AllerteAlimentari },\r\n { name: 'Scadenze e segnalazioni', shortName: 'Scadenze e segnalazioni', value: ClipperModule.ScadenzeESegnalazioni },\r\n { name: 'Normativa vigente', shortName: 'Normativa vigente', value: ClipperModule.NormativaVigente },\r\n { name: 'Quesiti e casi risolti', shortName: 'Quesiti', value: ClipperModule.QuesitiECasiRisolti },\r\n]\r\n\r\nexport enum ClipperChannel {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n MerciPericolose = 3,\r\n Energia = 4,\r\n DGInfo = 5\r\n}\r\n\r\nexport const ClipperChannels: NameValueItem<ClipperChannel>[] = [\r\n { value: ClipperChannel.LavoroEAmbiente, name: \"Lavoro e Ambiente\", header: \"LA\" },\r\n { value: ClipperChannel.SostanzeAlimentari, name: \"Sostanze Alimentari\", header: \"SA\" },\r\n { value: ClipperChannel.Energia, name: \"Energia\", header: \"E\" },\r\n { value: ClipperChannel.MerciPericolose, name: \"Merci Pericolose\", header: \"MP\" }\r\n]\r\n\r\nexport interface ClipperAvailableChannel extends NameValueItem<ClipperChannel> {\r\n active?: boolean;\r\n suspended?: boolean;\r\n}\r\n\r\nexport const ClipperRegions: NameValueItem<string>[] = [\r\n {\r\n value: '4RAB',\r\n name: 'Abruzzo',\r\n },\r\n {\r\n value: '4RBA',\r\n name: 'Basilicata',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: 'Calabria',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: 'Campania',\r\n },\r\n {\r\n value: '4REM',\r\n name: 'Emilia Romagna',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: 'Friuli Venezia Giulia',\r\n },\r\n {\r\n value: '4RLA',\r\n name: 'Lazio',\r\n },\r\n {\r\n value: '4RLI',\r\n name: 'Liguria',\r\n },\r\n {\r\n value: '4RLO',\r\n name: 'Lombardia',\r\n },\r\n {\r\n value: '4RMA',\r\n name: 'Marche',\r\n },\r\n {\r\n value: '4RMO',\r\n name: 'Molise',\r\n },\r\n {\r\n value: '4RPI',\r\n name: 'Piemonte',\r\n },\r\n {\r\n value: '4RPU',\r\n name: 'Puglia',\r\n },\r\n {\r\n value: '4RSA',\r\n name: 'Sardegna',\r\n },\r\n {\r\n value: '4RSI',\r\n name: 'Sicilia',\r\n },\r\n {\r\n value: '4RTO',\r\n name: 'Toscana',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: 'Trentino Alto Adige',\r\n },\r\n {\r\n value: '4RUM',\r\n name: 'Umbria',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \"Valle D'Aosta\",\r\n },\r\n {\r\n value: '4RVE',\r\n name: 'Veneto',\r\n },\r\n {\r\n value: '4PAT',\r\n name: 'Prov. Aut. Trento',\r\n },\r\n {\r\n value: '4PAB',\r\n name: 'Prov. Aut. Bolzano',\r\n }\r\n]\r\n\r\nexport interface SectorInfo extends NameValueItem<string> {\r\n\r\n group?: string;\r\n channels?: string;\r\n sectorId?: string;\r\n}\r\n\r\nexport const ClipperSectors: SectorInfo[] = [\r\n {\r\n value: 'LC',\r\n name: 'Legislazione comunitaria',\r\n shortName: 'Comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'LN',\r\n name: 'Legislazione nazionale',\r\n shortName: 'Nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n\r\n {\r\n value: 'LR',\r\n name: 'Legislazione regionale',\r\n shortName: 'Regionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RAB',\r\n name: ' Abruzzo',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAB',\r\n name: ' Prov. Aut. Bolzano',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RBA',\r\n name: ' Basilicata',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAL',\r\n name: ' Calabria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RCAM',\r\n name: ' Campania',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4REM',\r\n name: ' Emilia Romagna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RFVG',\r\n name: ' Friuli Venezia Giulia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLA',\r\n name: ' Lazio',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLI',\r\n name: ' Liguria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RLO',\r\n name: ' Lombardia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMA',\r\n name: ' Marche',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RMO',\r\n name: ' Molise',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPI',\r\n name: ' Piemonte',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RPU',\r\n name: ' Puglia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSA',\r\n name: ' Sardegna',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RSI',\r\n name: ' Sicilia',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTO',\r\n name: ' Toscana',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RTAA',\r\n name: ' Trentino Alto Adige',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4PAT',\r\n name: ' Prov. Aut. Trento',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RUM',\r\n name: ' Umbria',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVA',\r\n name: \" Valle D'Aosta\",\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: '4RVE',\r\n name: ' Veneto',\r\n group: 'A',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GC',\r\n name: 'Giurisprudenza comunitaria',\r\n shortName: 'Giur. comunitaria',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'GN',\r\n name: 'Giurisprudenza nazionale',\r\n shortName: 'Giur. nazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n {\r\n value: 'TN',\r\n name: 'Normativa tecnica',\r\n shortName: 'Tecnica',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'TI',\r\n name: 'Normativa tecnica internazionale',\r\n shortName: 'Tecnica internaz.',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },*/\r\n {\r\n value: 'NI',\r\n name: 'Normativa internazionale',\r\n shortName: 'Internazionale',\r\n group: 'S',\r\n channels: '|LA|SA|OP|E|',\r\n },\r\n /* {\r\n value: 'SN',\r\n name: 'Documentazione scientifica',\r\n shortName: 'Scientifica',\r\n group: 'S',\r\n channels: '|SA|',\r\n } */\r\n]\r\n\r\nexport const ClipperSectorTypes: NameValueItem<string>[] =\r\n [\r\n { parentValue: \"LN\", value: \"10\", name: \"Circolare Ministeriale\" },\r\n { parentValue: \"LN\", value: \"100\", name: \"Rettifica (naz.)\" },\r\n { parentValue: \"LR\", value: \"102\", name: \"Rettifica (reg.)\" },\r\n { parentValue: \"NI\", value: \"104\", name: \"Regolamento UNECE\" },\r\n { parentValue: \"SN\", value: \"105\", name: \"Documento\" },\r\n { parentValue: \"TN\", value: \"106\", name: \"Direttiva (Enti e Istituti)\" },\r\n { parentValue: \"TI\", value: \"107\", name: \"Normativa Tecnica Internazionale\" },\r\n { parentValue: \"LR\", value: \"11\", name: \"Circolare Pres. Giunta Reg\" },\r\n { parentValue: \"LC\", value: \"111\", name: \"Decisione (CEE)\" },\r\n { parentValue: \"LC\", value: \"112\", name: \"Decisione (CE)\" },\r\n { parentValue: \"LC\", value: \"113\", name: \"Decisione (UE)\" },\r\n { parentValue: \"LC\", value: \"114\", name: \"Decisione delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"115\", name: \"Decisione di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"116\", name: \"Regolamento (CEE)\" },\r\n { parentValue: \"LC\", value: \"117\", name: \"Regolamento (CE)\" },\r\n { parentValue: \"LC\", value: \"118\", name: \"Regolamento (UE)\" },\r\n { parentValue: \"LC\", value: \"119\", name: \"Regolamento delegato (UE)\" },\r\n { parentValue: \"LR\", value: \"12\", name: \"Direttiva (reg.)\" },\r\n { parentValue: \"LC\", value: \"120\", name: \"Regolamento di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"121\", name: \"Direttiva (CEE)\" },\r\n { parentValue: \"LC\", value: \"122\", name: \"Direttiva (CE)\" },\r\n { parentValue: \"LC\", value: \"123\", name: \"Direttiva (UE)\" },\r\n { parentValue: \"LC\", value: \"124\", name: \"Direttiva delegata (UE)\" },\r\n { parentValue: \"LC\", value: \"125\", name: \"Direttiva di esecuzione (UE)\" },\r\n { parentValue: \"LC\", value: \"126\", name: \"Comunicazione (CE)\" },\r\n { parentValue: \"LC\", value: \"127\", name: \"Comunicazione (UE)\" },\r\n { parentValue: \"LC\", value: \"128\", name: \"Raccomandazione (CEE)\" },\r\n { parentValue: \"LC\", value: \"129\", name: \"Raccomandazione (CE)\" },\r\n { parentValue: \"LN\", value: \"13\", name: \"Comunicato (naz.)\" },\r\n { parentValue: \"LC\", value: \"130\", name: \"Raccomandazione (UE)\" },\r\n { parentValue: \"LC\", value: \"131\", name: \"Posizione Comune (CE)\" },\r\n { parentValue: \"LC\", value: \"132\", name: \"Posizione Comune (UE)\" },\r\n { parentValue: \"LC\", value: \"133\", name: \"Risoluzione\" },\r\n { parentValue: \"LC\", value: \"134\", name: \"Trattato\" },\r\n { parentValue: \"LC\", value: \"135\", name: \"Rettifica\" },\r\n { parentValue: \"LC\", value: \"138\", name: \"Parere\" },\r\n { parentValue: \"LC\", value: \"139\", name: \"Accordi (CE)\" },\r\n { parentValue: \"NI\", value: \"14\", name: \"Convenzione Internazionale\" },\r\n { parentValue: \"LC\", value: \"140\", name: \"Atti diversi (CE/UE)\" },\r\n { parentValue: \"GC\", value: \"141\", name: \"Sentenza (CE)\" },\r\n { parentValue: \"GC\", value: \"142\", name: \"Sentenza (UE)\" },\r\n { parentValue: \"GC\", value: \"143\", name: \"Ordinanza (CE)\" },\r\n { parentValue: \"GC\", value: \"144\", name: \"Ordinanza (UE)\" },\r\n { parentValue: \"LC\", value: \"145\", name: \"Direttiva (Euratom)\" },\r\n { parentValue: \"LC\", value: \"146\", name: \"Decisione (Euratom)\" },\r\n { parentValue: \"LC\", value: \"147\", name: \"Regolamento (Euratom)\" },\r\n { parentValue: \"LC\", value: \"148\", name: \"Raccomandazione (Euratom)\" },\r\n { parentValue: \"LN\", value: \"15\", name: \"Costituzione della Repubblica\" },\r\n { parentValue: \"LN\", value: \"16\", name: \"Linee guida (naz.)\" },\r\n { parentValue: \"LN\", value: \"17\", name: \"Circolare Commissariale\" },\r\n { parentValue: \"LN\", value: \"18\", name: \"Decreto Commissariale\" },\r\n { parentValue: \"LR\", value: \"19\", name: \"Decreto dell'Assessore Regionale\" },\r\n { parentValue: \"TN\", value: \"20\", name: \"Comunicato (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"21\", name: \"Decreto Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"22\", name: \"Decreto Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"23\", name: \"Decreto Pres. Giunta Reg.\" },\r\n { parentValue: \"LR\", value: \"24\", name: \"Decreto Pres. Giunta Prov.\" },\r\n { parentValue: \"LN\", value: \"25\", name: \"Decreto Presidente Repubblica\" },\r\n { parentValue: \"LN\", value: \"26\", name: \"Documento di consultazione\" },\r\n { parentValue: \"LN\", value: \"27\", name: \"Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"28\", name: \"Decreto Legge Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"29\", name: \"D.Lgs. Capo Provv. Stato\" },\r\n { parentValue: \"LN\", value: \"3\", name: \"Direttiva (naz.)\" },\r\n { parentValue: \"LN\", value: \"30\", name: \"D.Lgs. Governo\" },\r\n { parentValue: \"LR\", value: \"31\", name: \"Delib. Consiglio Prov.\" },\r\n { parentValue: \"LN\", value: \"32\", name: \"D.Lgs. Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"33\", name: \"Decreto Luogotenenziale\" },\r\n { parentValue: \"LN\", value: \"34\", name: \"Decreto Ministeriale\" },\r\n { parentValue: \"LN\", value: \"35\", name: \"Deliberazione (naz.)\" },\r\n { parentValue: \"LR\", value: \"36\", name: \"Delib. Consiglio Reg.\" },\r\n { parentValue: \"LR\", value: \"37\", name: \"Delib. Giunta Prov.\" },\r\n { parentValue: \"LR\", value: \"38\", name: \"Delib. Giunta Reg.\" },\r\n { parentValue: \"LN\", value: \"4\", name: \"Accordo\" },\r\n { parentValue: \"TN\", value: \"40\", name: \"Delibera (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"41\", name: \"Decreto Penale\" },\r\n { parentValue: \"LN\", value: \"42\", name: \"Lettera Circolare (Comitati)\" },\r\n { parentValue: \"LN\", value: \"43\", name: \"Lettera Circolare Ministeriale\" },\r\n { parentValue: \"TN\", value: \"44\", name: \"Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"45\", name: \"Istruzione Tecnica\" },\r\n { parentValue: \"LR\", value: \"46\", name: \"Circolare dell'Assessore Regionale\" },\r\n { parentValue: \"LN\", value: \"47\", name: \"Determinazione (naz.)\" },\r\n { parentValue: \"LN\", value: \"48\", name: \"Legge\" },\r\n { parentValue: \"LR\", value: \"49\", name: \"Legge Prov. Aut.\" },\r\n { parentValue: \"LR\", value: \"5\", name: \"Decreto Assessore Prov.\" },\r\n { parentValue: \"LR\", value: \"50\", name: \"Legge Regionale\" },\r\n { parentValue: \"LR\", value: \"51\", name: \"Linee guida (reg.)\" },\r\n { parentValue: \"TN\", value: \"52\", name: \"Regolamento (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"53\", name: \"Fascicolo (Enti ed Istituti)\" },\r\n { parentValue: \"GN\", value: \"54\", name: \"Ordinanza\" },\r\n { parentValue: \"LR\", value: \"55\", name: \"Ordinanza Pres. Reg.\" },\r\n { parentValue: \"LN\", value: \"56\", name: \"Nota Ministeriale\" },\r\n { parentValue: \"LN\", value: \"57\", name: \"Ordinanza Ministeriale\" },\r\n { parentValue: \"LN\", value: \"58\", name: \"Circolare (Comitati)\" },\r\n { parentValue: \"TN\", value: \"59\", name: \"Lettera Circolare (Enti ed Istituti)\" },\r\n { parentValue: \"NI\", value: \"6\", name: \"Accordo Multilaterale\" },\r\n { parentValue: \"TN\", value: \"60\", name: \"Decreto (Enti ed Istituti)\" },\r\n { parentValue: \"LN\", value: \"61\", name: \"Decreto del Capo del Governo\" },\r\n { parentValue: \"GN\", value: \"62\", name: \"Ricorso\" },\r\n { parentValue: \"GN\", value: \"63\", name: \"Decisione\" },\r\n { parentValue: \"LR\", value: \"65\", name: \"Regolamento Regionale\" },\r\n { parentValue: \"LN\", value: \"66\", name: \"Regio Decreto\" },\r\n { parentValue: \"LN\", value: \"67\", name: \"Regio Decreto Legge\" },\r\n { parentValue: \"LN\", value: \"68\", name: \"Regio Decreto Legislativo\" },\r\n { parentValue: \"LR\", value: \"69\", name: \"Altri documenti (reg.)\" },\r\n { parentValue: \"LR\", value: \"70\", name: \"Comunicato (reg.)\" },\r\n { parentValue: \"LN\", value: \"71\", name: \"Statuto delle Regioni Ordinarie\" },\r\n { parentValue: \"GN\", value: \"72\", name: \"Sentenza\" },\r\n { parentValue: \"TN\", value: \"73\", name: \"Altri documenti (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"74\", name: \"Prassi di riferimento\" },\r\n { parentValue: \"LN\", value: \"75\", name: \"Altri documenti (naz.)\" },\r\n { parentValue: \"LN\", value: \"76\", name: \"Provvedimento (naz.)\" },\r\n { parentValue: \"TN\", value: \"77\", name: \"Pubblicazione (Enti ed Istituti)\" },\r\n { parentValue: \"TN\", value: \"79\", name: \"Linee guida (Enti ed Istituti)\" },\r\n { parentValue: \"LR\", value: \"80\", name: \"Decreto del Dirigente (reg.)\" },\r\n { parentValue: \"LR\", value: \"81\", name: \"Determinazione del Dirigente (reg.)\" },\r\n { parentValue: \"LN\", value: \"82\", name: \"Ordinanza Pres. Cons. Ministri\" },\r\n { parentValue: \"LR\", value: \"83\", name: \"Circolare (reg.)\" },\r\n { parentValue: \"TN\", value: \"84\", name: \"Istruzione Operativa (Enti e Istituti)\" },\r\n { parentValue: \"LR\", value: \"85\", name: \"Provvedimento (reg.)\" },\r\n { parentValue: \"TN\", value: \"86\", name: \"Quaderno\" },\r\n { parentValue: \"LR\", value: \"9\", name: \"Ordinanza Pres. Prov.\" },\r\n { parentValue: \"LN\", value: \"91\", name: \"Ordinanza Commissariale\" },\r\n { parentValue: \"LN\", value: \"93\", name: \"Risoluzione (naz.)\" },\r\n { parentValue: \"TN\", value: \"94\", name: \"Nota (Enti e Istituti)\" },\r\n { parentValue: \"TN\", value: \"97\", name: \"Opuscolo Tecnico\" },\r\n { parentValue: \"TN\", value: \"98\", name: \"Norma Tecnica\" },\r\n { parentValue: \"NI\", value: \"99\", name: \"Norma Tecnica Internaz.\" }\r\n ]\r\n\r\nexport const ClipperAuthors: SectorInfo[] = [\r\n {\r\n value: \"1CAM\",\r\n sectorId: undefined,\r\n name: \"Camera dei Deputati\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MA\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAE\",\r\n sectorId: undefined,\r\n name: \"Ministero degli Affari Esteri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAP\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Attività Produttive\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MARP\",\r\n sectorId: undefined,\r\n name: \"Ministero per gli Affari Regionali e per i Problemi Istituzionali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASAF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Agricoltura, della Sovranità Alimentare e delle Foreste\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MASE\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Sicurezza Energetica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATT\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MATTM\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Ambiente e della Tutela del Territorio e del Mare\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MAU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Aree Urbane\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni e delle Attività Culturali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MBCA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Beni Culturali e Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MC\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Comunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCE\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio con l'Estero\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCI\",\r\n sectorId: undefined,\r\n name: \"Ministero del Commercio Internazionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento delle Politiche Comunitarie\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCRU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Ricerca Universitaria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MCU\",\r\n sectorId: undefined,\r\n name: \"Ministero della Cultura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MDIF\",\r\n sectorId: undefined,\r\n name: \"Ministero della Difesa\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MEF\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Economia e delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Finanze\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MFP\",\r\n sectorId: undefined,\r\n name: \"Ministero della Funzione Pubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MG\",\r\n sectorId: undefined,\r\n name: \"Ministero della Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MGG\",\r\n sectorId: undefined,\r\n name: \"Ministero di Grazia e Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MI\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Interno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MICA\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Industria, il Commercio e l'Artigianato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIME\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione e del Merito\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMI\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Imprese e del Made in Italy\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIMS\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e della Mobilità Sostenibili\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MINF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MISM\",\r\n sectorId: undefined,\r\n name: \"Ministero per l'Intervento Straordinario nel Mezzogiorno\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Infrastrutture e dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MIUR\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Istruzione, Università e Ricerca\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLP\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPO\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro e Previdenza Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MLSPS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Lavoro, della Salute e delle Politiche Sociali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MMM\",\r\n sectorId: undefined,\r\n name: \"Ministero della Marina Mercantile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAAFT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole Alimentari e Forestali e del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Politiche Agricole e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPC\",\r\n sectorId: undefined,\r\n name: \"Ministero per il Coordinamento della Protezione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPI\",\r\n sectorId: undefined,\r\n name: \"Ministero della Pubblica Istruzione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MPT\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Poste e Telecomunicazioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRAAF\",\r\n sectorId: undefined,\r\n name: \"Ministero delle Risorse Agricole, Alimentari e Forestali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MRP\",\r\n sectorId: undefined,\r\n name: \"Ministero per i Rapporti Parlamentari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MS\",\r\n sectorId: undefined,\r\n name: \"Ministero della Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSA\",\r\n sectorId: undefined,\r\n name: \"Ministero della Salute\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MSE\",\r\n sectorId: undefined,\r\n name: \"Ministero dello Sviluppo Economico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MT\",\r\n sectorId: undefined,\r\n name: \"Ministero del Tesoro\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTAC\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e dell'Aviazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTE\",\r\n sectorId: undefined,\r\n name: \"Ministero della Transizione Ecologica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTNA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti e della Navigazione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTRA\",\r\n sectorId: undefined,\r\n name: \"Ministero dei Trasporti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTS\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo e dello Spettacolo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MTU\",\r\n sectorId: undefined,\r\n name: \"Ministero del Turismo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1MURS\",\r\n sectorId: undefined,\r\n name: \"Ministero dell'Universitá e della Ricerca Scientifica e Tecnica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PCM\",\r\n sectorId: undefined,\r\n name: \"Presidente del Consiglio dei Ministri\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1PR\",\r\n sectorId: undefined,\r\n name: \"Presidente della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"1SEN\",\r\n sectorId: undefined,\r\n name: \"Senato della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEG\",\r\n sectorId: undefined,\r\n name: \"Autorità per l'Energia Elettrica e il Gas\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AEEGSI\",\r\n sectorId: undefined,\r\n name: \"Autorità Energia Elettrica e Gas e Sistema Idrico\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARERA\",\r\n sectorId: undefined,\r\n name: \"Autorità di Regolazione per Energia, Reti e Ambiente\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2ARIR\",\r\n sectorId: undefined,\r\n name: \"Autorità di Vigilanza sulle Risorse Idriche e sui Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVCP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Contratti Pubblici di Lavori, Servizi e Forniture\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2AVLP\",\r\n sectorId: undefined,\r\n name: \"Autorità per la Vigilanza sui Lavori Pubblici\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAGA\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Naz. Gestori Ambientali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CAN\",\r\n sectorId: undefined,\r\n name: \"Comitato per le Aree Naturali protette.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDEA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Ambientale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDMN\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per la Sicurezza dei Materiali Nucleari\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CDRA\",\r\n sectorId: undefined,\r\n name: \"Commissario delegato per l'Emergenza Rifiuti e la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIAB\",\r\n sectorId: undefined,\r\n name: \"Comitato Istituzionale Autorità di Bacino\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CICP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Coordinamento Politica Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIP\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale Prezzi\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPE\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIPESS\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Programmazione Economica e lo Sviluppo Sostenibile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CIR\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per i Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CITA\",\r\n sectorId: undefined,\r\n name: \"Comitato Interministeriale per la Tutela delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSR\",\r\n sectorId: undefined,\r\n name: \"Conferenza Permanente Rapporti Stato e Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CSSR\",\r\n sectorId: undefined,\r\n name: \"Comitato Naz. Albo Imprese Esercenti Servizi Smaltimento Rifiuti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2CUN\",\r\n sectorId: undefined,\r\n name: \"Conferenza Unificata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"2GPDP\",\r\n sectorId: undefined,\r\n name: \"Garante per la Protezione dei Dati Personali\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CCEE\",\r\n sectorId: \"LC\",\r\n name: \"Commissario CEE/CE\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CDR\",\r\n sectorId: \"LC\",\r\n name: \"Comitato delle Regioni\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CEDM\",\r\n sectorId: \"LC\",\r\n name: \"Corte Europea per i Diritti dell'Uomo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CES\",\r\n sectorId: \"LC\",\r\n name: \"Comitato Economico e Sociale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCE\",\r\n sectorId: \"LC\",\r\n name: \"Corte di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CJCO\",\r\n sectorId: \"LC\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3COMM\",\r\n sectorId: \"LC\",\r\n name: \"Commissione\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONS\",\r\n sectorId: \"LC\",\r\n name: \"Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CONSUE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento e Consiglio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3CWJ\",\r\n sectorId: \"LC\",\r\n name: \"Corte Internazionale di Giustizia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3EFTA\",\r\n sectorId: \"LC\",\r\n name: \"EFTA - Associaz. Europea di Libero Scambio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3OTIF\",\r\n sectorId: \"LC\",\r\n name: \"OTIF - Intergov. Org. for International Carriage by Rail\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3PAE\",\r\n sectorId: \"LC\",\r\n name: \"Parlamento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3T1CE\",\r\n sectorId: \"LC\",\r\n name: \"Tribunale di Primo Grado\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"3UNECE\",\r\n sectorId: \"LC\",\r\n name: \"UNECE - United Nations Economic Commission for Europe\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAB\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Bolzano\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4PAT\",\r\n sectorId: \"LR\",\r\n name: \"Prov. Autonoma di Trento\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RAB\",\r\n sectorId: \"LR\",\r\n name: \"Regione Abruzzo\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RBA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Basilicata\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAL\",\r\n sectorId: \"LR\",\r\n name: \"Regione Calabria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RCAM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Campania\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4REM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Emilia Romagna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RFVG\",\r\n sectorId: \"LR\",\r\n name: \"Regione Friuli Venezia Giulia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lazio\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Liguria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RLO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Lombardia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Marche\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RMO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Molise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Piemonte\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RPU\",\r\n sectorId: \"LR\",\r\n name: \"Regione Puglia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sardegna\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RSI\",\r\n sectorId: \"LR\",\r\n name: \"Regione Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTAA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Trentino Alto Adige\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RTO\",\r\n sectorId: \"LR\",\r\n name: \"Regione Toscana\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RUM\",\r\n sectorId: \"LR\",\r\n name: \"Regione Umbria\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVA\",\r\n sectorId: \"LR\",\r\n name: \"Regione Valle D'Aosta\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"4RVE\",\r\n sectorId: \"LR\",\r\n name: \"Regione Veneto\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CAS\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CASA\",\r\n sectorId: \"GN\",\r\n name: \"Corte d'Assise d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CC\",\r\n sectorId: \"GN\",\r\n name: \"Corte Costituzionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCC\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Civile\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CCP\",\r\n sectorId: \"GN\",\r\n name: \"Corte di Cassazione Penale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDC\",\r\n sectorId: \"GN\",\r\n name: \"Corte dei Conti\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CDS\",\r\n sectorId: \"GN\",\r\n name: \"Consiglio di Stato\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CGAS\",\r\n sectorId: \"GN\",\r\n name: \"Cons. di Giustizia Amm.va della Sicilia\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTP\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Provinciale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5CTR\",\r\n sectorId: \"GN\",\r\n name: \"Commissione Tributaria Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5GDP\",\r\n sectorId: \"GN\",\r\n name: \"Giudice di Pace\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5P\",\r\n sectorId: \"GN\",\r\n name: \"Pretura\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PCA\",\r\n sectorId: \"GN\",\r\n name: \"Procura Generale Corte d'Appello\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5PR\",\r\n sectorId: \"GN\",\r\n name: \"Procura della Repubblica\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5T\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TAR\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Amministrativo Regionale\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TGA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Regionale acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"5TSA\",\r\n sectorId: \"GN\",\r\n name: \"Tribunale Superiore delle Acque\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CAC\",\r\n sectorId: \"TN\",\r\n name: \"Codex Alimentarius Commission\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CEI\",\r\n sectorId: \"TN\",\r\n name: \"C.E.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6CNR\",\r\n sectorId: \"TN\",\r\n name: \"C.N.R.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ENPI\",\r\n sectorId: \"TN\",\r\n name: \"E.N.P.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INAI\",\r\n sectorId: \"TN\",\r\n name: \"I.N.A.I.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6INPS\",\r\n sectorId: \"TN\",\r\n name: \"I.N.P.S.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISO\",\r\n sectorId: \"NI\",\r\n name: \"I.S.O.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISPS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.P.E.S.L.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6ISS\",\r\n sectorId: \"TN\",\r\n name: \"I.S.S. - Istituto Superiore di Sanità\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6NSF\",\r\n sectorId: \"TN\",\r\n name: \"NSF International\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6UNI\",\r\n sectorId: \"TN\",\r\n name: \"U.N.I.\",\r\n channels: undefined\r\n },\r\n {\r\n value: \"6USDA\",\r\n sectorId: \"TN\",\r\n name: \"USDA - United States Department of Agriculture\",\r\n channels: undefined\r\n }\r\n]\r\n\r\nexport const ClipperSources: NameValueItem<string>[] = [\r\n {\r\n value: 'ACCML',\r\n name: 'Accordi Multilaterali',\r\n },\r\n {\r\n value: 'AEEG',\r\n name: \"Sito Autorità per l'Energia Elettrica, il Gas e il Sistema Idrico\",\r\n },\r\n {\r\n value: 'ARERA',\r\n name: 'Sito Autorità di Regolazione per Energia, Reti e Ambiente',\r\n },\r\n {\r\n value: 'BUR',\r\n name: 'Bollettino Uff. Regione',\r\n },\r\n {\r\n value: 'BUS',\r\n name: 'Suppl. speciale al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSO',\r\n name: 'Suppl. ordin. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'BUSS',\r\n name: 'Suppl. straord. al Bollettino Uff.',\r\n },\r\n {\r\n value: 'GU',\r\n name: 'Gazzetta Ufficiale Italiana',\r\n },\r\n {\r\n value: 'GUCC',\r\n name: 'Gazz. Uff. Corte Costituzionale',\r\n },\r\n {\r\n value: 'GUCE',\r\n name: 'Gazzetta ufficiale delle Comunità europee',\r\n },\r\n {\r\n value: 'GUES',\r\n name: 'Gazz. Uff. Ediz. Speciale',\r\n },\r\n {\r\n value: 'GURS',\r\n name: 'Gazz. Uff. Regione Sicilia',\r\n },\r\n {\r\n value: 'GUS',\r\n name: 'Gazz. Uff. Serie Speciale',\r\n },\r\n {\r\n value: 'GUSO',\r\n name: 'Suppl. ordin. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUSS',\r\n name: 'Suppl. straord. alla Gazzetta Ufficiale',\r\n },\r\n {\r\n value: 'GUUE',\r\n name: 'Gazzetta ufficiale dell’Unione europea',\r\n },\r\n {\r\n value: 'MAC',\r\n name: 'Massimario Civile',\r\n },\r\n {\r\n value: 'MAP',\r\n name: 'Massimario Penale',\r\n },\r\n {\r\n value: 'NONE',\r\n name: 'Fonti diverse',\r\n }\r\n]\r\n\r\n\r\nexport interface ClipperSettingsInfo {\r\n lastUpdated?: Date;\r\n enableNotifications: boolean;\r\n channels?: ClipperChannelSettings[];\r\n bulletinTaxonomy?: string[];\r\n bulletinOrigins?: string[];\r\n enableBulletinFilter: boolean;\r\n}\r\n\r\nexport class ClipperUpdateChannelsStateParams {\r\n activeChannels: ClipperChannel[] = [];\r\n}\r\n\r\nexport interface ClipperChannelSettingsItem<T> {\r\n name: string;\r\n value: T;\r\n checked: boolean;\r\n}\r\n\r\nexport class ClipperChannelSettings {\r\n channelId?: ClipperChannel;\r\n channelName?: string;\r\n isEnabled?: boolean = false;\r\n isSuspended?: boolean = false;\r\n isActive?: boolean = false;\r\n sectors: ClipperChannelSettingsItem<string>[] = [];\r\n regions: ClipperChannelSettingsItem<string>[] = [];\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given sector codes\r\n * matches a sector assigned to this channel.\r\n * @param values - Array of sector code strings to test against.\r\n */\r\n hasAnyOfSectors(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.sectors.some(s => s.value === v));\r\n }\r\n\r\n /**\r\n * Returns `true` when the channel is active and at least one of the given region codes\r\n * matches a region assigned to this channel.\r\n * @param values - Array of region code strings to test against.\r\n */\r\n hasAnyOfRegions(values: string[]): boolean {\r\n if (this.isEnabled !== true || this.isActive !== true) return false;\r\n return values.some(v => this.regions.some(r => r.value === v));\r\n }\r\n\r\n}\r\n\r\nexport interface ClipperUserChannelInfo {\r\n channel: ClipperChannel;\r\n channelName?: string;\r\n expiringDate: string;\r\n isTrial?: boolean;\r\n isDisabled: boolean;\r\n isSuspended: boolean;\r\n isDvd: boolean;\r\n isActive: boolean;\r\n documentsViewable?: number;\r\n documentsViewed?: number;\r\n settings?: ClipperChannelSettings;\r\n}\r\n\r\nexport interface ClipperUserInfo {\r\n userId: number;\r\n customerId?: number;\r\n companyName: string;\r\n displayName: string;\r\n firstName: string;\r\n email: string;\r\n oauth?: boolean;\r\n sessionId?: string;\r\n scope: number;\r\n isAuthenticated: boolean;\r\n isTemporary: boolean;\r\n hasTrial: boolean;\r\n hasTeam: boolean;\r\n hasSharedNotes: boolean;\r\n hasSharedArchive: boolean;\r\n hasSharedCalendar: boolean;\r\n hasBulletin: boolean;\r\n hasAI: boolean;\r\n hasAIAssistant: boolean;\r\n hasAIEditor: boolean;\r\n channels: ClipperUserChannelInfo[];\r\n firstChannelTrial: ClipperUserChannelInfo;\r\n trialInfo?: ClipperUserTrialInfo;\r\n}\r\n\r\nexport interface ClipperLoginResult extends LoginResult<ClipperUserInfo> {\r\n settings?: ClipperChannelSettings[];\r\n}\r\n\r\nexport interface ClipperLoginInfo {\r\n context?: ClipperUserInfo;\r\n complianceContext?: any;\r\n channels?: ClipperChannelSettings[];\r\n oauth?: LoginOAuthType;\r\n remember?: boolean;\r\n}\r\n\r\nexport enum ClipperQueryDocumentFlags {\r\n None = 0,\r\n TitleOnly = 1,\r\n AbrogatedOnly = 1 << 1,\r\n NotAbrogatedOnly = 1 << 2,\r\n CommentedOnly = 1 << 3,\r\n UseSemanticSearch = 1 << 5,\r\n NotRead = 1 << 6,\r\n ExcludeUserFilters = 1 << 7\r\n}\r\n\r\nexport class ClipperSearchParams {\r\n version: number = 6;\r\n searchId?: number;\r\n searchName?: string;\r\n text?: string;\r\n title?: string;\r\n titleOnly?: boolean = false;\r\n showUnreadDocumentsOnly?: boolean = false;\r\n showCommentedDocumentsOnly?: boolean = false;\r\n showNotAbrogatedDocumentsOnly?: boolean = false;\r\n number?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n year?: number;\r\n sourceNumber?: string;\r\n source?: string;\r\n sourceFromDate?: Date;\r\n sourceToDate?: Date;\r\n sourceYear?: number;\r\n sector?: string;\r\n sectors?: SectorInfo[];\r\n topic?: string;\r\n topics?: NameValueItem<string>[];\r\n taxonomy?: string;\r\n taxonomies?: NameValueItem<string>[];\r\n taxonomyPath?: string;\r\n taxonomyNode?: string;\r\n type?: string;\r\n types?: NameValueItem<string>[];\r\n tag?: string;\r\n tags?: NameValueItem<string>[];\r\n author?: string;\r\n authors?: NameValueItem<string>[];\r\n changeReason?: number;\r\n changedNumber?: string;\r\n changedYear?: number;\r\n changedTitle?: string;\r\n changedId?: string;\r\n modifierId?: string;\r\n modifierNumber?: string;\r\n modifierYear?: number;\r\n modifierTitle?: string;\r\n model?: ClipperModel;\r\n models?: ClipperModel[];\r\n module?: ClipperModule;\r\n modules?: NameValueItem<ClipperModule>[];\r\n mode?: ClipperQueryReferencesMode;\r\n channels?: NameValueItem<ClipperChannel>[] = [...ClipperChannels];\r\n count?: number = 15;\r\n id?: string;\r\n anchor?: string;\r\n excludeTextReferences?: boolean = false;\r\n excludeNotesReferences?: boolean = false;\r\n useModifierInfo?: boolean = false;\r\n returnModifierInfo?: boolean = false;\r\n flags?: ClipperQueryDocumentFlags;\r\n first?: number = 0;\r\n sortMode?: number;\r\n}\r\n\r\nexport interface ClipperReferencesSearchParams {\r\n documentId: string;\r\n year?: number;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n model?: string;\r\n mode?: ClipperQueryReferencesMode;\r\n excludeTextReferences?: boolean;\r\n excludeNotesReferences?: boolean;\r\n useModifierInfo?: boolean;\r\n returnModifierInfo?: boolean;\r\n count?: number;\r\n first?: number;\r\n}\r\n\r\nexport enum ClipperDocumentContainer {\r\n None = 0,\r\n LavoroEAmbiente = 1,\r\n SostanzeAlimentari = 2,\r\n OrangeProject = 4,\r\n Energia = 8,\r\n DGInfo = 0x10,\r\n DLGS231 = 0x20,\r\n All = 0x3F\r\n}\r\n\r\nexport const ClipperDocumentChangeReasons: NameValueItem<number>[] = [\r\n { name: 'Abrogazione', value: 1 },\r\n { name: 'Annullamento', value: 5 },\r\n { name: 'Modifica', value: 2 },\r\n { name: 'Sostiuzione', value: 3 },\r\n { name: 'Segnalazione', value: 6 },\r\n { name: 'Rettifica', value: 7 },\r\n]\r\n\r\nexport interface ClipperDocumentAnchorInfo {\r\n documentId?: string;\r\n type?: number;\r\n typeDescription?: string;\r\n text?: string;\r\n title?: string;\r\n description?: string;\r\n uri: string;\r\n ordinal?: string;\r\n score?: number;\r\n chunk?: number;\r\n veryRelevant?: boolean;\r\n value?: string;\r\n level?: number;\r\n}\r\n\r\nexport interface ClipperDocumentRelevantChunkHit {\r\n id?: number;\r\n score: string;\r\n text: string;\r\n index?: number;\r\n uri?: string;\r\n}\r\n\r\nexport interface ClipperDocumentRelevants {\r\n items: ClipperDocumentAnchorInfo[];\r\n hits: number;\r\n hit: number;\r\n chunks: number;\r\n}\r\n\r\nexport interface ClipperDocumentNoteTracking {\r\n id: string;\r\n userMailId: number;\r\n email?: string;\r\n sentDate: Date;\r\n openDate?: Date;\r\n}\r\n\r\nexport interface ClipperDocumentNote {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n documentId?: string;\r\n documentTitle?: string;\r\n color?: string;\r\n name?: string;\r\n note?: string;\r\n trackings?: ClipperDocumentNoteTracking[];\r\n trackingsCount?: number;\r\n trackingsOpenedCount?: number;\r\n expiringDate?: Date; \r\n isExpired?: boolean;\r\n isTroubled?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n created?: Date;\r\n}\r\n\r\nexport interface ClipperNotesSearchParams extends QueryModel {\r\n documentId?: string;\r\n teamId?: string;\r\n teamTitle?: string;\r\n color?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n state?: number;\r\n}\r\n\r\nexport interface ClipperNotesSearchResult extends QueryResultModel<ClipperDocumentNote> {\r\n teams: NameValueItem<string>[];\r\n}\r\n\r\nexport interface ClipperDocumentInfo {\r\n id?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n model?: number;\r\n modelName?: string;\r\n module?: number;\r\n moduleName?: string;\r\n channelName?: string;\r\n group?: string;\r\n title2?: string;\r\n title1?: string;\r\n tags?: string;\r\n topics?: string;\r\n number?: string;\r\n date?: Date;\r\n description?: string;\r\n publishingDate?: Date;\r\n pictureId?: string;\r\n sourceNumber?: string;\r\n sourceDate?: Date;\r\n source?: string;\r\n sector?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n author?: string;\r\n anchors?: ClipperDocumentAnchorInfo[];\r\n notes?: ClipperDocumentNote[];\r\n chunks?: ClipperDocumentAnchorInfo[];\r\n chunksList?: string;\r\n taxonomy?: string;\r\n taxonomyPath?: string;\r\n info?: string;\r\n isRead?: boolean;\r\n isExportable?: boolean;\r\n isCommented?: boolean;\r\n isJuris?: boolean;\r\n isOver?: boolean;\r\n isTrial?: boolean;\r\n isNew?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isMenuOpen?: boolean;\r\n applicableFromDate?: Date;\r\n validityState?: number;\r\n validFromDate?: Date;\r\n validUntilDate?: Date;\r\n validityDescription?: string;\r\n validityInfo?: string;\r\n expiringDate?: Date;\r\n expiringDescription?: string;\r\n expiringInfo?: string;\r\n popularity?: number;\r\n part?: number;\r\n primaryId?: string;\r\n primaryDescription?: string;\r\n primaryModel?: number;\r\n hasPrimary?: boolean;\r\n secondaryId?: string;\r\n bag?: any;\r\n lastUpdate?: string;\r\n\r\n}\r\n\r\nexport class ClipperSearchResult {\r\n days?: string;\r\n interval?: string;\r\n items?: ClipperDocumentInfo[];\r\n facets?: ClipperSearchFacetsSnapshot = new ClipperSearchFacetsSnapshot();\r\n tags?: NameValueItem<string>[];\r\n total?: number;\r\n terms?: string[];\r\n searchInfo?: any;\r\n searchParams?: ClipperSearchParams = new ClipperSearchParams();\r\n snapshotMode?: ClipperQueryReferencesMode;\r\n}\r\n\r\nexport interface ClipperSearchFacet {\r\n type: number;\r\n typeName: string;\r\n title: string;\r\n value: string;\r\n count: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetGroup {\r\n name: string;\r\n selectedValue?: string;\r\n selectedValueDescription?: string;\r\n values: ClipperSearchFacet[];\r\n index: number;\r\n}\r\n\r\nexport interface ClipperSearchFacetsResult {\r\n interval?: string;\r\n facets?: ClipperSearchFacet[][];\r\n total?: number;\r\n}\r\n\r\n\r\nexport class ClipperSearchFacetsSnapshot {\r\n groups: ClipperSearchFacetGroup[] = [];\r\n usedGroups: ClipperSearchFacetGroup[] = [];\r\n hasFacets: boolean = false;\r\n hasMoreFacets: boolean = false;\r\n hasTooManyResults: boolean = false;\r\n sector?: string;\r\n author?: string;\r\n anchor?: string;\r\n type?: string;\r\n reason?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n interval?: string;\r\n}\r\n\r\nexport interface ClipperSearchCalendarSnapshotMonth {\r\n days: number[];\r\n monthShortName: string;\r\n monthName: string;\r\n month: number;\r\n year: number;\r\n total: number;\r\n expired: number;\r\n expiring: number;\r\n}\r\n\r\nexport class ClipperSearchCalendarSnapshotResult {\r\n months?: ClipperSearchCalendarSnapshotMonth[];\r\n}\r\n\r\n\r\n\r\nexport enum ClipperSort {\r\n Default = 0,\r\n Relevance = 1,\r\n DateAsc = 2,\r\n DateDesc = 3,\r\n SourceDateAsc = 7,\r\n SourceDateDesc = 8,\r\n Popularity = 5\r\n}\r\n\r\nexport enum ClipperQueryReferencesMode {\r\n ReferencesIn = 1,\r\n ReferencesOut = 2,\r\n ChangesIn = 3,\r\n ChangesOut = 5,\r\n Juris = 4\r\n}\r\n\r\nexport enum ClipperFacet {\r\n Sector = 1,\r\n Year = 2,\r\n DocumentType = 3,\r\n Topic = 4,\r\n Article = 5,\r\n Author = 6,\r\n Reason = 95\r\n}\r\n\r\nexport interface ClipperOTPInfo {\r\n code: string;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n}\r\n\r\nexport enum ClipperExportDocumentsFormat {\r\n Deafault = 1,\r\n iCalendar = 2\r\n}\r\n\r\nexport interface ClipperExportDocumentsParams {\r\n query: ClipperSearchParams;\r\n ids: string[];\r\n format?: ClipperExportDocumentsFormat;\r\n}\r\n\r\nexport interface ClipperSendDocumentsByEmailParams extends SendToDialogResult {\r\n ids?: string[];\r\n isCalendar?: boolean;\r\n public?: string;\r\n userNoteId?: number;\r\n}\r\n\r\n\r\nexport interface ClipperNotifyDocumentNoteParams extends SendToDialogResult {\r\n userNoteId?: number;\r\n notifyIfNotOpen?: boolean;\r\n resend?: boolean;\r\n}\r\n\r\nexport interface ClipperDocumentStructure {\r\n id: string;\r\n title: string;\r\n items?: ClipperDocumentAnchorInfo[];\r\n}\r\n\r\n\r\nexport interface ClipperSearchFilter {\r\n container: ClipperDocumentContainer;\r\n models: number[];\r\n sectors: string[];\r\n regions: string[];\r\n notifications: number[];\r\n isEnabled: boolean;\r\n isActive: boolean;\r\n}\r\nexport interface ClipperTaxonomyParams {\r\n countItems: boolean;\r\n model: ClipperModel;\r\n userFilters?: ClipperSearchFilter[];\r\n}\r\n\r\nexport interface ClipperUserSearch {\r\n id?: number;\r\n userId?: number;\r\n name?: string;\r\n module?: ClipperModule;\r\n data?: string;\r\n}\r\n\r\nexport interface ClipperUserWorkingDocument {\r\n userId?: number;\r\n documentId?: string;\r\n documentDescriptor?: string;\r\n title1?: string;\r\n title2?: string;\r\n timestamp?: string;\r\n}\r\n\r\nexport interface ClipperDeleteWorkingDocumentsParams {\r\n documentIds: string[];\r\n deleteAll: boolean;\r\n}\r\n\r\n\r\nexport interface ClipperUserLink {\r\n id?: number;\r\n userId: number;\r\n userName?: string;\r\n key: string;\r\n}\r\n\r\nexport interface ClipperUserTrialInfo {\r\n channelName: string;\r\n expiringDate: Date;\r\n remainingDocuments: number;\r\n}\r\n\r\nexport interface ClipperArsEventInfo {\r\n id: number;\r\n location?: string;\r\n title?: string;\r\n pictureId?: string;\r\n date?: string;\r\n endDate?: string;\r\n startTime?: string;\r\n endTime?: string;\r\n hours?: number;\r\n days?: number;\r\n dateIntervalDescription?: string;\r\n durationDescription?: string;\r\n group?: string;\r\n address?: string;\r\n city?: string;\r\n isOver?: boolean;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperSearchArsEventsParams {\r\n group?: string;\r\n group1?: string;\r\n collectGroups?: boolean;\r\n collectBundles?: boolean;\r\n fromDate?: string;\r\n untilDate?: string;\r\n text?: string;\r\n sortBy?: string;\r\n count: number\r\n}\r\n\r\nexport interface ClipperSearchArsEventsResult {\r\n interval?: string;\r\n items?: ClipperArsEventInfo[];\r\n total?: number;\r\n}\r\n\r\nexport interface ClipperDocumentUpdateStateParams {\r\n documentIds: string[];\r\n isRead: boolean;\r\n}\r\n\r\nexport interface ClipperDashboardModelItem {\r\n id: ClipperModel;\r\n newItems: number;\r\n unreadItems: number;\r\n}\r\n\r\nexport interface ClipperDashboardItem {\r\n id: ClipperModule;\r\n models: ClipperDashboardModelItem[];\r\n newItems: number;\r\n unreadItems: number;\r\n lastUpdated?: string;\r\n}\r\n\r\nexport interface ClipperDashboardResult {\r\n items?: ClipperDashboardItem[];\r\n isTrial?: boolean;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n channels?: ClipperChannelSettings[];\r\n}\r\n\r\nexport class ClipperDashboard {\r\n items = signal<ClipperDashboardItem[]>([]);\r\n isTrial?: boolean = false;\r\n expiredDeadlines?: number;\r\n expiringDeadlines?: number;\r\n documentUpdates?: number;\r\n unreadItems: Signal<[ClipperModule, number][]> = computed(() => {\r\n const states: [ClipperModule, number][] = [];\r\n states.push([ClipperModule.News, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.News)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.GazzetteBollettiniEFontiDiverse, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.GazzetteBollettiniEFontiDiverse)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Giurisprudenza, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Giurisprudenza)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.ModificheAbrogazioniERinvii, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.ModificheAbrogazioniERinvii)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.AllerteAlimentari, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.AllerteAlimentari)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.Approfondimenti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.Approfondimenti)?.unreadItems ?? 0]);\r\n states.push([ClipperModule.QuesitiECasiRisolti, this.items().find((x: ClipperDashboardItem) => x.id == ClipperModule.QuesitiECasiRisolti)?.unreadItems ?? 0]);\r\n return states;\r\n });\r\n unreadItemsByModel: Signal<[ClipperModel, number][]> = computed(() => {\r\n const states: [ClipperModel, number][] = [];\r\n this.items().forEach(item => {\r\n if (item.models) {\r\n item.models.forEach(itemModel => {\r\n states.push([itemModel.id, itemModel.unreadItems]);\r\n });\r\n } else {\r\n if (item.id == ClipperModule.News) {\r\n states.push([ClipperModel.News, item.unreadItems]);\r\n } else if (item.id == ClipperModule.GazzetteBollettiniEFontiDiverse) {\r\n states.push([ClipperModel.AggiornamentoNormativo, item.unreadItems]);\r\n } else if (item.id == ClipperModule.QuesitiECasiRisolti) {\r\n states.push([ClipperModel.Quesiti, item.unreadItems]);\r\n } else if (item.id == ClipperModule.AllerteAlimentari) {\r\n states.push([ClipperModel.AllerteAlimentari, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Approfondimenti) {\r\n states.push([ClipperModel.Articoli, item.unreadItems]);\r\n } else if (item.id == ClipperModule.ModificheAbrogazioniERinvii) {\r\n states.push([ClipperModel.Coordinamento, item.unreadItems]);\r\n } else if (item.id == ClipperModule.Giurisprudenza) {\r\n states.push([ClipperModel.Juris, item.unreadItems]);\r\n }\r\n }\r\n })\r\n return states;\r\n });\r\n\r\n /**\r\n * Increments (or decrements) the unread item counter for the given module or model.\r\n * Triggers a signal update so computed values and templates react to the change.\r\n * @param module - The `ClipperModule` whose counter should be adjusted.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @param increment - Amount to add (use a negative value to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model: ClipperModel | undefined, increment: number): void {\r\n if (model) {\r\n for (const item of this.items()) {\r\n const itemModel = item.models?.find(x => x.id === model);\r\n if (itemModel) {\r\n itemModel.unreadItems += increment;\r\n break;\r\n }\r\n }\r\n }\r\n const item = this.items().find((x: ClipperDashboardItem) => x.id === module);\r\n if (item) {\r\n item.unreadItems += increment;\r\n }\r\n this.items.update(values => [...values]);\r\n }\r\n\r\n /**\r\n * Returns the unread-item count for the given module, or for a specific model within it.\r\n * @param module - The `ClipperModule` to query.\r\n * @param model - Optional `ClipperModel` for sub-module granularity.\r\n * @returns Number of unread items, or `0` when none are found.\r\n */\r\n getUnreadItems(module: ClipperModule, model?: ClipperModel): number {\r\n if (model) {\r\n return this.unreadItemsByModel().find((x: [ClipperModel, number]) => x[0] === model)?.[1] ?? 0;\r\n }\r\n return this.unreadItems().find((x: [ClipperModule, number]) => x[0] === module)?.[1] ?? 0;\r\n }\r\n\r\n /**\r\n * Returns the sum of unread items across all tracked modules.\r\n * @returns Total unread-item count.\r\n */\r\n getTotalUnreadItems(): number {\r\n return this.unreadItems().reduce((acc, item) => acc + item[1], 0);\r\n }\r\n}\r\n\r\nexport interface ClipperDayItem {\r\n day: string;\r\n label: string;\r\n items: ClipperDayGroup[];\r\n count: number;\r\n}\r\n\r\nexport interface ClipperDayGroup {\r\n model: ClipperModel;\r\n label: string;\r\n items: ClipperDocumentInfo[];\r\n}\r\n\r\nexport interface ClipperLastDaysResult {\r\n items: ClipperDayItem[];\r\n}\r\n\r\nexport interface ClipperTopicInfo {\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport interface ClipperTeamMemberInfo {\r\n id: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n name?: string;\r\n email?: string;\r\n isAdmin?: boolean;\r\n isDisabled?: boolean;\r\n hasPermission55?: boolean;\r\n hasPermission56?: boolean;\r\n hasPermission57?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n}\r\n\r\nexport enum ClipperTeamProduct {\r\n SharedArchive = 1004676,\r\n SharedCalendar = 1004683,\r\n SharedNotes = 1013721\r\n}\r\n\r\nexport enum ClipperTeamProductPermission {\r\n SharedNotes = 55,\r\n SharedArchive = 56,\r\n SharedCalendar = 57\r\n}\r\n\r\nexport interface ClipperTeamProductInfo {\r\n permissionId: ClipperTeamProductPermission;\r\n name: string;\r\n maxMembers: number;\r\n usedMembers: number;\r\n}\r\n\r\nexport interface ClipperTeamMembersSearchResult {\r\n teamId?: string;\r\n teamTitle?: string;\r\n total?: number;\r\n customerId?: number;\r\n canEdit?: boolean;\r\n products?: ClipperTeamProductInfo[];\r\n items?: ClipperTeamMemberInfo[];\r\n}\r\n\r\nexport interface ClipperTeamsSearchParams {\r\n teamId?: string;\r\n permissionId?: number;\r\n productId?: number;\r\n adminsOnly?: boolean;\r\n activeMembersOnly?: boolean;\r\n includeRSTeams?: boolean;\r\n}\r\n\r\nexport interface ClipperTeamsSearchResult {\r\n total: number;\r\n items: NameValueItem<string>[];\r\n}\r\n\r\nexport class ClipperTeamInfo {\r\n id?: string;\r\n customerId?: number;\r\n title?: string;\r\n isDisabled?: boolean;\r\n created?: string;\r\n lastModified?: string;\r\n}\r\n\r\n\r\nexport interface ClipperContactsSearchParams extends QueryModel {\r\n teamId?: string;\r\n name?: string;\r\n includeDisabled?: boolean;\r\n}\r\n\r\nexport interface ClipperContactInfo {\r\n id?: number;\r\n teamId?: string;\r\n teamTitle?: string;\r\n userId?: number;\r\n name?: string;\r\n emails?: string;\r\n disabled?: boolean;\r\n created?: Date;\r\n lastUpdated?: Date;\r\n}\r\n\r\nexport enum ClipperCalendarState {\r\n Open = 101,\r\n Expired = 102,\r\n Expiring = 103,\r\n Closed = 104\r\n}\r\n\r\nexport const ClipperCalendarStates: NameValueItem<ClipperCalendarState>[] = [\r\n { name: 'Aperte', value: ClipperCalendarState.Open },\r\n { name: 'Chiuse', value: ClipperCalendarState.Closed },\r\n { name: 'Scadute', value: ClipperCalendarState.Expired },\r\n { name: 'Imminenti', value: ClipperCalendarState.Expiring }\r\n]\r\n\r\n\r\nexport class ClipperCalendarSearchParams {\r\n id?: string;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n teamId?: string;\r\n text?: string;\r\n month?: number;\r\n year?: number;\r\n sortDescending?: boolean;\r\n state?: ClipperCalendarState;\r\n recurrentOnly?: boolean;\r\n first?: number = 0;\r\n count?: number = 15\r\n}\r\n\r\nexport interface ClipperCalendarSearchResult {\r\n interval: string;\r\n items: ClipperDeadlineInfo[];\r\n days: number[];\r\n teams: NameValueItem<string>[];\r\n total: number;\r\n}\r\n\r\n\r\n\r\nexport interface ClipperDeadlineInfo {\r\n id?: string;\r\n companyId?: number;\r\n userId?: number;\r\n teamId: string;\r\n teamName?: string;\r\n group?: string;\r\n description?: string;\r\n documentTitle?: string;\r\n documentId?: string;\r\n documentNumber?: string;\r\n documentDate?: Date;\r\n emails?: string;\r\n expiringDate?: Date;\r\n expiredAlertSent?: boolean;\r\n expiringInfo?: string;\r\n expiringDescription?: string;\r\n nextExpiringDate?: Date;\r\n alarmDays?: number;\r\n alarmDate?: Date;\r\n alarmMemo?: string;\r\n alarmSent?: boolean;\r\n hasAlarm?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n isExpired?: boolean;\r\n isExpiring?: boolean;\r\n isClosed?: boolean;\r\n isClosable?: boolean;\r\n isPrivate?: boolean;\r\n isRecurrent?: boolean;\r\n recurrencePatternType?: ClipperRecurrenceType;\r\n recurrenceFrequency?: number;\r\n recurrenceEndOfMonth?: boolean;\r\n recurrenceNewId?: string;\r\n outlookAppointmentId?: string;\r\n created?: Date;\r\n lastModified?: Date;\r\n}\r\n\r\nexport interface ClipperCalendarSaveDeadlineParams {\r\n deadline: ClipperDeadlineInfo;\r\n teamIds?: string[];\r\n}\r\n\r\nexport enum ClipperCalendarCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperCalendarCopyDeadlinesParams {\r\n ids: string[];\r\n teamId: string;\r\n mode: ClipperCalendarCopyMode;\r\n}\r\n\r\nexport enum ClipperArchiveFileType {\r\n None = 0,\r\n Procedure = 1,\r\n OperatingInstructions = 2,\r\n TechnicalReport = 3,\r\n AdministrativeDocument = 4,\r\n Document = 5,\r\n OtherApplicableRules = 6,\r\n Other = 7,\r\n File = 101,\r\n Image = 102\r\n}\r\n\r\nexport const ClipperArchiveFileTypes: NameValueItem<ClipperArchiveFileType>[] = [\r\n { name: 'File', value: ClipperArchiveFileType.File },\r\n { name: 'Immagine', value: ClipperArchiveFileType.Image },\r\n { name: 'Procedura', value: ClipperArchiveFileType.Procedure },\r\n { name: 'Istruzioni operative', value: ClipperArchiveFileType.OperatingInstructions },\r\n { name: 'Relazione tecnica', value: ClipperArchiveFileType.TechnicalReport },\r\n { name: 'Documento iter amministrativo', value: ClipperArchiveFileType.AdministrativeDocument },\r\n { name: 'Documento aziendale', value: ClipperArchiveFileType.Document },\r\n { name: 'Altre norme applicabili', value: ClipperArchiveFileType.OtherApplicableRules },\r\n { name: 'Altro', value: ClipperArchiveFileType.Other }\r\n]\r\n\r\n\r\nexport enum ClipperArchiveFileStorageType {\r\n ArsCloud = 2,\r\n OtherCloud = 3\r\n}\r\nexport const ClipperArchiveFileStorageTypes: NameValueItem<ClipperArchiveFileStorageType>[] = [\r\n { name: 'ARS Cloud', value: ClipperArchiveFileStorageType.ArsCloud },\r\n { name: 'Altro cloud', value: ClipperArchiveFileStorageType.OtherCloud }\r\n]\r\n\r\n\r\nexport interface ClipperArchiveFileInfo {\r\n id?: string;\r\n parentFolderId?: string;\r\n isFolder?: boolean;\r\n folderId?: string;\r\n folderName?: string;\r\n folderItemsCount?: number;\r\n teamId: string;\r\n teamName?: string;\r\n topicId?: string;\r\n topicPath?: string;\r\n topicName?: string;\r\n topics?: string[];\r\n tags?: string;\r\n isPrivate?: boolean;\r\n isFile?: boolean;\r\n fileName?: string;\r\n storageType?: ClipperArchiveFileStorageType;\r\n isBinary?: boolean;\r\n binaryId?: number;\r\n binaryFilePath?: string;\r\n isPermalink?: boolean;\r\n fileType?: ClipperArchiveFileType;\r\n file?: any;\r\n notes?: string;\r\n position?: number;\r\n documentIds?: string;\r\n documentLastChangedBy?: string;\r\n documentLastChangedById?: string;\r\n documentLastChangedReasonDescription?: string;\r\n documentLastChanged?: Date;\r\n documentUpdateState?: number;\r\n isDocumentChanged?: boolean;\r\n canPreview?: boolean;\r\n canEmbed?: boolean;\r\n channelName?: string;\r\n model?: ClipperModel;\r\n modelName?: string;\r\n title1?: string;\r\n title2?: string;\r\n date?: Date;\r\n number?: string;\r\n origin?: string;\r\n originDescription?: string;\r\n documentId?: string;\r\n documentCode?: string;\r\n isDocument?: boolean;\r\n isRead?: boolean;\r\n isJuris?: boolean;\r\n isMenuOpen?: boolean;\r\n isOver?: boolean;\r\n validityState?: number;\r\n validUntilDate?: Date;\r\n expiringDate?: Date;\r\n expiringInfo?: string;\r\n uniqueId: string;\r\n}\r\n\r\n\r\nexport interface ClipperArchiveFolderTree extends Folder {\r\n subFolders: ClipperArchiveFolderTree[];\r\n}\r\n\r\n\r\nexport class ClipperArchiveFoldersSearchParams {\r\n teamId?: string;\r\n privateOnly?: boolean;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersSearchResult {\r\n name: string;\r\n teams: NameValueItem<string>[];\r\n files: ClipperArchiveFileInfo[];\r\n subFolders: ClipperArchiveFolderTree[];\r\n\r\n}\r\n\r\n\r\nexport class ClipperArchiveFilesSearchParams {\r\n teamId?: string;\r\n folderId?: string;\r\n folderName?: string;\r\n fileType?: ClipperArchiveFileType;\r\n fromDate?: Date;\r\n toDate?: Date;\r\n topicPath?: string;\r\n topicId?: string;\r\n topicName?: string;\r\n titlesOnly?: boolean;\r\n text?: string;\r\n documentNumber?: string;\r\n documentYear?: number;\r\n first?: number;\r\n count?: number;\r\n}\r\n\r\nexport interface ClipperArchiveFilesSearchResult {\r\n items: ClipperArchiveFileInfo[];\r\n folderName?: string;\r\n total: number;\r\n}\r\n\r\nexport interface ClipperArchiveFoldersImportParams {\r\n teamId: string;\r\n destFolderId?: string;\r\n sourcePath?: string;\r\n sourceFileName?: string;\r\n file?: any;\r\n overwrite?: boolean;\r\n version?: number;\r\n}\r\n\r\nexport enum ClipperArchiveCopyMode {\r\n Duplicate = 1,\r\n Move = 2\r\n}\r\n\r\nexport interface ClipperArchiveFilesCopyParams {\r\n destTeamId: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n mode?: ClipperArchiveCopyMode;\r\n}\r\n\r\nexport interface ClipperArchiveFilesDeleteParams {\r\n sourceFolderId?: string;\r\n destFolderId?: string;\r\n files?: ClipperArchiveFileInfo[];\r\n}\r\n\r\n\r\nexport class ClipperUtils {\r\n\r\n /**\r\n * Returns `true` when the given model corresponds to a readable document type\r\n * (i.e., can be opened in the document viewer).\r\n * @param model - The `ClipperModel` to test.\r\n */\r\n static isClipperModelReadable(model: ClipperModel): boolean {\r\n return model !== ClipperModel.Unknown &&\r\n model !== ClipperModel.NormativaVigente &&\r\n model !== ClipperModel.Scadenze &&\r\n model !== ClipperModel.Segnalazioni\r\n }\r\n\r\n /**\r\n * Returns the `ClipperModule` that owns the given document, derived from its model type.\r\n * @param item - The document info object to inspect.\r\n * @returns The matching `ClipperModule`, or `undefined` when the model has no direct module mapping.\r\n */\r\n static getClipperModuleFromModel(item: ClipperDocumentInfo): ClipperModule | undefined {\r\n switch (item.model) {\r\n case ClipperModel.AllerteAlimentari: return ClipperModule.AllerteAlimentari;\r\n case ClipperModel.News: return ClipperModule.News;\r\n case ClipperModel.Articoli:\r\n case ClipperModel.Juris: return ClipperModule.Approfondimenti;\r\n case ClipperModel.Quesiti: return ClipperModule.QuesitiECasiRisolti;\r\n case ClipperModel.Coordinamento: return ClipperModule.ModificheAbrogazioniERinvii;\r\n case ClipperModel.GiurisprudenzaRecente: return ClipperModule.Giurisprudenza;\r\n case ClipperModel.NormativaVigente: return ClipperModule.NormativaVigente;\r\n case ClipperModel.Segnalazioni:\r\n case ClipperModel.Scadenze: return ClipperModule.ScadenzeESegnalazioni;\r\n case ClipperModel.AggiornamentoNormativo: return ClipperModule.GazzetteBollettiniEFontiDiverse;\r\n }\r\n return undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the display name for the given `ClipperModuleGroup`.\r\n * @param value - The module group enum value to look up.\r\n * @returns The group display name, or an empty string when not found.\r\n */\r\n static getClipperModuleGroupName(value: ClipperModuleGroup): string {\r\n return ClipperModuleGroups.find(n => n.value === value)?.name ?? '';\r\n }\r\n\r\n /**\r\n * Returns the list of `ClipperModule` items belonging to the given module group.\r\n * @param value - The module group to filter by.\r\n * @returns Array of matching `NameValueItem` entries.\r\n */\r\n static getClipperModuleGroupItems(value: ClipperModuleGroup): NameValueItem<ClipperModule>[] {\r\n return ClipperModules.filter(n => n.parentValue === value);\r\n }\r\n\r\n /**\r\n * Tests a set of modules against the currently selected modules in the search filter.\r\n * @param modules - The modules to test.\r\n * @param currentModules - The currently selected modules to check against.\r\n * @param mode - Matching strategy:\r\n * `1` = all and only the specified modules (exact set),\r\n * `2` = all specified modules must be present,\r\n * `3` = at least one specified module must be present.\r\n * @returns `true` when the condition defined by `mode` is satisfied.\r\n */\r\n private static checkModules(\r\n modules: ClipperModule[],\r\n currentModules: NameValueItem<ClipperModule>[],\r\n mode: number = 1\r\n ): boolean {\r\n let ok = false;\r\n if (mode === 1) {\r\n // All and only the elements specified\r\n for (const current of currentModules) {\r\n ok = modules.findIndex(x => x === current.value) !== -1;\r\n if (!ok) break;\r\n }\r\n ok = ok && modules.length >= currentModules.length;\r\n } else if (mode === 2) {\r\n // All the elements specified\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (!ok) break;\r\n }\r\n } else if (mode === 3) {\r\n // Any of the specified elements\r\n for (const mod of modules) {\r\n ok = currentModules.findIndex(x => x.value === mod) !== -1;\r\n if (ok) break;\r\n }\r\n }\r\n return ok;\r\n }\r\n\r\n /**\r\n * Returns the sort options available for the given module selection.\r\n * Includes the relevance option only when the query contains free text.\r\n * @param modules - Currently selected modules (used to determine which date axes are available).\r\n * @param params - Current search params (checked for free-text content).\r\n * @returns Array of applicable `NameValueItem<ClipperSort>` sort options.\r\n */\r\n static getClipperAvailableSortOptions(\r\n modules?: NameValueItem<ClipperModule>[],\r\n params?: ClipperSearchParams): NameValueItem<ClipperSort>[] {\r\n const options: NameValueItem<ClipperSort>[] = [\r\n { name: \"Data decrescente\", value: ClipperSort.DateDesc },\r\n { name: \"Data crescente\", value: ClipperSort.DateAsc },\r\n { name: \"Data fonte decrescente\", value: ClipperSort.SourceDateDesc },\r\n { name: \"Data fonte crescente\", value: ClipperSort.SourceDateAsc },\r\n { name: \"Rilevanza\", value: ClipperSort.Relevance },\r\n //{ name: \"Popolarità\", value: ClipperSort.Popularity },\r\n ];\r\n const sortOptions: NameValueItem<ClipperSort>[] = []\r\n if (params && ClipperSearchUtils.isTextQuery(params)) {\r\n sortOptions.push(options[4]);\r\n }\r\n if (modules && modules.length > 0) {\r\n if (this.checkModules([ClipperModule.GazzetteBollettiniEFontiDiverse], modules, 1)) {\r\n sortOptions.push(options[2]);\r\n sortOptions.push(options[3]);\r\n } else if (this.checkModules([ClipperModule.NormativaVigente], modules, 1) ||\r\n this.checkModules([ClipperModule.Giurisprudenza], modules, 1)) {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n } else {\r\n sortOptions.push(options[0]);\r\n sortOptions.push(options[1]);\r\n }\r\n return sortOptions;\r\n }\r\n\r\n}\r\n\r\nexport class ClipperSearchUtils {\r\n\r\n /**\r\n * Resets all filter fields of a `ClipperSearchParams` instance to their default (empty) values.\r\n * @param params - The search-params object to clear.\r\n */\r\n static clear(params: ClipperSearchParams): void {\r\n params.sector = undefined;\r\n params.sectors = undefined;\r\n params.author = undefined;\r\n params.authors = undefined;\r\n params.topic = undefined;\r\n params.topics = undefined;\r\n params.taxonomy = undefined;\r\n params.taxonomies = undefined;\r\n params.taxonomyPath = undefined;\r\n params.taxonomyNode = undefined;\r\n params.number = undefined;\r\n params.fromDate = undefined;\r\n params.toDate = undefined;\r\n params.year = undefined;\r\n params.sourceNumber = undefined;\r\n params.source = undefined;\r\n params.sourceFromDate = undefined;\r\n params.sourceToDate = undefined;\r\n params.sourceYear = undefined;\r\n params.tags = undefined;\r\n params.text = undefined;\r\n params.titleOnly = false;\r\n params.type = undefined;\r\n params.types = undefined;\r\n params.showUnreadDocumentsOnly = false;\r\n params.showCommentedDocumentsOnly = false;\r\n params.showNotAbrogatedDocumentsOnly = false;\r\n if (!params.channels || params.channels.length === 0) {\r\n params.channels = [...ClipperChannels];\r\n }\r\n params.changeReason = undefined;\r\n params.changedNumber = undefined;\r\n params.changedYear = undefined;\r\n params.changedTitle = undefined;\r\n params.changedId = undefined;\r\n params.modifierId = undefined;\r\n params.modifierNumber = undefined;\r\n params.modifierYear = undefined;\r\n params.modifierTitle = undefined;\r\n params.model = undefined;\r\n params.models = undefined;\r\n params.module = undefined;\r\n params.modules = undefined;\r\n }\r\n\r\n\r\n /**\r\n * Returns the list of `ClipperModel` values that correspond to the given modules.\r\n * @param modules - The selected modules to map to their underlying data models.\r\n * @returns Array of `ClipperModel` values matching the provided modules.\r\n */\r\n static getModulesModels(modules?: NameValueItem<ClipperModule>[]): ClipperModel[] {\r\n const models: ClipperModel[] = [];\r\n if (modules && modules.length > 0) {\r\n modules.forEach(module => {\r\n switch (module.value) {\r\n case ClipperModule.ScadenzeESegnalazioni:\r\n [ClipperModel.Scadenze, ClipperModel.Segnalazioni].forEach(x => models.push(x));\r\n break;\r\n case ClipperModule.QuesitiECasiRisolti:\r\n models.push(ClipperModel.Quesiti);\r\n break;\r\n case ClipperModule.News:\r\n models.push(ClipperModel.News);\r\n break;\r\n case ClipperModule.Approfondimenti:\r\n models.push(ClipperModel.Articoli);\r\n break;\r\n case ClipperModule.AllerteAlimentari:\r\n models.push(ClipperModel.AllerteAlimentari);\r\n break;\r\n case ClipperModule.GazzetteBollettiniEFontiDiverse:\r\n models.push(ClipperModel.AggiornamentoNormativo);\r\n break;\r\n case ClipperModule.GiurisprudenzaRecente:\r\n models.push(ClipperModel.GiurisprudenzaRecente);\r\n break;\r\n case ClipperModule.NormativaVigente:\r\n models.push(ClipperModel.NormativaVigente);\r\n break;\r\n case ClipperModule.ModificheAbrogazioniERinvii:\r\n models.push(ClipperModel.Coordinamento);\r\n break;\r\n case ClipperModule.Giurisprudenza:\r\n models.push(ClipperModel.Juris);\r\n break;\r\n }\r\n });\r\n }\r\n return models;\r\n }\r\n\r\n /**\r\n * Returns `true` when the search params contain a non-empty free-text query.\r\n * @param params - The search params to inspect.\r\n */\r\n static isTextQuery(params: ClipperSearchParams): boolean {\r\n return params.text != null && params.text.length > 0;\r\n }\r\n\r\n /**\r\n * Wraps `q` in quotes (if not already quoted) and appends it to `queries`.\r\n * @param q - A single search term to process.\r\n * @param queries - The accumulated query string to append to.\r\n * @returns The updated `queries` string.\r\n */\r\n private static concatTextQuery(q: string, queries: string): string {\r\n if (q && q.length > 1) {\r\n if ((q[0] === '+' || q[0] === '-') && q[1] !== '\"') {\r\n q = q[0] + '\"' + q.substring(1) + '\"';\r\n } else if (q[0] !== '\"') {\r\n q = \"\\\"\" + q + \"\\\"\";\r\n }\r\n queries += q + \" \";\r\n }\r\n return queries;\r\n }\r\n\r\n /**\r\n * Normalises a comma-separated search string by wrapping each term in quotes.\r\n * @param text - The raw search input to normalise.\r\n * @returns The normalised query string, or `undefined` when `text` is empty.\r\n */\r\n static normalizeTextQuery(text: string): string | undefined {\r\n if (!text || text.length === 0) return undefined;\r\n let q: string = '';\r\n let queries: string = '';\r\n for (let i = 0; i < text.length; i++) {\r\n if (text[i] === ',') {\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n q = '';\r\n }\r\n else q += text[i];\r\n }\r\n queries = this.concatTextQuery(q.trim(), queries);\r\n return queries;\r\n }\r\n\r\n /**\r\n * Wraps the entire query in double quotes when it contains no boolean operators\r\n * (`\"`, `+`, or ` -`), making it an exact-phrase search.\r\n * @param text - The query string to normalise.\r\n * @returns The normalised query string.\r\n */\r\n static normalizeTextQuery2(text: string): string {\r\n if (!text) return text;\r\n // Add quotes only if there are no quoted elements, no '+', and no ' -'\r\n if (!text.includes('\"') && !text.includes('+') && !text.includes(' -')) {\r\n return '\"' + text + '\"';\r\n }\r\n return text;\r\n }\r\n\r\n\r\n /**\r\n * Maps a letter rank (`A`, `B`, or any other) to a numeric relevance threshold.\r\n * @param value - The single-character rank string.\r\n * @returns `0.751` for `'A'`, `0.71` for `'B'`, `0.51` for anything else.\r\n */\r\n static getRankFromChar(value: string): number {\r\n switch (value.toUpperCase()) {\r\n case 'A': return 0.751;\r\n case 'B': return 0.71;\r\n default:\r\n return 0.51;\r\n }\r\n }\r\n}","import { NameValueItem } from \"@arsedizioni/ars-utils/core\";\r\n\r\nexport const NotesColors: NameValueItem<string>[] = \r\n[{ name: \"Verde\", value: \"#2E8B74\" },\r\n { name: \"Viola\", value: \"#9B59B6\" },\r\n { name: \"Giallo\", value: \"#E8A838\" },\r\n { name: \"Ciano\", value: \"#17A8BA\" },\r\n { name: \"Arancione\", value: \"#FD7E14\" },\r\n { name: \"Magenta\", value: \"#E91E8C\" },\r\n { name: \"Grigio\", value: \"#6C757D\" },\r\n { name: \"Indaco\", value: \"#5B6EBF\" }\r\n];\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, BroadcastService, FolderTree, NameValueItem, SystemUtils, UpdateResultModel } from '@arsedizioni/ars-utils/core';\r\nimport {\r\n ClipperCalendarSearchParams,\r\n ClipperDocumentInfo,\r\n ClipperDocumentNote,\r\n ClipperDocumentNoteTracking,\r\n ClipperDocumentStructure,\r\n ClipperDocumentUpdateStateParams,\r\n ClipperExportDocumentsParams,\r\n ClipperModule,\r\n ClipperNotifyDocumentNoteParams,\r\n ClipperQueryReferencesMode,\r\n ClipperReferencesSearchParams,\r\n ClipperSearchCalendarSnapshotResult,\r\n ClipperSearchFacetsResult,\r\n ClipperSearchParams,\r\n ClipperSearchResult,\r\n ClipperSendDocumentsByEmailParams,\r\n ClipperTaxonomyParams,\r\n ClipperUserSearch,\r\n ClipperUserWorkingDocument,\r\n} from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Document search, references, export and metadata, plus the dashboard counters,\r\n * taxonomy/topics/tags lookups, the working-documents \"bag\" and saved searches.\r\n */\r\n@Service()\r\nexport class ClipperDocumentsService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n\r\n /////\r\n // DOCUMENTS\r\n /////\r\n\r\n /**\r\n * Queries documents matching the given search parameters.\r\n * @param params - The document search parameters.\r\n * @returns An observable emitting the API result wrapping the search result.\r\n */\r\n query(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the facets for a document query.\r\n * @param params - The document search parameters.\r\n * @returns An observable emitting the API result wrapping the search facets.\r\n */\r\n queryFacets(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/facets',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Updates the state of one or more documents.\r\n * @param params - The document state update parameters.\r\n * @returns An observable emitting the API result wrapping the number of updated documents.\r\n */\r\n updateState(params: ClipperDocumentUpdateStateParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/state/update',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Exports a single document in PDF format.\r\n * @param id - The ID of the document to export.\r\n * @returns An observable emitting the PDF binary content as a blob.\r\n */\r\n exportPdf(id: string) {\r\n return this.httpClient.get(\r\n this.core.serviceUri + '/documents/export/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Exports a document list (query or selected items), or exports deadlines as ICS.\r\n * @param params - The export parameters.\r\n * @returns An observable emitting the exported content as a blob.\r\n */\r\n export(params: ClipperExportDocumentsParams) {\r\n return this.httpClient.post(\r\n this.core.serviceUri + '/documents/export',\r\n params,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Sends document links by email.\r\n * @param params - The send-by-email parameters including recipients and documents.\r\n * @returns An observable emitting the API result wrapping the number of sent items.\r\n */\r\n sendTo(params: ClipperSendDocumentsByEmailParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/send',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Sends an email notification about a document note update to the specified recipients.\r\n * @param params - The notification parameters including recipients and note details.\r\n * @returns An observable emitting the API result wrapping the note tracking update.\r\n */\r\n notifyNoteTo(params: ClipperNotifyDocumentNoteParams) {\r\n return this.httpClient.post<ApiResult<UpdateResultModel<ClipperDocumentNoteTracking>>>(\r\n this.core.serviceUri + '/documents/notes/notify',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the full document report page.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the report content as a blob.\r\n */\r\n report(id: string) {\r\n return this.httpClient.get(\r\n this.core.serviceUri + '/documents/report/' + id,\r\n { responseType: 'blob' }\r\n );\r\n }\r\n\r\n /**\r\n * Gets the comment associated with a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the comment text.\r\n */\r\n comment(id: string) {\r\n return this.httpClient.get<ApiResult<string>>(\r\n this.core.serviceUri + '/documents/comment/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the info for a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the document info.\r\n */\r\n info(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentInfo>>(\r\n this.core.serviceUri + '/documents/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the structure (index) of a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the document structure.\r\n */\r\n index(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentStructure>>(\r\n this.core.serviceUri + '/documents/structure/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the last-update metadata for a document.\r\n * @param id - The ID of the document.\r\n * @returns An observable emitting the API result wrapping the last update string and its notes.\r\n */\r\n metadata(id: string) {\r\n return this.httpClient.get<ApiResult<{ item1?: string; item2?: ClipperDocumentNote[] }>>(\r\n this.core.serviceUri + '/documents/metadata/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Queries document references, changes or jurisprudence depending on the requested mode.\r\n * @param params - The references search parameters; `mode` defaults to `ReferencesIn`.\r\n * @returns An observable emitting the API result wrapping the search result, or `null` for an unsupported mode.\r\n */\r\n references(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode;\r\n if (!mode) mode = ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/references',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/changes',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/juris',\r\n params\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the facets for a document references query.\r\n * @param params - The references search parameters; `mode` defaults to `ReferencesIn`.\r\n * @returns An observable emitting the API result wrapping the search facets, or `null` for an unsupported mode.\r\n */\r\n referencesFacets(params: ClipperReferencesSearchParams) {\r\n let mode = params.mode ?? ClipperQueryReferencesMode.ReferencesIn;\r\n switch (mode) {\r\n case ClipperQueryReferencesMode.ReferencesIn:\r\n case ClipperQueryReferencesMode.ReferencesOut:\r\n params.mode = mode;\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/references/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.ChangesIn:\r\n case ClipperQueryReferencesMode.ChangesOut:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/changes/facets',\r\n params\r\n );\r\n case ClipperQueryReferencesMode.Juris:\r\n return this.httpClient.post<ApiResult<ClipperSearchFacetsResult>>(\r\n this.core.serviceUri + '/documents/juris/facets',\r\n params\r\n );\r\n default: return null;\r\n }\r\n }\r\n\r\n /**\r\n * Wraps document rendering to allow token refresh.\r\n * @returns An observable emitting the API result wrapping a boolean readiness flag.\r\n */\r\n preRender() {\r\n return this.httpClient.get<ApiResult<boolean>>(\r\n this.core.serviceUri + '/documents/pre-render?nocache=' + SystemUtils.generateUUID()\r\n );\r\n }\r\n\r\n /**\r\n * Gets the jurisprudence articles for a document query.\r\n * @param params - The document search parameters.\r\n * @returns An observable emitting the API result wrapping the search result.\r\n */\r\n jurisArticles(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchResult>>(\r\n this.core.serviceUri + '/documents/juris/articles',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Gets a deadlines snapshot based on the supplied deadlines.\r\n * @param params - The calendar search parameters.\r\n * @returns An observable emitting the API result wrapping the calendar snapshot result.\r\n */\r\n deadlinesSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this.core.serviceUri + '/documents/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the taxonomy.\r\n * @param params - Optional taxonomy parameters. Defaults to `{ model: 0, countItems: false }`.\r\n * @returns An observable emitting the API result wrapping the taxonomy folder tree.\r\n */\r\n getTaxonomy(params?: ClipperTaxonomyParams) {\r\n return this.httpClient.post<ApiResult<FolderTree>>(\r\n this.core.serviceUri + '/taxonomy',\r\n params ?? { model: 0, countItems: false }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the topics as a flat list.\r\n * @returns An observable emitting the API result wrapping the list of topics.\r\n */\r\n getTopics() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this.core.serviceUri + '/topics'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the topics as a tree.\r\n * @returns An observable emitting the API result wrapping the topics folder tree.\r\n */\r\n getTopicsAsTree() {\r\n return this.httpClient.get<ApiResult<FolderTree>>(\r\n this.core.serviceUri + '/topics2'\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the tags.\r\n * @returns An observable emitting the API result wrapping the list of tags.\r\n */\r\n getTags() {\r\n return this.httpClient.get<ApiResult<NameValueItem<string>[]>>(\r\n this.core.serviceUri + '/tags'\r\n );\r\n }\r\n\r\n\r\n ///\r\n // BAG\r\n ///\r\n\r\n /**\r\n * Loads the working documents and populates the shared bag.\r\n * @returns The subscription to the working-documents request.\r\n */\r\n loadBag() {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.core.serviceUri + '/documents/working'\r\n )\r\n .subscribe(\r\n r => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n if (r.value) {\r\n const items: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n if (!n.documentId) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n }\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : undefined;\r\n }\r\n n.documentDescriptor = undefined;\r\n items.push(n);\r\n }\r\n });\r\n this.core.bag.set(items);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adds one or more documents to the working documents bag.\r\n * @param documentIds - The IDs of the documents to add.\r\n * @returns The subscription to the add-to-bag request.\r\n */\r\n addToBag(documentIds: string[]) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserWorkingDocument[]>>(\r\n this.core.serviceUri + '/documents/working/add',\r\n { documentIds: documentIds }\r\n )\r\n .subscribe((r: ApiResult<ClipperUserWorkingDocument[]>) => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_CHANGED);\r\n } else {\r\n if (r.value) {\r\n const newItems: ClipperDocumentInfo[] = [];\r\n r.value.forEach(n => {\r\n if (n.documentDescriptor) {\r\n const documentInfo = JSON.parse(n.documentDescriptor);\r\n if (documentInfo) {\r\n n.documentId = documentInfo.DocumentId || documentInfo.Id;\r\n n.title1 = documentInfo.Title1 ?? documentInfo.Title2;\r\n n.title2 = documentInfo.Title1 ? documentInfo.Title2 : null;\r\n }\r\n n.documentDescriptor = undefined;\r\n newItems.push(n);\r\n }\r\n });\r\n if (newItems.length > 0) {\r\n this.core.bag.update((values: any) => [...values, ...newItems]);\r\n }\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Operazione completata con successo.\", icon: 'check', duration: 1500 });\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Removes a document from the working documents bag.\r\n * @param documentId - The ID of the document to remove.\r\n * @returns The subscription to the remove-from-bag request.\r\n */\r\n removeFromBag(documentId: string) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/working/delete',\r\n { documentIds: [documentId] }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n const p = this.core.bag().findIndex((n: any) => n.documentId === documentId);\r\n if (p !== -1) {\r\n this.core.bag.update((values: any) => {\r\n values.splice(p, 1);\r\n return [...values];\r\n });\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Operazione completata con successo.\", icon: 'check', duration: 1500 });\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clears all working documents from the bag.\r\n * @returns The subscription to the clear-bag request.\r\n */\r\n clearBag() {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/working/delete',\r\n { deleteAll: true }\r\n )\r\n .subscribe((r: ApiResult<number>) => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n this.core.bag.set([]);\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Operazione completata con successo.\", icon: 'check', duration: 1500 });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves the saved searches for the given module.\r\n * @param module - The Clipper module whose saved searches to load.\r\n * @returns An observable emitting the API result wrapping the list of saved searches.\r\n */\r\n loadSearches(module: ClipperModule) {\r\n return this.httpClient\r\n .get<ApiResult<ClipperUserSearch[]>>(\r\n this.core.serviceUri + '/documents/searches/?module=' + module\r\n );\r\n }\r\n\r\n /**\r\n * Persists a user search configuration on the server.\r\n * @param params - The search configuration to save.\r\n * @returns An observable emitting the API result wrapping the saved search.\r\n */\r\n saveSearch(params: ClipperUserSearch) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperUserSearch>>(\r\n this.core.serviceUri + '/documents/searches/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a saved search by its ID.\r\n * @param id - The ID of the saved search to remove.\r\n * @returns An observable emitting the API result wrapping the number of deleted searches.\r\n */\r\n deleteSearch(id: number) {\r\n return this.httpClient\r\n .post<ApiResult<number>>(\r\n this.core.serviceUri + '/documents/searches/delete',\r\n { id: id }\r\n );\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, BroadcastService, SplashService } from '@arsedizioni/ars-utils/core';\r\nimport { LoginOAuthType } from '@arsedizioni/ars-utils/ui.oauth';\r\nimport { of, throwError } from 'rxjs';\r\nimport { catchError, finalize, map } from 'rxjs/operators';\r\nimport { ClipperLoginResult, ClipperOTPInfo } from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Authentication: credential / OAuth2 login, MFA confirmation, logout and OTP.\r\n * Shared login context, channels and the logged-in flag live in `ClipperCoreService`.\r\n */\r\n@Service()\r\nexport class ClipperLoginService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly splashService = inject(SplashService);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Attempts an automatic login using the credentials currently stored in session storage.\r\n * @param onSuccess - Optional callback invoked with the login result value on success.\r\n */\r\n autoLogin(onSuccess?: (value?: any) => void) {\r\n this.login(undefined, undefined, true)\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n } else {\r\n if (!r.value.requiresMfa) {\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Connesso a Clipper\", icon: 'power', duration: 1500 });\r\n }\r\n if (onSuccess) {\r\n onSuccess(r.value);\r\n }\r\n }\r\n },\r\n error: () => { this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: \"Clipper non disponibile.\" }) }\r\n });\r\n }\r\n\r\n /**\r\n * Performs an automatic logout and clears the stored session.\r\n * @param onSuccess - Optional callback invoked after a successful logout.\r\n */\r\n autoLogout(onSuccess?: () => void) {\r\n this.logout()\r\n .subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR, { message: r.message });\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_CHANGED);\r\n } else {\r\n this.broadcastService.sendMessage(ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Disconnesso da Clipper\", icon: 'power_off', duration: 1500 });\r\n }\r\n },\r\n error: () => { },\r\n complete: () => {\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Authenticates the user against the Clipper API, supporting both credential-based and\r\n * OAuth2 login flows.\r\n * @param email - The user's email address (credential login only).\r\n * @param password - The user's password (credential login only).\r\n * @param remember - When `true`, the session is remembered across browser restarts.\r\n * @param oauth - The OAuth2 provider type, when authenticating via SSO.\r\n * @param oauthAccessToken - The OAuth2 bearer token. Defaults to the value stored in session storage.\r\n * @returns An observable emitting the API result wrapping the login result.\r\n */\r\n login(email?: string,\r\n password?: string,\r\n remember?: boolean,\r\n oauth?: LoginOAuthType,\r\n oauthAccessToken: string | undefined = sessionStorage.getItem(\"clipper_oauth_token\") ?? undefined) {\r\n this.splashService.setMessage('Accesso in corso...');\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this.core.serviceUri + '/login2',\r\n {\r\n user: oauth ? null : email,\r\n password: oauth ? null : password,\r\n remember: remember,\r\n oauth: oauth\r\n },\r\n {\r\n headers:\r\n !oauth || !oauthAccessToken\r\n ? new HttpHeaders()\r\n : new HttpHeaders()\r\n .set(\"Authorization\", 'Bearer ' + oauthAccessToken)\r\n })\r\n .pipe(\r\n catchError(err => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n const info = this.core.ensureLoginInfo();\r\n info.oauth = oauth;\r\n info.remember = remember;\r\n if (!oauth && r.value.requiresMfa) {\r\n // Notify login is pending\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_PENDING);\r\n } else {\r\n // Complete login\r\n this.completeLogin(r.value);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Finalises the login flow by updating the stored context, setting the logged-in signal,\r\n * initialising channels, and broadcasting `LOGIN_COMPLETED`.\r\n * @param result - The login result returned by the API.\r\n */\r\n private completeLogin(result: ClipperLoginResult): void {\r\n // Update context info\r\n this.core.updateContext(result);\r\n this.core.setLoggedIn(!result.context?.isTemporary);\r\n this.core.loggingIn.set(false);\r\n // Initialize channels\r\n this.core.initializeChannels();\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n }\r\n\r\n /**\r\n * Submits the MFA confirmation code to complete a two-factor login flow.\r\n * @param code - The one-time confirmation code provided to the user.\r\n * @returns An observable emitting the API result wrapping the login result.\r\n */\r\n confirmIdentity(code: string) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperLoginResult>>(\r\n this.core.serviceUri + '/login/confirm/' + code,\r\n {},\r\n )\r\n .pipe(\r\n catchError((err) => {\r\n return throwError(() => err);\r\n }),\r\n map((r: ApiResult<ClipperLoginResult>) => {\r\n if (r.success) {\r\n this.completeLogin(r.value);\r\n }\r\n return r;\r\n }),\r\n );\r\n }\r\n\r\n /**\r\n * Logs the user out and clears the current session.\r\n * @param forget - When `true`, all stored user credentials are also removed.\r\n * @returns An observable that completes once the logout request has been processed.\r\n */\r\n logout(forget: boolean = false) {\r\n return this.httpClient.post<any>(this.core.serviceUri + '/logout/?forget=' + forget, {})\r\n .pipe(\r\n finalize(() => {\r\n this.core.clear(true);\r\n // Clean up\r\n localStorage.removeItem('clipper_context');\r\n }),\r\n catchError((_e) => {\r\n return of([]);\r\n }));\r\n }\r\n\r\n /**\r\n * Requests a new one-time password for the given repository.\r\n * @param id - The repository ID for which the OTP should be generated.\r\n * @returns An observable emitting the API result wrapping the generated OTP info.\r\n */\r\n newOTP(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperOTPInfo>>(\r\n this.core.serviceUri + '/otp/new/?id=' + id,\r\n );\r\n }\r\n\r\n\r\n ////\r\n // CONTEXT (re-published from ClipperCoreService for consumer convenience)\r\n ////\r\n\r\n /**\r\n * Persists the current login context to `localStorage`.\r\n * Delegates to `ClipperCoreService.storeContext()`.\r\n */\r\n storeContext(): void {\r\n this.core.storeContext();\r\n }\r\n\r\n /**\r\n * Updates the stored login context with the values from a fresh login result.\r\n * Delegates to `ClipperCoreService.updateContext()`.\r\n * @param result - The login result containing the new user context and channel settings.\r\n */\r\n updateContext(result: ClipperLoginResult): void {\r\n this.core.updateContext(result);\r\n }\r\n\r\n /**\r\n * Clears all session-storage authentication keys and resets the login state.\r\n * Delegates to `ClipperCoreService.clear()`.\r\n * @param clearOAuthToken - When `true`, the OAuth bearer token is also removed.\r\n */\r\n clear(clearOAuthToken: boolean = false): void {\r\n this.core.clear(clearOAuthToken);\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { DestroyRef, Injector, Service, Signal, computed, inject, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ApiResult, BroadcastService, NameValueItem, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { EMPTY } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport {\r\n ClipperAvailableChannel,\r\n ClipperChannels,\r\n ClipperDashboard,\r\n ClipperDocumentInfo,\r\n ClipperLoginInfo,\r\n ClipperLoginResult,\r\n ClipperSearchResult,\r\n ClipperServiceFlags,\r\n} from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperDocumentsService } from './documents.service';\r\nimport { ClipperLoginService } from './login.service';\r\n\r\n/**\r\n * Shared state and bootstrap for the Clipper application.\r\n *\r\n * Holds every piece of state used by more than one feature service (service URI,\r\n * flags, login context, teams, dashboard, working-documents bag, channels and the\r\n * various UI signals) plus the low-level helpers that mutate that state.\r\n *\r\n * The feature services (`ClipperLoginService`, `ClipperDocumentsService`, ...) inject\r\n * this service to read shared state and call shared helpers. `ClipperService` (the\r\n * barrel/facade) re-exports the state declared here.\r\n */\r\n@Service()\r\nexport class ClipperCoreService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly broadcastService = inject(BroadcastService);\r\n /** Used to lazily resolve feature services inside `initialize`, avoiding circular DI. */\r\n private readonly injector = inject(Injector);\r\n\r\n private broadcastInitialized = false;\r\n\r\n private _appUri?: string;\r\n /** @returns The URI of the Clipper web application, or `undefined` if not set. */\r\n get appUri(): string | undefined {\r\n return this._appUri;\r\n }\r\n\r\n private _serviceUri: string = '';\r\n /** @returns The base URI of the Clipper REST API. */\r\n get serviceUri(): string {\r\n return this._serviceUri;\r\n }\r\n\r\n private _flags: ClipperServiceFlags = ClipperServiceFlags.None;\r\n /** @returns The active feature flags. */\r\n get flags(): ClipperServiceFlags {\r\n return this._flags;\r\n }\r\n\r\n private _loginInfo?: ClipperLoginInfo;\r\n /**\r\n * Lazily loads the login context from `localStorage` on first access.\r\n * @returns The current login context, or `undefined` if not authenticated.\r\n */\r\n get loginInfo(): ClipperLoginInfo | undefined {\r\n if (!this._loginInfo) {\r\n const loginInfo = localStorage.getItem('clipper_context');\r\n if (loginInfo) {\r\n try {\r\n this._loginInfo = JSON.parse(loginInfo) as ClipperLoginInfo;\r\n } catch { }\r\n }\r\n }\r\n return this._loginInfo;\r\n }\r\n\r\n private readonly _loggedIn = signal<boolean>(sessionStorage.getItem(\"clipper_oauth_token\") !== null);\r\n public readonly loggedIn: Signal<boolean> = this._loggedIn.asReadonly();\r\n public readonly loggingIn = signal<boolean>(false);\r\n public readonly snapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly supportsRS = signal<boolean>(false);\r\n public readonly referencesSnapshot = signal<ClipperSearchResult | undefined>(undefined);\r\n public readonly dashboard: ClipperDashboard = new ClipperDashboard();\r\n public readonly bag = signal<ClipperDocumentInfo[]>([]);\r\n public readonly bagTotal: Signal<number> = computed(() => this.bag().length);\r\n public readonly visible = signal<boolean>(false);\r\n\r\n private _teams: NameValueItem<string>[] = [];\r\n /** @returns The shared teams collection. */\r\n get teams(): NameValueItem<string>[] {\r\n return this._teams;\r\n }\r\n\r\n public readonly availableChannels = signal<ClipperAvailableChannel[]>([]);\r\n public readonly activeChannels: Signal<ClipperAvailableChannel[]> = computed(() => {\r\n return this.availableChannels()?.filter(x => !x.suspended && !x.disabled && x.active === true);\r\n });\r\n public readonly allowTags = signal<boolean>(false);\r\n public readonly pendingNotes = signal<number | undefined>(undefined);\r\n\r\n\r\n ////\r\n // SHARED MUTATORS\r\n ////\r\n\r\n /**\r\n * Ensures a login-info object exists and returns it for further mutation.\r\n * Replaces the inline `if (!this._loginInfo) { ... }` guards now that the field\r\n * is private to this service.\r\n * @returns The existing login-info object, or a freshly created empty one.\r\n */\r\n ensureLoginInfo(): ClipperLoginInfo {\r\n if (!this._loginInfo) {\r\n this._loginInfo = { context: undefined };\r\n }\r\n return this._loginInfo;\r\n }\r\n\r\n /**\r\n * Sets the logged-in state. The backing signal is read-only to consumers, so the\r\n * feature services use this method instead.\r\n * @param value - The new logged-in state.\r\n */\r\n setLoggedIn(value: boolean): void {\r\n this._loggedIn.set(value);\r\n }\r\n\r\n /**\r\n * Replaces the shared teams collection (populated by the calendar, archive and\r\n * collaboration queries).\r\n * @param teams - The teams to store.\r\n */\r\n setTeams(teams: NameValueItem<string>[]): void {\r\n this._teams = teams;\r\n }\r\n\r\n /**\r\n * Persists the current login context to `localStorage`.\r\n */\r\n storeContext(): void {\r\n localStorage.setItem('clipper_context', JSON.stringify(this._loginInfo));\r\n }\r\n\r\n /**\r\n * Updates the stored login context with the values from a fresh login result.\r\n * @param result - The login result containing the new user context and channel settings.\r\n */\r\n updateContext(result: ClipperLoginResult): void {\r\n const info = this.ensureLoginInfo();\r\n info.context = result.context;\r\n info.channels = result.settings;\r\n this.storeContext();\r\n }\r\n\r\n /**\r\n * Rebuilds the `availableChannels` signal from the current login context.\r\n */\r\n initializeChannels(): void {\r\n if (this.loginInfo) {\r\n const channels: ClipperAvailableChannel[] = [];\r\n this.loginInfo.channels?.forEach(n => {\r\n const channelSubscription = this.loginInfo?.context?.channels?.find(x => x.channel === n.channelId);\r\n n.isSuspended = channelSubscription?.isSuspended === true;\r\n const channel = ClipperChannels.find(x => x.value === n.channelId) as ClipperAvailableChannel;\r\n if (channel) {\r\n channel.disabled = !n.isActive;\r\n channel.suspended = n.isSuspended === true;\r\n channel.active = n.isActive === true && n.isEnabled === true;\r\n channels.push(channel);\r\n }\r\n });\r\n this.availableChannels.set(channels);\r\n }\r\n }\r\n\r\n /**\r\n * Resets the login state, clears the stored login info, and broadcasts `LOGOUT_COMPLETED`.\r\n */\r\n reset(): void {\r\n // Clear login info\r\n this._loginInfo = undefined;\r\n // Logged out\r\n this._loggedIn.set(false);\r\n // Reset channels\r\n this.availableChannels.set([]);\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGOUT_COMPLETED);\r\n }\r\n\r\n /**\r\n * Clears all session-storage authentication keys and resets the login state.\r\n * @param clearOAuthToken - When `true`, the OAuth bearer token is also removed.\r\n */\r\n clear(clearOAuthToken: boolean = false): void {\r\n // Clear local storage\r\n sessionStorage.removeItem('clipper_auth');\r\n sessionStorage.removeItem('clipper_oauth');\r\n if (clearOAuthToken) {\r\n sessionStorage.removeItem('clipper_oauth_token');\r\n }\r\n\r\n // Reset login\r\n this.reset();\r\n }\r\n\r\n\r\n ////\r\n // BOOTSTRAP\r\n ////\r\n\r\n /**\r\n * Initialises the service with the API base URI, optional app URI, and feature flags.\r\n * @param serviceUri - The base URI of the Clipper REST API.\r\n * @param appUri - Optional URI of the Clipper web application (used to build document links).\r\n * @param flags - Feature flags that control service behaviour. Defaults to `ClipperServiceFlags.None`.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n appUri?: string,\r\n flags: ClipperServiceFlags = ClipperServiceFlags.None,\r\n ) {\r\n\r\n // Create unique client and machine id\r\n if (!sessionStorage.getItem('clipper_client_id')) {\r\n sessionStorage.setItem('clipper_client_id',\r\n (flags && ClipperServiceFlags.Embedded) > 0\r\n ? 'embedded'\r\n : SystemUtils.generateUUID());\r\n }\r\n\r\n // Initialize\r\n this._serviceUri = serviceUri;\r\n this._appUri = appUri;\r\n this._flags = flags;\r\n\r\n // React to message broadcasting\r\n if (!this.broadcastInitialized) {\r\n this.broadcastInitialized = true;\r\n this.broadcastService.getMessage()\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(message => {\r\n if (message.id === ClipperMessages.LOGIN_CHANGED) {\r\n this.injector.get(ClipperLoginService).login(\r\n undefined,\r\n undefined,\r\n true,\r\n message.data?.oauth ?? undefined,\r\n message.data?.oauthAccessToken ?? undefined).subscribe({\r\n next: r => {\r\n if (!r.success) {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR,\r\n { message: \"Le credenziali di accesso sono cambiate o non sono più valide. Esegui un nuovo accesso.\" });\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_FAILED);\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Connesso a Clipper\", icon: 'power', duration: 1500 });\r\n }\r\n // Load bag\r\n this.injector.get(ClipperDocumentsService).loadBag();\r\n }\r\n },\r\n error: () => { console.error(\"Clipper non disponibile.\") } // Avoid unwanted errors on client\r\n });\r\n } else if (message.id === ClipperMessages.LOGOUT) {\r\n if (this.loggedIn()) {\r\n this.injector.get(ClipperLoginService).logout().subscribe(r => {\r\n if (!r.success) {\r\n if (r.message) {\r\n this.broadcastService.sendMessage(ClipperMessages.ERROR,\r\n { message: \"<p>\" + r.message + \"</p><br><br><hr><p class='small'><i>Per eliminare la configurazione di Clipper accedere a:<br><b>menu > personalizza > collegamenti</b></i></p>\" });\r\n }\r\n } else {\r\n if ((this.flags & ClipperServiceFlags.DisplayConnectionStateMessages) > 0) {\r\n this.broadcastService.sendMessage(ClipperMessages.SUCCESS_TOAST,\r\n { message: \"Disconnesso da Clipper\", icon: 'power_off', duration: 1500 });\r\n }\r\n // Empty bag\r\n this.bag.set([]);\r\n }\r\n });\r\n } else {\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // Eveluate current session storage in case of page refresh (F5)\r\n if (this.loggedIn()) {\r\n // Auto login\r\n this.loggingIn.set(false);\r\n // Initialize channels\r\n this.initializeChannels();\r\n // Notify\r\n this.broadcastService.sendMessage(ClipperMessages.LOGIN_COMPLETED);\r\n }\r\n }\r\n\r\n /**\r\n * Ping\r\n */\r\n ping() {\r\n this.httpClient.get<ApiResult<number>>(\r\n this._serviceUri + '/ping?nocache=' + SystemUtils.generateUUID()\r\n )\r\n .pipe(catchError(() => { return EMPTY }))\r\n .subscribe();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, BroadcastService, NameValueItem } from '@arsedizioni/ars-utils/core';\r\nimport { RecoverPasswordDialogResult, ResetPasswordDialogResult } from '@arsedizioni/ars-utils/ui';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperChannel,\r\n ClipperChannelSettings,\r\n ClipperDashboardResult,\r\n ClipperLastDaysResult,\r\n ClipperModel,\r\n ClipperModule,\r\n ClipperSearchParams,\r\n ClipperSettingsInfo,\r\n ClipperUpdateChannelsStateParams,\r\n ClipperUserLink,\r\n ClipperUserTrialInfo,\r\n} from '../definitions';\r\nimport { ClipperMessages } from '../messages';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Account management: password reset/recovery, settings, channel activation, trial info\r\n * and user links. Channel state lives in `ClipperCoreService`; the channel-mutating\r\n * helpers (`setChannels`, `setChannelsState`, `updateChannels`) live here.\r\n */\r\n@Service()\r\nexport class ClipperAccountService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Resets the user's password using the provided parameters.\r\n * @param params - The new password and confirmation data.\r\n * @returns An observable emitting the API result wrapping the reset password payload.\r\n */\r\n resetPassword(params: ResetPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<ResetPasswordDialogResult>>(\r\n this.core.serviceUri + '/account/password/reset',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Initiates a password recovery flow by sending a reset link to the user's email.\r\n * @param params - The password recovery request data.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n recoverPassword(params: RecoverPasswordDialogResult) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/password/recover',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Gets the current user account settings.\r\n * @returns An observable emitting the API result wrapping the account settings.\r\n */\r\n getSettings() {\r\n return this.httpClient.get<ApiResult<ClipperSettingsInfo>>(\r\n this.core.serviceUri + '/account/settings'\r\n );\r\n }\r\n\r\n /**\r\n * Updates user account settings and applies any channel configuration changes.\r\n * @param params - A map of settings key-value pairs to update.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n updateSettings(params: ClipperSettingsInfo) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/settings/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n if (params.channels) {\r\n this.setChannels(params.channels);\r\n }\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Saves updated channel activation states to the server and applies the new dashboard result.\r\n * @param params - The channel state update parameters.\r\n * @returns An observable emitting the API result wrapping the dashboard result.\r\n */\r\n updateChannelsState(params: ClipperUpdateChannelsStateParams) {\r\n return this.httpClient.post<ApiResult<ClipperDashboardResult>>(\r\n this.core.serviceUri + '/account/settings/channels/update',\r\n params\r\n ).pipe(\r\n map(r => {\r\n if (r.success) {\r\n this.setChannelsState(r.value);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Applies a new dashboard result: updates channel settings, dashboard counters, and\r\n * re-initialises the available-channels signal.\r\n * @param value - The dashboard result containing updated channel and counter data.\r\n */\r\n setChannelsState(value: ClipperDashboardResult): void {\r\n // Update channels\r\n const info = this.core.loginInfo;\r\n if (info) {\r\n info.channels = value.channels ?? [];\r\n }\r\n // Update dashboard\r\n this.core.dashboard.documentUpdates = value.documentUpdates;\r\n this.core.dashboard.expiredDeadlines = value.expiredDeadlines;\r\n this.core.dashboard.expiringDeadlines = value.expiringDeadlines;\r\n this.core.dashboard.isTrial = value.isTrial;\r\n this.core.dashboard.items.set(value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n this.core.storeContext();\r\n this.core.initializeChannels();\r\n }\r\n\r\n /**\r\n * Replaces the stored channel settings and re-initialises the available-channels signal.\r\n * @param channels - The new channel settings to store and activate.\r\n */\r\n setChannels(channels: ClipperChannelSettings[]): void {\r\n const info = this.core.loginInfo;\r\n if (info) {\r\n info.channels = channels;\r\n this.core.storeContext();\r\n this.core.initializeChannels();\r\n }\r\n }\r\n\r\n /**\r\n * Toggles the active state of available channels based on the supplied selection list.\r\n * @param values - The selected channel items; channels absent from this list are deactivated.\r\n */\r\n updateChannels(values: NameValueItem<ClipperChannel>[]): void {\r\n this.core.availableChannels().forEach(channel => {\r\n if (!channel.disabled) {\r\n channel.active = values?.findIndex(x => x.value === channel.value) !== -1;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Gets the trial info for the current account.\r\n * @returns An observable emitting the API result wrapping the trial info.\r\n */\r\n private getTrialInfo() {\r\n return this.httpClient.get<ApiResult<ClipperUserTrialInfo>>(\r\n this.core.serviceUri + '/account/trial'\r\n );\r\n }\r\n\r\n /**\r\n * Refreshes the trial status from the server and updates the stored login context.\r\n */\r\n updateTrialInfo(): void {\r\n const info = this.core.loginInfo;\r\n if (!info || info?.context?.hasTrial === false)\r\n return; // Not supported\r\n this.getTrialInfo().subscribe((r: ApiResult<ClipperUserTrialInfo>) => {\r\n if (r.success) {\r\n if (info?.context) {\r\n if (r.value) {\r\n info.context.hasTrial = true;\r\n info.context.trialInfo = r.value;\r\n } else {\r\n info.context.hasTrial = false;\r\n info.context.trialInfo = undefined;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Creates or updates a user link record.\r\n * @param item - The user link data to save.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n saveLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/links/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Deletes a user link record.\r\n * @param item - The user link to remove.\r\n * @returns An observable emitting the API result wrapping a boolean success flag.\r\n */\r\n deleteLink(item: ClipperUserLink) {\r\n return this.httpClient.post<ApiResult<boolean>>(\r\n this.core.serviceUri + '/account/links/delete',\r\n item\r\n );\r\n }\r\n\r\n\r\n ///\r\n // DASHBOARD\r\n ///\r\n\r\n /**\r\n * Retrieves the current dashboard and applies its counters to the shared dashboard state.\r\n * @returns The subscription to the dashboard request.\r\n */\r\n loadDashboard() {\r\n return this.httpClient\r\n .post<ApiResult<ClipperDashboardResult>>(\r\n this.core.serviceUri + '/account/dashboard',\r\n { refreshing: true }\r\n ).subscribe((r: ApiResult<ClipperDashboardResult>) => {\r\n if (r.success) {\r\n this.core.dashboard.documentUpdates = r.value.documentUpdates;\r\n this.core.dashboard.expiredDeadlines = r.value.expiredDeadlines;\r\n this.core.dashboard.expiringDeadlines = r.value.expiringDeadlines;\r\n this.core.dashboard.isTrial = r.value.isTrial;\r\n this.core.dashboard.items.set(r.value.items ?? []);\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retrieves documents updated in the last 15 days for the given search parameters.\r\n * @param params - The search parameters to filter results.\r\n * @returns An observable emitting the API result wrapping the last-days result.\r\n */\r\n last15Days(params: ClipperSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperLastDaysResult>>(\r\n this.core.serviceUri + '/account/last-15-days',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Adjusts the unread-item counter for the given module and broadcasts a dashboard update.\r\n * @param module - The Clipper module whose counter should be adjusted.\r\n * @param model - Optional document model to further scope the counter update.\r\n * @param increment - The signed increment to apply (use negative values to decrement).\r\n */\r\n updateUnreadItems(module: ClipperModule, model?: ClipperModel, increment?: number): void {\r\n increment ??= 0;\r\n if (increment !== 0) {\r\n this.core.dashboard.updateUnreadItems(module, model, increment);\r\n }\r\n this.broadcastService.sendMessage(ClipperMessages.COMMAND_DASHBOARD_UPDATED);\r\n }\r\n}","import { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, Folder } from '@arsedizioni/ars-utils/core';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperArchiveFileInfo,\r\n ClipperArchiveFilesCopyParams,\r\n ClipperArchiveFilesDeleteParams,\r\n ClipperArchiveFilesSearchParams,\r\n ClipperArchiveFilesSearchResult,\r\n ClipperArchiveFoldersImportParams,\r\n ClipperArchiveFoldersSearchParams,\r\n ClipperArchiveFoldersSearchResult,\r\n} from '../definitions';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Document archive: folders and files search, save, copy, delete, import/export and download.\r\n */\r\n@Service()\r\nexport class ClipperArchiveService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Retrieves all archive folders matching the given search parameters and stores the\r\n * returned teams in the shared state.\r\n * @param params - The folder search parameters.\r\n * @returns An observable emitting the API result wrapping the folders search result.\r\n */\r\n getArchiveFolders(params: ClipperArchiveFoldersSearchParams) {\r\n return this.httpClient\r\n .post<ApiResult<ClipperArchiveFoldersSearchResult>>(\r\n this.core.serviceUri + '/archive/folders',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperArchiveFoldersSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this.core.setTeams(r.value.teams);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates an archive folder.\r\n * @param params - The folder data to save.\r\n * @returns An observable emitting the API result wrapping the saved folder.\r\n */\r\n saveArchiveFolder(params: Folder) {\r\n return this.httpClient.post<ApiResult<Folder>>(\r\n this.core.serviceUri + '/archive/folders/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Exports archive folders as a downloadable file.\r\n * @param id - The folder ID to export, or `undefined` to export all folders.\r\n * @param teamId - The optional team ID. Defaults to `undefined` (personal workspace).\r\n * @returns An observable emitting the exported folders content as a blob.\r\n */\r\n exportArchiveFolders(id?: string, teamId?: string) {\r\n let url = this.core.serviceUri + '/archive/export/?';\r\n if (id) {\r\n url += 'id=' + id;\r\n }\r\n if (teamId) {\r\n if (id) {\r\n url += '&';\r\n }\r\n url += 'team=' + teamId;\r\n }\r\n return this.httpClient.get(\r\n url,\r\n {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/octet-stram'\r\n }),\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Uploads and imports archive folders from a file.\r\n * @param params - The import parameters including the source file and destination folder.\r\n * @returns An observable of HTTP events reporting upload progress and the final response.\r\n */\r\n importArchiveFolders(params: ClipperArchiveFoldersImportParams) {\r\n // Prepare form\r\n const formData = new FormData();\r\n formData.append(params.file.name, params.file);\r\n formData.append('sourceFileName', params.file.name);\r\n formData.append('overwrite', params.overwrite === true ? \"true\" : \"false\");\r\n if (params.destFolderId) {\r\n formData.append('destFolderId', params.destFolderId);\r\n }\r\n if (params.teamId) {\r\n formData.append('teamId', params.teamId);\r\n }\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this.core.serviceUri + '/archive/import/',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves archive files and folders matching the given search parameters.\r\n * @param params - The archive files search parameters.\r\n * @returns An observable emitting the API result wrapping the files search result.\r\n */\r\n queryArchiveItems(params: ClipperArchiveFilesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperArchiveFilesSearchResult>>(\r\n this.core.serviceUri + '/archive/files',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more archive files or folders.\r\n * @param params - The delete operation parameters.\r\n * @returns An observable emitting the API result wrapping the number of deleted items.\r\n */\r\n deleteArchiveItems(params: ClipperArchiveFilesDeleteParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/archive/files/delete',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Copies archive files or folders to a destination folder.\r\n * @param params - The copy operation parameters.\r\n * @returns An observable emitting the API result wrapping the number of copied items.\r\n */\r\n copyArchiveItems(params: ClipperArchiveFilesCopyParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/archive/files/copy',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Uploads and saves an archive file using multipart form data.\r\n * @param params - The file metadata and binary content to save.\r\n * @returns An observable of HTTP events reporting upload progress and the final response.\r\n */\r\n saveArchiveFile(params: ClipperArchiveFileInfo) {\r\n // Prepare form\r\n const formData = new FormData();\r\n if (params.file) formData.append(params.file.file.name, params.file.file);\r\n if (params.id) formData.append('id', params.id);\r\n if (params.folderId) {\r\n formData.append('folderId', params.folderId);\r\n }\r\n if (params.topicId && params.topicPath) {\r\n formData.append('topicId', params.topicId);\r\n formData.append('topicPath', params.topicPath);\r\n }\r\n if (params.title1) formData.append('title1', params.title1);\r\n if (params.title2) formData.append('title2', params.title2);\r\n if (params.origin) formData.append('origin', params.origin);\r\n if (params.originDescription) {\r\n formData.append('originDescription', params.originDescription);\r\n }\r\n if (params.documentId) formData.append('documentId', params.documentId);\r\n if (params.documentIds) formData.append('documentIds', params.documentIds);\r\n if (params.binaryId) formData.append('binaryId', params.binaryId?.toString());\r\n if (params.tags) formData.append('tags', params.tags);\r\n if (params.notes) formData.append('notes', params.notes);\r\n if (params.fileName) formData.append('fileName', params.fileName);\r\n if (params.fileType) formData.append('fileType', (params.fileType as number).toString());\r\n if (params.storageType) formData.append('storageType', (params.storageType as number).toString());\r\n if (params.model) formData.append('model', (params.model as number).toString());\r\n\r\n // Create request\r\n return this.httpClient.request(\r\n new HttpRequest(\r\n 'POST',\r\n this.core.serviceUri + '/archive/files/save',\r\n formData,\r\n { reportProgress: true }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the metadata for a single archive file.\r\n * @param id - The ID of the archive file to retrieve.\r\n * @returns An observable emitting the API result wrapping the archive file info.\r\n */\r\n getArchiveFile(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperArchiveFileInfo>>(\r\n this.core.serviceUri + '/archive/files/' + id);\r\n }\r\n\r\n /**\r\n * Downloads the binary content of an archive file.\r\n * @param id - The binary ID of the file to download.\r\n * @param otp - An optional one-time password for authenticated downloads.\r\n * @returns An observable emitting the file binary content as a blob.\r\n */\r\n downloadArchiveFile(id: number, otp?: string) {\r\n return this.httpClient.get(\r\n this.core.serviceUri + '/archive/files/download/?id=' + id + '&otp=' + (otp ?? ''),\r\n { responseType: 'blob' }\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult } from '@arsedizioni/ars-utils/core';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperCalendarCopyDeadlinesParams,\r\n ClipperCalendarSaveDeadlineParams,\r\n ClipperCalendarSearchParams,\r\n ClipperCalendarSearchResult,\r\n ClipperDeadlineInfo,\r\n ClipperSearchCalendarSnapshotResult,\r\n} from '../definitions';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Calendar deadlines: search, snapshot, save/copy/close/delete and iCalendar export.\r\n */\r\n@Service()\r\nexport class ClipperCalendarService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Queries the calendar and stores the returned teams in the shared state.\r\n * @param params - The calendar search parameters.\r\n * @returns An observable emitting the API result wrapping the calendar search result.\r\n */\r\n queryCalendar(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperCalendarSearchResult>>(\r\n this.core.serviceUri + '/calendar',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperCalendarSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this.core.setTeams(r.value.teams);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets the calendar snapshot.\r\n * @param params - The calendar search parameters.\r\n * @returns An observable emitting the API result wrapping the calendar snapshot result.\r\n */\r\n calendarSnapshot(params: ClipperCalendarSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperSearchCalendarSnapshotResult>>(\r\n this.core.serviceUri + '/calendar/snapshot',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes one or more calendar deadlines by ID.\r\n * @param ids - The IDs of the deadlines to delete.\r\n * @returns An observable emitting the API result wrapping the number of deleted deadlines.\r\n */\r\n deleteCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/calendar/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Copies one or more calendar deadlines using the given parameters.\r\n * @param params - The copy operation parameters.\r\n * @returns An observable emitting the API result wrapping the number of copied deadlines.\r\n */\r\n copyCalendarDeadlines(params: ClipperCalendarCopyDeadlinesParams) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/calendar/copy',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Marks the given calendar deadline as closed.\r\n * @param id - The ID of the deadline to close.\r\n * @returns An observable emitting the API result wrapping the updated deadline.\r\n */\r\n closeCalendarDeadline(id: string) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo>>(\r\n this.core.serviceUri + '/calendar/close',\r\n { id: id }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a calendar deadline.\r\n * @param params - The deadline data to save.\r\n * @returns An observable emitting the API result wrapping the saved deadlines.\r\n */\r\n saveCalendarDeadline(params: ClipperCalendarSaveDeadlineParams) {\r\n return this.httpClient.post<ApiResult<ClipperDeadlineInfo[]>>(\r\n this.core.serviceUri + '/calendar/save',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves a single calendar deadline by its ID.\r\n * @param id - The ID of the deadline to retrieve.\r\n * @returns An observable emitting the API result wrapping the deadline.\r\n */\r\n getCalendarDeadline(id: string) {\r\n return this.httpClient.get<ApiResult<ClipperDeadlineInfo>>(\r\n this.core.serviceUri + '/calendar/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Exports the selected deadlines in iCalendar (.ics) format.\r\n * @param ids - The IDs of the deadlines to export.\r\n * @returns An observable emitting the iCalendar content as a blob.\r\n */\r\n exportCalendarDeadlines(ids: string[]) {\r\n return this.httpClient.post(\r\n this.core.serviceUri + '/calendar/export',\r\n { ids: ids },\r\n {\r\n responseType: 'blob'\r\n }\r\n );\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Service, inject } from '@angular/core';\r\nimport { ApiResult, QueryResultModel } from '@arsedizioni/ars-utils/core';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ClipperContactInfo,\r\n ClipperContactsSearchParams,\r\n ClipperDocumentNote,\r\n ClipperDocumentNoteTracking,\r\n ClipperNotesSearchParams,\r\n ClipperNotesSearchResult,\r\n ClipperTeamInfo,\r\n ClipperTeamMemberInfo,\r\n ClipperTeamMembersSearchResult,\r\n ClipperTeamsSearchParams,\r\n ClipperTeamsSearchResult,\r\n} from '../definitions';\r\nimport { ClipperCoreService } from './core.service';\r\n\r\n/**\r\n * Collaboration: teams and team members, contacts and shared document notes.\r\n */\r\n@Service()\r\nexport class ClipperCollaborationService {\r\n\r\n private readonly httpClient = inject(HttpClient);\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /**\r\n * Renames the current user's team.\r\n * @param newName - The new display name for the team.\r\n * @returns An observable emitting the API result wrapping the updated team info.\r\n */\r\n renameTeam(newName: string) {\r\n return this.httpClient.post<ApiResult<ClipperTeamInfo>>(\r\n this.core.serviceUri + '/account/teams/update',\r\n { title: newName }\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the list of teams available to the current user. When not querying\r\n * admins only, the result is also stored in the shared teams state.\r\n * @param params - The teams search parameters.\r\n * @returns An observable emitting the API result wrapping the teams search result.\r\n */\r\n getTeams(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamsSearchResult>>(\r\n this.core.serviceUri + '/account/teams',\r\n params\r\n )\r\n .pipe(\r\n map((r: ApiResult<ClipperTeamsSearchResult>) => {\r\n // Store teams\r\n if (!params.adminsOnly) {\r\n this.core.setTeams(r.value.items);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the members of a team matching the given search parameters.\r\n * @param params - The team members search parameters.\r\n * @returns An observable emitting the API result wrapping the team members search result.\r\n */\r\n getTeamMembers(params: ClipperTeamsSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMembersSearchResult>>(\r\n this.core.serviceUri + '/account/teams/members',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Removes the specified members from the team.\r\n * @param teamId - The ID of the team.\r\n * @param ids - The numeric IDs of the team members to remove.\r\n * @returns An observable emitting the API result wrapping the number of removed members.\r\n */\r\n deleteTeamMembers(teamId: string, ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/account/teams/members/delete',\r\n { teamId: teamId, ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a team member record.\r\n * @param item - The team member data to save.\r\n * @returns An observable emitting the API result wrapping the saved team member.\r\n */\r\n saveTeamMember(item: ClipperTeamMemberInfo) {\r\n return this.httpClient.post<ApiResult<ClipperTeamMemberInfo>>(\r\n this.core.serviceUri + '/account/teams/members/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves contacts matching the given search parameters.\r\n * @param params - The contacts search parameters.\r\n * @returns An observable emitting the API result wrapping the contacts query result.\r\n */\r\n queryContacts(params: ClipperContactsSearchParams) {\r\n return this.httpClient.post<ApiResult<QueryResultModel<ClipperContactInfo>>>(\r\n this.core.serviceUri + '/account/contacts',\r\n params\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the specified contacts.\r\n * @param ids - The numeric IDs of the contacts to remove.\r\n * @returns An observable emitting the API result wrapping the number of deleted contacts.\r\n */\r\n deleteContacts(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/account/contacts/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a contact record.\r\n * @param item - The contact data to save.\r\n * @returns An observable emitting the API result wrapping the saved contact.\r\n */\r\n saveContact(item: ClipperContactInfo) {\r\n return this.httpClient.post<ApiResult<ClipperContactInfo>>(\r\n this.core.serviceUri + '/account/contacts/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves document notes matching the given search parameters and stores the\r\n * returned teams in the shared state.\r\n * @param params - The notes search parameters.\r\n * @returns An observable emitting the API result wrapping the notes search result.\r\n */\r\n queryNotes(params: ClipperNotesSearchParams) {\r\n return this.httpClient.post<ApiResult<ClipperNotesSearchResult>>(\r\n this.core.serviceUri + '/account/notes',\r\n params\r\n ).pipe(\r\n map((r: ApiResult<ClipperNotesSearchResult>) => {\r\n // Store teams\r\n if (r.success) {\r\n this.core.setTeams(r.value.teams);\r\n }\r\n return r;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Deletes the specified document notes.\r\n * @param ids - The numeric IDs of the notes to remove.\r\n * @returns An observable emitting the API result wrapping the number of deleted notes.\r\n */\r\n deleteNotes(ids: number[]) {\r\n return this.httpClient.post<ApiResult<number>>(\r\n this.core.serviceUri + '/account/notes/delete',\r\n { ids: ids }\r\n );\r\n }\r\n\r\n /**\r\n * Creates or updates a document note.\r\n * @param item - The note data to save.\r\n * @returns An observable emitting the API result wrapping the saved note.\r\n */\r\n saveNote(item: ClipperDocumentNote) {\r\n return this.httpClient.post<ApiResult<ClipperDocumentNote>>(\r\n this.core.serviceUri + '/account/notes/save',\r\n item\r\n );\r\n }\r\n\r\n /**\r\n * Retrieves the tracking history for the given document note.\r\n * @param id - The numeric ID of the note whose tracking records to retrieve.\r\n * @returns An observable emitting the API result wrapping the note tracking records.\r\n */\r\n getNoteTrackings(id: number) {\r\n return this.httpClient.get<ApiResult<ClipperDocumentNoteTracking[]>>(\r\n this.core.serviceUri + '/account/notes/trackings/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Gets the count of troubled tracking notifications for document notes,\r\n * which can be used to display an unread counter in the UI.\r\n * @returns An observable emitting the API result wrapping the troubled tracking count.\r\n */\r\n countNotesTrackingsTroubled() {\r\n return this.httpClient.get<ApiResult<number>>(\r\n this.core.serviceUri + '/account/notes/trackings/troubled'\r\n );\r\n }\r\n}\r\n","import { Service, Signal, WritableSignal, inject } from '@angular/core';\r\nimport { NameValueItem } from '@arsedizioni/ars-utils/core';\r\nimport {\r\n ClipperAvailableChannel,\r\n ClipperDashboard,\r\n ClipperDocumentInfo,\r\n ClipperLoginInfo,\r\n ClipperSearchResult,\r\n ClipperServiceFlags,\r\n} from '../definitions';\r\nimport { ClipperAccountService } from './account.service';\r\nimport { ClipperArchiveService } from './archive.service';\r\nimport { ClipperCalendarService } from './calendar.service';\r\nimport { ClipperCollaborationService } from './collaboration.service';\r\nimport { ClipperCoreService } from './core.service';\r\nimport { ClipperDocumentsService } from './documents.service';\r\nimport { ClipperLoginService } from './login.service';\r\n\r\n/**\r\n * Barrel / facade for the Clipper application.\r\n *\r\n * Exposes the feature services as named properties and re-exports the shared state\r\n * declared in `ClipperCoreService`. Inject `ClipperService` and reach a feature via\r\n * its property, e.g. `clipper.login.login(...)`, `clipper.documents.query(...)`,\r\n * `clipper.calendar.queryCalendar(...)`.\r\n */\r\n@Service()\r\nexport class ClipperService {\r\n\r\n private readonly core = inject(ClipperCoreService);\r\n\r\n /** Authentication: login/logout, MFA, OTP. */\r\n readonly session = inject(ClipperLoginService);\r\n /** Document search, references, export, working-documents bag and saved searches. */\r\n readonly documents = inject(ClipperDocumentsService);\r\n /** Account settings, dashboard, password, channels, trial info and user links. */\r\n readonly account = inject(ClipperAccountService);\r\n /** Archive folders and files. */\r\n readonly archive = inject(ClipperArchiveService);\r\n /** Calendar deadlines. */\r\n readonly calendar = inject(ClipperCalendarService);\r\n /** Teams, contacts and shared notes. */\r\n readonly collaboration = inject(ClipperCollaborationService);\r\n\r\n\r\n ////\r\n // RE-EXPORTED CORE STATE\r\n ////\r\n\r\n /** @returns The URI of the Clipper web application, or `undefined` if not set. */\r\n get appUri(): string | undefined { return this.core.appUri; }\r\n\r\n /** @returns The base URI of the Clipper REST API. */\r\n get serviceUri(): string { return this.core.serviceUri; }\r\n\r\n /** @returns The active feature flags. */\r\n get flags(): ClipperServiceFlags { return this.core.flags; }\r\n\r\n /** @returns The current login context, or `undefined` if not authenticated. */\r\n get loginInfo(): ClipperLoginInfo | undefined { return this.core.loginInfo; }\r\n\r\n /** @returns A read-only signal indicating whether the user is logged in. */\r\n get loggedIn(): Signal<boolean> { return this.core.loggedIn; }\r\n\r\n /** @returns A signal indicating whether a login is in progress. */\r\n get loggingIn(): WritableSignal<boolean> { return this.core.loggingIn; }\r\n\r\n /** @returns A signal holding the current documents search snapshot. */\r\n get snapshot(): WritableSignal<ClipperSearchResult | undefined> { return this.core.snapshot; }\r\n\r\n /** @returns A signal indicating whether reference search is supported. */\r\n get supportsRS(): WritableSignal<boolean> { return this.core.supportsRS; }\r\n\r\n /** @returns A signal holding the current references search snapshot. */\r\n get referencesSnapshot(): WritableSignal<ClipperSearchResult | undefined> { return this.core.referencesSnapshot; }\r\n\r\n /** @returns The shared dashboard state object. */\r\n get dashboard(): ClipperDashboard { return this.core.dashboard; }\r\n\r\n /** @returns A signal holding the working-documents bag. */\r\n get bag(): WritableSignal<ClipperDocumentInfo[]> { return this.core.bag; }\r\n\r\n /** @returns A computed signal with the number of items in the bag. */\r\n get bagTotal(): Signal<number> { return this.core.bagTotal; }\r\n\r\n /** @returns A signal controlling the Clipper UI visibility. */\r\n get visible(): WritableSignal<boolean> { return this.core.visible; }\r\n\r\n /** @returns The shared teams collection. */\r\n get teams(): NameValueItem<string>[] { return this.core.teams; }\r\n\r\n /** @returns A signal holding the available channels. */\r\n get availableChannels(): WritableSignal<ClipperAvailableChannel[]> { return this.core.availableChannels; }\r\n\r\n /** @returns A computed signal with the currently active channels. */\r\n get activeChannels(): Signal<ClipperAvailableChannel[]> { return this.core.activeChannels; }\r\n\r\n /** @returns A signal indicating whether tagging is allowed. */\r\n get allowTags(): WritableSignal<boolean> { return this.core.allowTags; }\r\n\r\n /** @returns A signal with the number of pending notes, or `undefined` if unknown. */\r\n get pendingNotes(): WritableSignal<number | undefined> { return this.core.pendingNotes; }\r\n\r\n\r\n ////\r\n // BOOTSTRAP\r\n ////\r\n\r\n /**\r\n * Initialises the application with the API base URI, optional app URI, and feature flags.\r\n * @param serviceUri - The base URI of the Clipper REST API.\r\n * @param appUri - Optional URI of the Clipper web application (used to build document links).\r\n * @param flags - Feature flags that control service behaviour. Defaults to `ClipperServiceFlags.None`.\r\n */\r\n initialize(\r\n serviceUri: string,\r\n appUri?: string,\r\n flags: ClipperServiceFlags = ClipperServiceFlags.None,\r\n ) {\r\n this.core.initialize(serviceUri, appUri, flags);\r\n }\r\n\r\n /**\r\n * Pings the Clipper REST API to keep the session/token alive.\r\n */\r\n ping() {\r\n this.core.ping();\r\n }\r\n}\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { BroadcastService, ErrorInfo } from '@arsedizioni/ars-utils/core';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { ClipperServiceFlags } from '../definitions';\r\nimport { ClipperService } from '../services/clipper.service';\r\nimport { ClipperMessages } from '../messages';\r\n\r\n/** Minimum milliseconds between consecutive error broadcasts (debounce guard). */\r\nconst ERROR_DEBOUNCE_MS = 5000;\r\n\r\n/**\r\n * HTTP interceptor that attaches Clipper authentication headers to every request\r\n * targeting the Clipper service, and broadcasts user-friendly error messages\r\n * when the server returns an error response.\r\n */\r\n@Injectable()\r\nexport class ClipperAuthInterceptor implements HttpInterceptor {\r\n private readonly clipperService = inject(ClipperService);\r\n private readonly broadcastService = inject(BroadcastService);\r\n private lastErrorTime = -1;\r\n\r\n /**\r\n * Intercepts every outgoing HTTP request.\r\n * When the request targets the Clipper service URI, attaches credentials and\r\n * a client-ID header, then pipes the response through an error handler.\r\n * @param request - The outgoing HTTP request.\r\n * @param next - The next handler in the interceptor chain.\r\n * @returns An observable of the HTTP event stream.\r\n */\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (!request.url.startsWith(this.clipperService.serviceUri)) {\r\n return next.handle(request);\r\n }\r\n\r\n const authenticatedRequest = request.clone({\r\n withCredentials: true,\r\n setHeaders: {\r\n 'ngsw-bypass': 'ngsw-bypass',\r\n 'X-Client-Id': sessionStorage.getItem('clipper_client_id') ?? ''\r\n }\r\n });\r\n\r\n return next.handle(authenticatedRequest).pipe(\r\n catchError((error: unknown) => {\r\n this.handleError(error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Processes an HTTP error, broadcasting a user-friendly message when appropriate.\r\n * Errors are debounced: only one message is sent per `ERROR_DEBOUNCE_MS` window.\r\n *\r\n * This handler only ever runs for requests already targeting the Clipper service\r\n * (see `intercept`). A transport-level failure produces an `HttpErrorResponse`\r\n * with status `0` and a `null` url, so the url is only validated when present —\r\n * that way genuine network failures still surface the \"service unavailable\" message.\r\n * @param error - The raw error value thrown by the HTTP layer.\r\n */\r\n private handleError(error: unknown): void {\r\n if (!(error instanceof HttpErrorResponse)) return;\r\n // Reject only errors that explicitly belong to a different service; a missing\r\n // url (network failure on a Clipper request) is allowed through.\r\n if (error.url && !error.url.startsWith(this.clipperService.serviceUri)) return;\r\n\r\n const errorStatus = error.status;\r\n const shouldNotify =\r\n errorStatus === 0 ||\r\n (errorStatus > 0 && errorStatus < 500) ||\r\n (this.clipperService.flags & ClipperServiceFlags.NotifySystemErrors) > 0;\r\n\r\n if (!shouldNotify) return;\r\n\r\n const now = Date.now();\r\n if (now - this.lastErrorTime <= ERROR_DEBOUNCE_MS) return;\r\n this.lastErrorTime = now;\r\n\r\n let message: string;\r\n switch (errorStatus) {\r\n case 0:\r\n message = \"In questo momento Clipper non è disponibile. Riprova tra qualche minuto.\";\r\n break;\r\n case 403:\r\n message = \"Non hai i permessi necessari per eseguire l'operazione richiesta.\";\r\n break;\r\n default:\r\n message = (\r\n (error.error as Record<string, string> | null)?.['message'] ??\r\n error.message ??\r\n \"Impossibile eseguire l'operazione richiesta.\"\r\n ).replaceAll('\\r\\n', '</p><p>');\r\n break;\r\n }\r\n\r\n this.broadcastService.sendMessage(\r\n ClipperMessages.ERROR,\r\n {\r\n invalidateSession: errorStatus === 405 || errorStatus === 410,\r\n message,\r\n title: \"Errore in Clipper\",\r\n errorStatus,\r\n service: this.clipperService.serviceUri\r\n } as ErrorInfo\r\n );\r\n }\r\n}","// Public API surface for the Clipper services.\r\n//\r\n// `ClipperService` is the facade/barrel: inject it and reach a feature via its\r\n// property (e.g. `clipper.login.login(...)`, `clipper.documents.query(...)`).\r\n// The feature and core services are exported as well so they can be injected\r\n// directly or referenced as types where needed.\r\n\r\nexport * from './clipper.service';\r\nexport * from './login.service';\r\nexport * from './documents.service';\r\nexport * from './account.service';\r\nexport * from './archive.service';\r\nexport * from './core.service';\r\nexport * from './calendar.service';\r\nexport * from './collaboration.service';","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './common/messages';\r\nexport * from './common/definitions';\r\nexport * from './common/notes';\r\nexport * from './common/interceptors/auth.interceptor';\r\nexport * from './common/services/index';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["catchError"],"mappings":"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"}