(
+ initialCaparra,
+ );
const handleSave = async () => {
await updateServizioAnnunci({
caparra_causale: caparra?.caparra_causale || null,
@@ -415,9 +430,10 @@ const Caparra = () => {
Inserisci la stringa dal gestionale e elabora
)}
-
+
+ {JSON.stringify(caparra) !== JSON.stringify(initialCaparra) ? (
+
+
+ Salva modifiche
+
+ ) : (
+ Object.values(initialCaparra).every((v) => v !== null) && (
+
+
+ Dati salvati
+
+ )
+ )}
);
diff --git a/apps/infoalloggi/src/components/servizio/admin_contratto.tsx b/apps/infoalloggi/src/components/servizio/admin_contratto.tsx
index 1108051..a496f41 100644
--- a/apps/infoalloggi/src/components/servizio/admin_contratto.tsx
+++ b/apps/infoalloggi/src/components/servizio/admin_contratto.tsx
@@ -1,4 +1,11 @@
-import { CircleCheck, ClipboardPaste, Pen, Trash2, Wrench } from "lucide-react";
+import {
+ CircleAlert,
+ CircleCheck,
+ ClipboardPaste,
+ Pen,
+ Trash2,
+ Wrench,
+} from "lucide-react";
import { useState } from "react";
import toast from "react-hot-toast";
import z from "zod";
@@ -77,6 +84,7 @@ export const AdminContratto = () => {
const ContrattoSection = () => {
const { userId } = useServizio();
const { data, updateServizioAnnunci } = useServizioAnnuncio();
+ const initialDoc = data.doc_contratto_ref;
const [selectedDoc, setSelectedDoc] = useState(
data.doc_contratto_ref,
);
@@ -112,6 +120,7 @@ const ContrattoSection = () => {
if (files === undefined) {
return Errore nel caricamento dei documenti
;
}
+
return (
@@ -146,11 +155,20 @@ const ContrattoSection = () => {
setSelectedDoc(f.id);
}}
/>
-
+ {
+ if (storageIds.length === 1 && storageIds[0]) {
+ setSelectedDoc(storageIds[0]);
+ }
+ }}
+ isAdmin
+ userId={userId}
+ />
-
+
+ {selectedDoc !== initialDoc ? (
+
+
+ Salva modifiche
+
+ ) : (
+ initialDoc &&
+ selectedDoc === initialDoc && (
+
+
+ Dati salvati
+
+ )
+ )}
);
@@ -217,8 +249,7 @@ const parseContrattoImport = (ingest: string) => {
const ContrattoImport = () => {
const { data, updateServizioAnnunci } = useServizioAnnuncio();
-
- const [contratto, setContratto] = useState({
+ const initialContratto = {
contratto_decorrenza: data.contratto_decorrenza
? new Date(data.contratto_decorrenza)
: null,
@@ -227,7 +258,11 @@ const ContrattoImport = () => {
: null,
contratto_tipo: data.contratto_tipo as ContrattoImportObj["contratto_tipo"],
gestionale_id: data.gestionale_id,
- });
+ };
+
+ const [contratto, setContratto] = useState(
+ initialContratto,
+ );
const handleSave = async () => {
await updateServizioAnnunci({
contratto_decorrenza: contratto?.contratto_decorrenza || null,
@@ -404,9 +439,12 @@ const ContrattoImport = () => {
Inserisci la stringa dal gestionale e elabora
)}
-
+
+ {JSON.stringify(contratto) !== JSON.stringify(initialContratto) ? (
+
+
+ Salva modifiche
+
+ ) : (
+ Object.values(initialContratto).every((v) => v !== null) && (
+
+
+ Dati salvati
+
+ )
+ )}
);
@@ -422,6 +473,7 @@ const ContrattoImport = () => {
const RicevutaSection = () => {
const { userId } = useServizio();
const { data, updateServizioAnnunci } = useServizioAnnuncio();
+ const initialDoc = data.doc_registrazione_ref;
const [selectedDoc, setSelectedDoc] = useState(
data.doc_registrazione_ref,
);
@@ -457,6 +509,7 @@ const RicevutaSection = () => {
if (files === undefined) {
return Errore nel caricamento dei documenti
;
}
+
return (
@@ -491,11 +544,20 @@ const RicevutaSection = () => {
setSelectedDoc(f.id);
}}
/>
-
+ {
+ if (storageIds.length === 1 && storageIds[0]) {
+ setSelectedDoc(storageIds[0]);
+ }
+ }}
+ isAdmin
+ userId={userId}
+ />
-
+
+ {selectedDoc !== initialDoc ? (
+
+
+ Salva modifiche
+
+ ) : (
+ initialDoc &&
+ selectedDoc === initialDoc && (
+
+
+ Dati salvati
+
+ )
+ )}
);