diff --git a/apps/backend/queries/annunci.go b/apps/backend/queries/annunci.go
index 878bb22..69f9b8c 100644
--- a/apps/backend/queries/annunci.go
+++ b/apps/backend/queries/annunci.go
@@ -88,7 +88,7 @@ func AnnunciInsert(annunci typesdefs.AnnunciParsed, resetAllBeforeUpdate bool) e
disponibile_da = $47,
permanenza = $48,
persone = $49,
- updated_at = NOW()
+ media_updated_at = NOW()
WHERE codice = $46
`, annuncio.Locatore, annuncio.Numero, annuncio.Idlocatore,
annuncio.Email, annuncio.Creato_il, annuncio.Modificato_il,
@@ -155,7 +155,7 @@ func AnnunciInsert(annunci typesdefs.AnnunciParsed, resetAllBeforeUpdate bool) e
disponibile_da,
permanenza,
persone,
- updated_at
+ media_updated_at
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, NOW())
`, annuncio.Locatore, annuncio.Numero, annuncio.Idlocatore,
diff --git a/apps/infoalloggi/src/components/servizio/admin_conferma.tsx b/apps/infoalloggi/src/components/servizio/admin_conferma.tsx
new file mode 100644
index 0000000..372a251
--- /dev/null
+++ b/apps/infoalloggi/src/components/servizio/admin_conferma.tsx
@@ -0,0 +1,540 @@
+import { format } from "date-fns";
+import { CircleCheck, ClipboardPaste, Pen, Trash2, Wrench } from "lucide-react";
+import Link from "next/link";
+import { useState } from "react";
+import toast from "react-hot-toast";
+import z from "zod";
+import { formatCurrency } from "~/lib/utils";
+import { useTranslation } from "~/providers/I18nProvider";
+import { useServizio, useServizioAnnuncio } from "~/providers/ServizioProvider";
+import TipologiaPosizioneEnum from "~/schemas/public/TipologiaPosizioneEnum";
+import type { UsersStorageUserStorageId } from "~/schemas/public/UsersStorage";
+import { api } from "~/utils/api";
+import {
+ Credenza,
+ CredenzaBody,
+ CredenzaClose,
+ CredenzaContent,
+ CredenzaDescription,
+ CredenzaFooter,
+ CredenzaHeader,
+ CredenzaTitle,
+ CredenzaTrigger,
+} from "../custom_ui/credenza";
+import { LoadingPage } from "../loading";
+import { Button } from "../ui/button";
+import {
+ Card,
+ CardContent,
+ CardDescription,
+ CardFooter,
+ CardHeader,
+ CardTitle,
+} from "../ui/card";
+
+import { Label } from "../ui/label";
+import { Switch } from "../ui/switch";
+import { UploadModal } from "../upload_modal";
+import { DocCombo, DocInfo } from "./shared";
+
+export const AdminLavoraConferma = () => {
+ const { servizio } = useServizio();
+ const { data } = useServizioAnnuncio();
+
+ return (
+
Errore nel caricamento dei documenti
; + } + return ( ++ Intestazione: + {caparra.caparra_intestazione}{" "} + +
++ IBAN: + {caparra.caparra_iban}{" "} + +
++ Importo: + {caparra.caparra_importo}{" "} + +
++ Causale: + {caparra.caparra_causale}{" "} + +
+Inserisci la stringa dal gestionale e elabora
+ )} ++ Motivazione specificata: + {servizio.motivazione_transitorio ? ( + + { + t.preferenze.motivazioni_mappings.find( + (m) => m.id === servizio.motivazione_transitorio, + )?.title + } + + ) : ( + Non inserita + )} +
++ + Data scadenza motivazione inserita:{" "} + + {servizio.scadenza_motivazione_transitoria ? ( + format(servizio.scadenza_motivazione_transitoria, "dd/MM/yyyy") + ) : ( + Non inserita + )} +
+
+ Documento caricato:
+ {servizio.doc_motivazione_ref ? (
+
Tipologia servizio: {servizio.tipologia}
+ {(() => { + if (servizio.tipologia === TipologiaPosizioneEnum.Transitorio) { + return ( + <> ++ Permanenza specificata dall'utente:{" "} + {servizio.permanenza + ? t.preferenze.permanenza[servizio.permanenza] + : "non inserita"} +
++ Permanenza in descrizione: {(() => { + const match = data.desc_it?.match(/Permanenza:.*$/m); + return match + ? `"${match[0]}"` + : "errore: testo non trovato in descrizione"; + })()} +
+ > + ); + } + return ( + <> +Budget (da preferenze): {formatCurrency(servizio.budget)}
++ Canone Mensile (da descrizione):{" "} + {formatCurrency(data.prezzo / 100)} +
+ > + ); + })()} +Errore nel caricamento dei documenti
; + } + return ( ++ ID Gestionale: + {contratto.gestionale_id}{" "} + +
++ Decorrenza: + {contratto.contratto_decorrenza && + new Date(contratto.contratto_decorrenza).toLocaleDateString( + "it-IT", + )}{" "} + +
++ Scadenza: + {contratto.contratto_scadenza && + new Date(contratto.contratto_scadenza).toLocaleDateString( + "it-IT", + )}{" "} + +
++ Tipo di contratto: + {contratto.contratto_tipo}{" "} + +
+Inserisci la stringa dal gestionale e elabora
+ )} +Errore nel caricamento dei documenti
; + } + return ( +- ID Gestionale: - {contratto.gestionale_id}{" "} - -
-- Decorrenza: - {contratto.contratto_decorrenza && - new Date(contratto.contratto_decorrenza).toLocaleDateString( - "it-IT", - )}{" "} - -
-- Scadenza: - {contratto.contratto_scadenza && - new Date(contratto.contratto_scadenza).toLocaleDateString( - "it-IT", - )}{" "} - -
-- Tipo di contratto: - {contratto.contratto_tipo}{" "} - -
-Inserisci la stringa dal gestionale e elabora
- )} -Errore nel caricamento dei documenti
; - } - return ( -Errore nel caricamento dei documenti
; - } - return ( -Errore nel caricamento dei documenti
; - } - return ( -- Intestazione: - {caparra.caparra_intestazione}{" "} - -
-- IBAN: - {caparra.caparra_iban}{" "} - -
-- Importo: - {caparra.caparra_importo}{" "} - -
-- Causale: - {caparra.caparra_causale}{" "} - -
-Inserisci la stringa dal gestionale e elabora
- )} -Tipologia servizio: {servizio.tipologia}
- {(() => { - if (servizio.tipologia === TipologiaPosizioneEnum.Transitorio) { - return ( - <> -- Permanenza (da preferenze):{" "} - {servizio.permanenza - ? t.preferenze.permanenza[servizio.permanenza] - : "non inserita"} -
-- Permanenza (da descrizione): " - {(() => { - const match = data.desc_it?.match(/Permanenza:.*$/m); - return match ? match[0] : ""; - })()} - " -
- > - ); - } - return ( - <> -Budget (da preferenze): {formatCurrency(servizio.budget)}
-- Canone Mensile (da descrizione):{" "} - {formatCurrency(data.prezzo / 100)} -
- > - ); - })()} -{t.richieste.conferma_txt}
++ Devi ancora caricare un tuo documento legato alla permanenza e + motivazione di transitorietà +
+ ++ I tuoi dati saranno conservati solamente per la durata del servizio, + in conformità con la nostra{" "} + + Informativa sulla Privacy + +
++ Richiesta di conferma inviata il:{" "} + {data.user_confirmed_at && + new Date(data.user_confirmed_at).toLocaleString("it", { + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + month: "2-digit", + year: "numeric", + })} +
++ La conferma è ancora in lavorazione. Stiamo verificando con i + proprietari le condizioni e dettagli della conferma per riferirteli. + Attendi una comunicazione. +
+Il documento non è più disponibile
+Se hai bisogno di una copia, contattaci via email o chat.
+Il documento non è più disponibile
+Se hai bisogno di una copia, contattaci via email o chat.
+Il documento non è più disponibile
-- Se hai bisogno di una copia, contattaci via email o - chat. -
-Il documento non è più disponibile
-- Se hai bisogno di una copia, contattaci via email o - chat. -
-{t.richieste.conferma_txt}
-- Richiesta di conferma inviata il:{" "} - {data.user_confirmed_at && - new Date(data.user_confirmed_at).toLocaleString("it", { - day: "2-digit", - hour: "2-digit", - minute: "2-digit", - month: "2-digit", - year: "numeric", - })} -
-- La conferma è ancora in lavorazione. Stiamo verificando con i - proprietari le condizioni e dettagli della conferma per riferirteli. - Attendi una comunicazione. -
-