96 lines
3 KiB
TypeScript
96 lines
3 KiB
TypeScript
import z from "zod";
|
|
import { createTRPCRouter, protectedApiProcedure } from "~/server/api/trpc";
|
|
import { db } from "~/server/db";
|
|
|
|
type ClienteData = {
|
|
cognome?: string | undefined;
|
|
nome?: string | undefined;
|
|
cf?: string | undefined;
|
|
telefono?: string | undefined;
|
|
email?: string | undefined;
|
|
data_nascita?: string | undefined;
|
|
luogo_nascita?: string | undefined;
|
|
naz_residenza?: string | undefined;
|
|
provincia_residenza?: string | undefined;
|
|
cap_residenza?: string | undefined;
|
|
comune_residenza?: string | undefined;
|
|
indirizzo_residenza?: string | undefined;
|
|
civico_residenza?: string | undefined;
|
|
};
|
|
|
|
const clienteDataSchema = z.object({
|
|
cap_residenza: z.string().optional(),
|
|
cf: z.string().optional(),
|
|
civico_residenza: z.string().optional(),
|
|
cognome: z.string().optional(),
|
|
comune_residenza: z.string().optional(),
|
|
data_nascita: z.string().optional(),
|
|
email: z.string().optional(),
|
|
indirizzo_residenza: z.string().optional(),
|
|
luogo_nascita: z.string().optional(),
|
|
naz_residenza: z.string().optional(),
|
|
nome: z.string().optional(),
|
|
provincia_residenza: z.string().optional(),
|
|
telefono: z.string().optional(),
|
|
});
|
|
|
|
export const syncRouter = createTRPCRouter({
|
|
syncGet: protectedApiProcedure
|
|
.input(z.object({ cf: z.string() }))
|
|
.query(async ({ input }) => {
|
|
const user = await db
|
|
.selectFrom("users_anagrafica")
|
|
.select([
|
|
"users_anagrafica.codice_fiscale",
|
|
"users_anagrafica.userid",
|
|
"users_anagrafica.data_nascita",
|
|
"users_anagrafica.luogo_nascita",
|
|
"users_anagrafica.nazione_residenza",
|
|
"users_anagrafica.provincia_residenza",
|
|
"users_anagrafica.cap_residenza",
|
|
"users_anagrafica.comune_residenza",
|
|
"users_anagrafica.via_residenza",
|
|
"users_anagrafica.civico_residenza",
|
|
])
|
|
.innerJoin("users", "users.id", "users_anagrafica.userid")
|
|
.select([
|
|
"users.nome",
|
|
"users.cognome",
|
|
"users.email",
|
|
"users.telefono",
|
|
])
|
|
.where("users_anagrafica.codice_fiscale", "=", input.cf)
|
|
.executeTakeFirst();
|
|
|
|
const result: ClienteData = {
|
|
cognome: user?.cognome,
|
|
nome: user?.nome,
|
|
cf: user?.codice_fiscale || undefined,
|
|
telefono: user?.telefono,
|
|
email: user?.email,
|
|
data_nascita: user?.data_nascita?.toLocaleDateString("it-IT", {
|
|
year: "numeric",
|
|
month: "2-digit",
|
|
day: "2-digit",
|
|
}),
|
|
luogo_nascita: user?.luogo_nascita || undefined,
|
|
naz_residenza: user?.nazione_residenza || undefined,
|
|
provincia_residenza: user?.provincia_residenza || undefined,
|
|
cap_residenza: user?.cap_residenza || undefined,
|
|
comune_residenza: user?.comune_residenza || undefined,
|
|
indirizzo_residenza: user?.via_residenza || undefined,
|
|
civico_residenza: user?.civico_residenza || undefined,
|
|
};
|
|
|
|
return result;
|
|
}),
|
|
|
|
syncPost: protectedApiProcedure
|
|
.input(z.object({ data: clienteDataSchema }))
|
|
.mutation(async ({ input }) => {
|
|
console.log("input", input);
|
|
// const parsed = clienteDataSchema.safeParse(JSON.parse(input.data));
|
|
// console.log("parsed", parsed);
|
|
return { message: "Data received" };
|
|
}),
|
|
});
|