diff --git a/CHANGELOG.md b/CHANGELOG.md index da14d4ebf..d358fd637 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,72 @@ # Monitoraggio.RepubblicaDigitale.Gov.it +## [1.0.0-test.337](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/compare/1.0.0-test.336...1.0.0-test.337) (2024-09-25) + + +### Features + +* **fe-piattaforma:** aggiunta tooltip in caso di caricamento fallito 20240925 ([dabd17d](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/dabd17de36ff18196ba71d4582e16997ed359840)) + + +### Bug Fixes + +* **caricamento-excel:** fix controllo uguaglianza servizio cittadino SCD 20240925 ([2b9520c](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/2b9520cdbc67ac0649cb9c34cb4f179985d4b7a4)) +* **ms-questionario-cittadino:** fix ricerca registro attivita 20240925 ([a5c7c9c](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/a5c7c9cb814c808c317b73a9eb2d8de31e102633)) + +## [1.0.0-test.336](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/compare/1.0.0-test.335...1.0.0-test.336) (2024-09-25) + + +### Bug Fixes + +* **ms-questionario-cittadino:** fix salvataggio registro attivita 20240925 ([30eacf4](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/30eacf442902ee46843feda4194bb7a5fb891cba)) +* **caricamento-excel:** fix rollback su uguaglianza servizio cittadino 20240925 ([2dc17ca](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/2dc17ca916ddcb59abee52f702650554b2dd6b27)) + +## [1.0.0-test.335](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/compare/1.0.0-test.334...1.0.0-test.335) (2024-09-24) + + +### Features + +* **caricamento-excel:** gestione rollback per caricamento SCD 20240923 ([c638f08](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/c638f086a081c269fc1454ec316f10157393f4fb)) +* **caricamento-massivo-excel:** aggiunta estensione file caricamento in registro attivita 20240919 ([fad5ba5](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/fad5ba58ce5795cdeade858db2f9ed736f015592)) +* **caricamento-excel:** WIP controlli BE unicita servizio cittadino 20240919 ([1576d7c](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/1576d7c0350ce475c60d1306621f802490b0ca16)) +* **fe-piattaforma:** caricamento massivo excel 20240918 ([28f462a](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/28f462acb3b1c1c84131ad853255a58763554e01)) +* **fe-piattaforma:** WIP caricamento massivo EXCEL 20240913 ([facb912](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/facb9125e344fb94f18a9e2882c4cb6f8ee775d8)) + + +### Bug Fixes + +* **terminazione-utente:** migliorati controlli terminazione utente 20240924 ([1f79ff9](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/1f79ff9dec31895dca464a996f287bf32f4e4aae)) + +## [1.0.0-test.334](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/compare/1.0.0-test.333...1.0.0-test.334) (2024-09-23) + + +### Features + +* **fe-piattaforma:** polling tabella registro attivita ([57959cb](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/57959cb5bf6595df082ba7d547a31f2c2c81e13d)) +* **fe-piattaforma:** update tabella caricamento massivo ([5bdd720](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/5bdd720cd421a18d8a6a27d78696bed8ac8f78bf)) + + +### Bug Fixes + +* **fe-piattaforma:** update descrizioni errori 20240923 ([b6eed33](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/b6eed33f68eff51c9ea349f075c9d32c45aaacfb)) + +## [1.0.0-test.333](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/compare/1.0.0-test.332...1.0.0-test.333) (2024-09-20) + + +### Bug Fixes + +* **ms-questionario-cittadino:** aggiunti controlli unicita modifica servizio 20240920 ([2a4f45c](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/2a4f45c37ca7e22f1cb27018c85c3b919e1fbf12)) +* **fe-piattaforma:** fix controllo questionario stampabile 20240920 ([7f851ae](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/7f851ae0f229d5b112601b8f307c8f806bcf927c)) + +## [1.0.0-test.332](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/compare/1.0.0-test.331...1.0.0-test.332) (2024-09-20) + + +### Bug Fixes + +* **creazione-servizio:** aggiornato errore unicita servizio 20240920 ([c14a248](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/c14a2486448ffab62d57871de8d1eda8a826764c)) +* **fe-piattaforma:** modifica font authority schede drupal 20240920 ([86a90bc](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/86a90bcf4b4c2226bf56a91e66b5d1225fe3a6f3)) +* **fe-piattaforma:** aggiunta didascalia a campo Provincia 20240920 ([0252639](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/commit/025263960cf428383bfe65ad962101115db68cc4)) + ## [1.0.0-test.331](https://github.com/teamdigitale/monitoraggio.repubblicadigitale.gov.it/compare/1.0.0-test.330...1.0.0-test.331) (2024-09-19) diff --git a/fe-piattaforma/public/assets/errors/errors.json b/fe-piattaforma/public/assets/errors/errors.json index 05a0f2b24..eef7c0203 100644 --- a/fe-piattaforma/public/assets/errors/errors.json +++ b/fe-piattaforma/public/assets/errors/errors.json @@ -129,12 +129,12 @@ "descrizione": "Errore ruolo non definito per l'utente" }, "U07": { - "titolo": "CODICE FISCALE O N. DOCUMENTO GIÀ IN USO", - "descrizione": "Il codice fiscale o il n. documento inserito risulta associato a un altro cittadino. Ti invitiamo a verificarne la correttezza" + "titolo": "CODICE FISCALE GIÀ IN USO", + "descrizione": "Il codice fiscale inserito risulta associato a un altro cittadino. Ti invitiamo a verificarne la correttezza" }, "U08": { "titolo": "", - "descrizione": "Errore codice fiscale o numero documento non specificato" + "descrizione": "Errore codice fiscale non specificato" }, "U09": { "titolo": "", @@ -194,7 +194,7 @@ }, "S10": { "titolo": "", - "descrizione": "Il servizio che vuoi creare riporta gli stessi dati di un servizio già esistente. Per creare una nuovo servizio, assicurati di differenziare almeno un’informazione, per esempio il nome o la descrizione" + "descrizione": "Il servizio che vuoi creare riporta gli stessi dati di un servizio già esistente per la stessa data. Per creare una nuovo servizio, assicurati di differenziare almeno un’informazione, per esempio il nome o la descrizione" }, "S11": { "titolo": "", diff --git a/fe-piattaforma/src/components/AccordionRow/accordionRow.tsx b/fe-piattaforma/src/components/AccordionRow/accordionRow.tsx index 11d1eea77..0c969f9e2 100644 --- a/fe-piattaforma/src/components/AccordionRow/accordionRow.tsx +++ b/fe-piattaforma/src/components/AccordionRow/accordionRow.tsx @@ -151,7 +151,18 @@ const AccordionRow: React.FC = ({ color='primary' /> - ) : null} + ) : } {((onTooltipInfo || innerInfo?.onTooltipInfo) && innerInfo?.isPresentInList) || diff --git a/fe-piattaforma/src/components/ActivityReportTable/ActivityReportTable.tsx b/fe-piattaforma/src/components/ActivityReportTable/ActivityReportTable.tsx index 8d798b737..110114669 100644 --- a/fe-piattaforma/src/components/ActivityReportTable/ActivityReportTable.tsx +++ b/fe-piattaforma/src/components/ActivityReportTable/ActivityReportTable.tsx @@ -82,11 +82,13 @@ const ActivityReportTable = forwardRef(function ActivityReportTable( const { projectId, enteId } = useParams(); const searchReports = useCallback( - (newPage: number) => { + (newPage: number, showLoaderFlag = true) => { if (projectId && (enteId || projectContext)) { - dispatch(showLoader()); + if(showLoaderFlag) + dispatch(showLoader()); searchActivityReport( newPage - 1, + 10, parseInt(projectId), enteId ? parseInt(enteId) : projectContext!.idEnte ) @@ -127,6 +129,12 @@ const ActivityReportTable = forwardRef(function ActivityReportTable( useEffect(() => { searchReports(1); + + const interval = setInterval(() => { + searchReports(1, false); + }, 30000); + + return () => clearInterval(interval); }, [projectId]); useImperativeHandle( diff --git a/fe-piattaforma/src/components/CSVUploader/CSVUploader.tsx b/fe-piattaforma/src/components/CSVUploader/CSVUploader.tsx index 361e2a79b..157a6d7df 100644 --- a/fe-piattaforma/src/components/CSVUploader/CSVUploader.tsx +++ b/fe-piattaforma/src/components/CSVUploader/CSVUploader.tsx @@ -8,6 +8,9 @@ import WarningModal from '../FileHandling/WarningModal'; import { closeModal, openModal } from '../../redux/features/modal/modalSlice'; import { selectProfile } from '../../redux/features/user/userSlice'; import { ProjectContext } from '../../contexts/ProjectContext'; +import { useParams } from 'react-router-dom'; +import { searchActivityReport } from '../../services/activityReportService'; +import { hideLoader, showLoader } from '../../redux/features/app/appSlice'; function showErrorFormatCSV() { dispatchNotify({ @@ -61,6 +64,7 @@ export default function CSVUploader({ const { codiceRuolo: userRole } = useAppSelector(selectProfile) || {}; const projectContext = useContext(ProjectContext); const [selectedFile, setSelectedFile] = useState(null); + const { projectId, enteId } = useParams(); const handleFileInput = useCallback( (filesToUpload: File[]) => { @@ -97,18 +101,57 @@ export default function CSVUploader({ [userRole] ); + + const checkTable = async () => { + if (projectId && (enteId || projectContext)) { + try { + dispatch(showLoader()); + const res = await searchActivityReport( + 0, + 100, + parseInt(projectId), + enteId ? parseInt(enteId) : projectContext!.idEnte + ) + .finally(() => dispatch(hideLoader())); + for (const element of res.data.content) { + if (element.jobStatus === 'IN_PROGRESS') { + dispatchNotify({ + title: 'IMPOSSIBILE AVVIARE INSERIMENTO DATI', + status: 'error', + message: `E' già in corso un inserimento dati (errore CM01)`, + closable: true, + duration: 'slow', + }); + return false; + } + } + return true; + } catch (err) { + return false; + } + } + return false; + } + + const handleDrop = useCallback( - (event) => { + async (event) => { event.preventDefault(); - showConfirmDialog(event.dataTransfer.files); + const canProceed = await checkTable(); + if (canProceed) { + showConfirmDialog(event.dataTransfer.files); + } }, [handleFileInput, showConfirmDialog] ); const handleInput = useCallback( - (e) => { + async (e) => { e.preventDefault(); + const canProceed = await checkTable(); + if (canProceed) { showConfirmDialog(e.target.files); + } }, [handleFileInput, showConfirmDialog] ); diff --git a/fe-piattaforma/src/components/CardDocument/PublishingAuthority.tsx b/fe-piattaforma/src/components/CardDocument/PublishingAuthority.tsx index c16f5be1e..945d052b1 100644 --- a/fe-piattaforma/src/components/CardDocument/PublishingAuthority.tsx +++ b/fe-piattaforma/src/components/CardDocument/PublishingAuthority.tsx @@ -20,7 +20,6 @@ const PublishingAuthority: React.FC = ({ 'document-card-container__authority', 'ml-2', 'text-serif', - 'font-italic', 'font-weight-bold' )} > diff --git a/fe-piattaforma/src/components/CardDocument/cardDocument.scss b/fe-piattaforma/src/components/CardDocument/cardDocument.scss index 37363b841..c4d14ae6f 100644 --- a/fe-piattaforma/src/components/CardDocument/cardDocument.scss +++ b/fe-piattaforma/src/components/CardDocument/cardDocument.scss @@ -1,4 +1,5 @@ -@import url('https://fonts.googleapis.com/css2?family=Lora:wght@400;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Lora:ital,wght@1,400&display=swap'); + .document-card-container { width: 365px; box-shadow: 0px 0px 80px rgba(0, 43, 85, 0.1); @@ -56,6 +57,10 @@ text-overflow: ellipsis; white-space: nowrap; width: 100%; + font-size: 18px; + font-style: italic; + line-height: 28px; + text-align: left; } &__span-icons { font-weight: 400; diff --git a/fe-piattaforma/src/components/Table/view/tableDesktop.tsx b/fe-piattaforma/src/components/Table/view/tableDesktop.tsx index 4a94c9825..5e5897cdd 100644 --- a/fe-piattaforma/src/components/Table/view/tableDesktop.tsx +++ b/fe-piattaforma/src/components/Table/view/tableDesktop.tsx @@ -5,6 +5,7 @@ import { Icon, Label, Table as TableKit, + Tooltip, UncontrolledTooltip, } from 'design-react-kit'; import clsx from 'clsx'; @@ -186,9 +187,8 @@ const TableDesktop: React.FC = (props) => { - ) : null} + ) : + + } ) : null} {((onTooltipInfo || td?.onTooltipInfo) && td?.isPresentInList) || - td?.failedCSV ? ( + td?.failedCSV ? (
= ({ clickDeleteAction: onActionClick?.[CRUDActionTypes.DELETE] ? () => onActionClick?.[CRUDActionTypes.DELETE](item) : undefined, - clickDownloadAction: onActionClick?.[CRUDActionTypes.DOWNLOAD] - ? () => onActionClick?.[CRUDActionTypes.DOWNLOAD](item) + clickDownloadAction: onActionClick?.[CRUDActionTypes.DOWNLOAD] && item.jobStatus === 'SUCCESS' + ? () => {onActionClick?.[CRUDActionTypes.DOWNLOAD](item)} : undefined, innerInfo: isEmpty(rest) ? undefined : { id, ...rest }, }; diff --git a/fe-piattaforma/src/pages/administrator/AdministrativeArea/Entities/Surveys/printSurvey/printSurvey.tsx b/fe-piattaforma/src/pages/administrator/AdministrativeArea/Entities/Surveys/printSurvey/printSurvey.tsx index 9bece7db9..fa09b63e8 100644 --- a/fe-piattaforma/src/pages/administrator/AdministrativeArea/Entities/Surveys/printSurvey/printSurvey.tsx +++ b/fe-piattaforma/src/pages/administrator/AdministrativeArea/Entities/Surveys/printSurvey/printSurvey.tsx @@ -65,7 +65,21 @@ const PrintSurvey: React.FC = () => { section: PrintSuveySectionI ) => { //18/09/2024 NASCOSTE SEZIONI FASCIA DI ETA' E GENERE DA STAMPA PER ADEGUAMENTO - if(!(['5','6'].includes(question.id as string))) + if (!(['5', '6'].includes(question.id as string))){ + + if (question.id === '9') { + const didascalia = (scrivere la Provincia per esteso); + const updatedQuestion = { + ...question, + title: ( + <> + {question.title} {didascalia} + + ), + }; + question = updatedQuestion; + } + switch (question.type) { case 'range': return ; @@ -120,6 +134,7 @@ const PrintSurvey: React.FC = () => { default: return ; } + } }; return (
diff --git a/fe-piattaforma/src/services/activityReportService.ts b/fe-piattaforma/src/services/activityReportService.ts index 1b842dced..f1243818e 100644 --- a/fe-piattaforma/src/services/activityReportService.ts +++ b/fe-piattaforma/src/services/activityReportService.ts @@ -12,6 +12,7 @@ import {compressPayload, toBase64} from '../utils/common' export function searchActivityReport( page: number, + size: number, idProgetto: number, idEnte: number ): Promise>> { @@ -26,7 +27,7 @@ export function searchActivityReport( idProgetto, idProgramma, }, - { params: { page } } + { params: { page, size } } ); } diff --git a/lib-repdgt-shared/pom.xml b/lib-repdgt-shared/pom.xml index 529abd63b..223aa89f0 100644 --- a/lib-repdgt-shared/pom.xml +++ b/lib-repdgt-shared/pom.xml @@ -5,7 +5,7 @@ it.pa.repdgt repdgt-shared - 1.0.0-test.331 + 1.0.0-test.337 jar repdgt-shared diff --git a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java index 9a2cd8f87..cd60e16f7 100644 --- a/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java +++ b/lib-repdgt-shared/src/main/java/it/pa/repdgt/shared/exception/CodiceErroreEnum.java @@ -67,7 +67,7 @@ public enum CodiceErroreEnum { ,S07("Errore impossibile eliminare il servizio.") ,S08("Errore creazione servizio. Servizio con stesso nome già esistente") ,S09("Errore servizio non esistente") - ,S10("Il servizio che vuoi creare riporta gli stessi dati di un servizio già esistente. Per creare una nuovo servizio, assicurati di differenziare almeno un’informazione, per esempio il nome o la descrizione") + ,S10("Il servizio che vuoi creare riporta gli stessi dati di un servizio già esistente per la stessa data. Per creare una nuovo servizio, assicurati di differenziare almeno un’informazione, per esempio il nome o la descrizione") ,S11("Errore creazione servizio") ,SD01("Errore creazione sede") diff --git a/ms-ente/pom.xml b/ms-ente/pom.xml index 8da210056..11ece98bb 100644 --- a/ms-ente/pom.xml +++ b/ms-ente/pom.xml @@ -14,7 +14,7 @@ it.pa.repdgt ms-ente - 1.0.0-test.331 + 1.0.0-test.337 jar diff --git a/ms-ente/src/main/java/it/pa/repdgt/ente/service/EnteSedeProgettoFacilitatoreService.java b/ms-ente/src/main/java/it/pa/repdgt/ente/service/EnteSedeProgettoFacilitatoreService.java index e55f5db31..cb7691243 100644 --- a/ms-ente/src/main/java/it/pa/repdgt/ente/service/EnteSedeProgettoFacilitatoreService.java +++ b/ms-ente/src/main/java/it/pa/repdgt/ente/service/EnteSedeProgettoFacilitatoreService.java @@ -281,15 +281,17 @@ public void terminaAssociazioneFacilitatoreOVolontario(EnteSedeProgettoFacilitat final String codiceFiscaleUtenteFacilitaore = id.getIdFacilitatore(); final UtenteEntity utenteDBFetch = this.utenteService.getUtenteByCodiceFiscale(codiceFiscaleUtenteFacilitaore); - - String idUtenteWorkdocs = utenteDBFetch.getIntegrazioneUtente().getIdUtenteWorkdocs(); - if(utenteDBFetch.getRuoli().size() == 1 && idUtenteWorkdocs != null) { - try { - new Thread(() -> { - this.workdocsService.disattivaWorkDocsUser(idUtenteWorkdocs); - }).start(); - } catch (Exception ex) { - log.error("Errore disattivazione utente workdocs ", ex); + if( utenteDBFetch.getIntegrazioneUtente() != null && utenteDBFetch.getIntegrazioneUtente().getIdUtenteWorkdocs() != null){ + // Utente non presenta relazione su integrazione_utente da eliminare + String idUtenteWorkdocs = utenteDBFetch.getIntegrazioneUtente().getIdUtenteWorkdocs(); + if(utenteDBFetch.getRuoli().size() == 1 && idUtenteWorkdocs != null) { + try { + new Thread(() -> { + this.workdocsService.disattivaWorkDocsUser(idUtenteWorkdocs); + }).start(); + } catch (Exception ex) { + log.error("Errore disattivazione utente workdocs ", ex); + } } } } diff --git a/ms-gestione-utente/pom.xml b/ms-gestione-utente/pom.xml index 6b5177d35..1d558cc24 100644 --- a/ms-gestione-utente/pom.xml +++ b/ms-gestione-utente/pom.xml @@ -14,7 +14,7 @@ it.pa.repdgt ms-utente - 1.0.0-test.331 + 1.0.0-test.337 jar diff --git a/ms-notifiche-integration/pom.xml b/ms-notifiche-integration/pom.xml index a5ae5b481..55140d742 100644 --- a/ms-notifiche-integration/pom.xml +++ b/ms-notifiche-integration/pom.xml @@ -14,7 +14,7 @@ it.pa.repdgt ms-integrazione - 1.0.0-test.331 + 1.0.0-test.337 jar diff --git a/ms-open-data/pom.xml b/ms-open-data/pom.xml index 106a526cc..77af93008 100644 --- a/ms-open-data/pom.xml +++ b/ms-open-data/pom.xml @@ -14,7 +14,7 @@ it.pa.repdgt ms-open-data - 1.0.0-test.331 + 1.0.0-test.337 jar diff --git a/ms-programma-progetto/pom.xml b/ms-programma-progetto/pom.xml index e3845cfe9..205e7cacb 100644 --- a/ms-programma-progetto/pom.xml +++ b/ms-programma-progetto/pom.xml @@ -14,7 +14,7 @@ it.pa.repdgt ms-programma-progetto - 1.0.0-test.331 + 1.0.0-test.337 jar diff --git a/ms-programma-progetto/src/main/java/it/pa/repdgt/programmaprogetto/service/EnteSedeProgettoService.java b/ms-programma-progetto/src/main/java/it/pa/repdgt/programmaprogetto/service/EnteSedeProgettoService.java index 900036daf..f7a0328ff 100644 --- a/ms-programma-progetto/src/main/java/it/pa/repdgt/programmaprogetto/service/EnteSedeProgettoService.java +++ b/ms-programma-progetto/src/main/java/it/pa/repdgt/programmaprogetto/service/EnteSedeProgettoService.java @@ -96,7 +96,7 @@ public void terminazioneAssociazioneEnteSedeProgetto(EnteSedeProgetto enteSedePr final String codFiscaleUtente = utente.getId().getIdFacilitatore(); final UtenteEntity utenteEntity = this.utenteRepository.findByCodiceFiscale(codFiscaleUtente).get(); - if(utenteEntity.getRuoli().size() == 1 && utenteEntity.getIntegrazioneUtente().getIdUtenteWorkdocs() != null) { + if(utenteEntity.getRuoli().size() == 1 && utenteEntity.getIntegrazioneUtente() != null && utenteEntity.getIntegrazioneUtente().getIdUtenteWorkdocs() != null) { try { new Thread(() -> { this.workDocsService.disattivaWorkDocsUser(utenteEntity.getIntegrazioneUtente().getIdUtenteWorkdocs()); diff --git a/ms-questionario-cittadino/pom.xml b/ms-questionario-cittadino/pom.xml index 0dd883939..a4baa9d90 100644 --- a/ms-questionario-cittadino/pom.xml +++ b/ms-questionario-cittadino/pom.xml @@ -14,7 +14,7 @@ it.pa.repdgt ms-questionario-cittadino - 1.0.0-test.331 + 1.0.0-test.337 jar diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java index 5a0f3cd6a..ed6cf867f 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ImportMassivoCSVService.java @@ -168,7 +168,7 @@ private RegistroAttivitaEntity faseInizializzazioneSalvataggioRegistroAttivita(S .jobStatus(JobStatusEnum.IN_PROGRESS) .estensioneInput(estensioneInput) .build(); - return registroAttivitaRepository.save(registroAttivita); + return registroAttivitaService.saveRegistroAttivita(registroAttivita); } @Transactional diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/RegistroAttivitaService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/RegistroAttivitaService.java index 2cf344d55..62313de08 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/RegistroAttivitaService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/RegistroAttivitaService.java @@ -65,7 +65,7 @@ private String getNomeCognomeOperatore(String operatore) { public Page getRegistroAttivita(Integer page, Integer size, SceltaProfiloParam sceltaProfiloParam) { - Sort sort = Sort.by(Sort.Direction.DESC, "dataFineInserimento"); + Sort sort = Sort.by(Sort.Direction.DESC, "dataInizioInserimento"); Pageable pageable = PageRequest.of(page, size, sort); switch (sceltaProfiloParam.getCodiceRuoloUtenteLoggato()) { case "FAC": diff --git a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java index 753882ab8..05c34aed2 100644 --- a/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java +++ b/ms-questionario-cittadino/src/main/java/it/pa/repdgt/surveymgmt/service/ServizioService.java @@ -17,6 +17,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -253,45 +254,7 @@ public ServizioEntity creaServizio( if(!isMassivo){ // controllo unicità servizio su progetto - EnteSedeProgettoFacilitatoreEntity enteSedeProgettoFacilitatore = enteSedeProgettoFacilitatoreRepository - .existsByChiave( - servizioRequest.getCfUtenteLoggato(), - servizioRequest.getIdEnteServizio(), - servizioRequest.getIdProgetto(), - servizioRequest.getIdSedeServizio()); - if (enteSedeProgettoFacilitatore == null) { - throw new ResourceNotFoundException(NoteCSV.NOTE_UTENTE_SEDE_NON_ASSOCIATI_AL_PROGETTO, - CodiceErroreEnum.C01); - } - - List listaServizi = getServizioByDatiControllo(servizioRequest, enteSedeProgettoFacilitatore.getId()); - if(CollectionUtils.isNotEmpty(listaServizi)){ - - JSONObject rootNodeNuovoServizio = new JSONObject(servizioRequest.getSezioneQuestionarioCompilatoQ3()); - for (ServizioEntity servizioRecuperato : listaServizi) { - Optional optSezioneQ3Collection = sezioneQ3Respository - .findById(servizioRecuperato.getIdTemplateCompilatoQ3()); - if (optSezioneQ3Collection.isPresent()) { - JsonNode nodeActual = objectMapper.valueToTree(optSezioneQ3Collection.get().getSezioneQ3Compilato()); - JsonNode pathJson = nodeActual.path("json"); - JSONObject jsonObjectActual = new JSONObject(pathJson.asText()); - boolean isStessoServizio = true; - if (!recuperaDescrizioneDaJson(jsonObjectActual, 6).equals(recuperaDescrizioneDaJson(rootNodeNuovoServizio, 6))) { - isStessoServizio = false; - } - if (!recuperaDescrizioneDaJson(jsonObjectActual, 5).equals(recuperaDescrizioneDaJson(rootNodeNuovoServizio, 5))) { - isStessoServizio = false; - } - if (!recuperaDescrizioneDaJson(jsonObjectActual, 4).equals(recuperaDescrizioneDaJson(rootNodeNuovoServizio, 4))) { - isStessoServizio = false; - } - if (isStessoServizio) { - final String messaggioErrore = "Il servizio che vuoi creare riporta gli stessi dati di un servizio già esistente. Per creare una nuovo servizio, assicurati di differenziare almeno un’informazione, per esempio il nome o la descrizione"; - throw new ServizioException(messaggioErrore, CodiceErroreEnum.S10); - } - } - } - } + checkUnicitaServizio(servizioRequest); } // creo SezioneQ3Mongo final SezioneQ3Collection sezioneQ3Compilato = this.creaSezioneQ3(servizioRequest); @@ -306,6 +269,48 @@ public ServizioEntity creaServizio( return servizioCreato; } + private void checkUnicitaServizio(final ServizioRequest servizioRequest) throws JSONException { + EnteSedeProgettoFacilitatoreEntity enteSedeProgettoFacilitatore = enteSedeProgettoFacilitatoreRepository + .existsByChiave( + servizioRequest.getCfUtenteLoggato(), + servizioRequest.getIdEnteServizio(), + servizioRequest.getIdProgetto(), + servizioRequest.getIdSedeServizio()); + if (enteSedeProgettoFacilitatore == null) { + throw new ResourceNotFoundException(NoteCSV.NOTE_UTENTE_SEDE_NON_ASSOCIATI_AL_PROGETTO, + CodiceErroreEnum.C01); + } + + List listaServizi = getServizioByDatiControllo(servizioRequest, enteSedeProgettoFacilitatore.getId()); + if(CollectionUtils.isNotEmpty(listaServizi)){ + + JSONObject rootNodeNuovoServizio = new JSONObject(servizioRequest.getSezioneQuestionarioCompilatoQ3()); + for (ServizioEntity servizioRecuperato : listaServizi) { + Optional optSezioneQ3Collection = sezioneQ3Respository + .findById(servizioRecuperato.getIdTemplateCompilatoQ3()); + if (optSezioneQ3Collection.isPresent()) { + JsonNode nodeActual = objectMapper.valueToTree(optSezioneQ3Collection.get().getSezioneQ3Compilato()); + JsonNode pathJson = nodeActual.path("json"); + JSONObject jsonObjectActual = new JSONObject(pathJson.asText()); + boolean isStessoServizio = true; + if (!recuperaDescrizioneDaJson(jsonObjectActual, 6).equals(recuperaDescrizioneDaJson(rootNodeNuovoServizio, 6))) { + isStessoServizio = false; + } + if (!recuperaDescrizioneDaJson(jsonObjectActual, 5).equals(recuperaDescrizioneDaJson(rootNodeNuovoServizio, 5))) { + isStessoServizio = false; + } + if (!recuperaDescrizioneDaJson(jsonObjectActual, 4).equals(recuperaDescrizioneDaJson(rootNodeNuovoServizio, 4))) { + isStessoServizio = false; + } + if (isStessoServizio) { + final String messaggioErrore = "Il servizio che vuoi creare riporta gli stessi dati di un servizio già esistente. Per creare una nuovo servizio, assicurati di differenziare almeno un’informazione, per esempio il nome o la descrizione"; + throw new ServizioException(messaggioErrore, CodiceErroreEnum.S10); + } + } + } + } + } + private List getServizioByDatiControllo(ServizioRequest servizioRequest, EnteSedeProgettoFacilitatoreKey enteSedeProgettoFacilitatoreKey) { Optional> servizioOpt = servizioSqlRepository @@ -370,6 +375,8 @@ public void aggiornaServizio( throw new ServizioException(messaggioErrore, CodiceErroreEnum.A06); } + checkUnicitaServizio(servizioDaAggiornareRequest); + // Aggiorno servizio su MySql final ServizioEntity servizioAggiornato = this.servizioSQLService.aggiornaServizio(idServizioDaAggiornare, servizioDaAggiornareRequest);