Merge branch <prisma> to <main> #6
11 changed files with 44 additions and 32 deletions
2
prisma/migrations/20251120094202_009/migration.sql
Normal file
2
prisma/migrations/20251120094202_009/migration.sql
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
-- AlterTable
|
||||
ALTER TABLE "Cliente" ALTER COLUMN "sede_url" SET DATA TYPE TEXT;
|
||||
|
|
@ -42,7 +42,7 @@ model Cliente {
|
|||
partita_iva String @db.VarChar(255)
|
||||
telefono String @db.VarChar(255)
|
||||
sede String @db.VarChar(255)
|
||||
sede_url String @db.VarChar(255)
|
||||
sede_url String
|
||||
contratto String @db.VarChar(255)
|
||||
lat Float
|
||||
lon Float
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import { PrismaClient } from "@/generated/prisma";
|
||||
import { Modello, PrismaClient } from "@/generated/prisma";
|
||||
|
||||
export async function GET(request: Request) {
|
||||
const prisma = new PrismaClient();
|
||||
|
|
@ -16,9 +16,24 @@ export async function GET(request: Request) {
|
|||
return Response.json({ clients });
|
||||
}
|
||||
|
||||
function extractLatLonFromGmapsUrl(url: string) {
|
||||
// Usa una regex per cercare la latitudine e la longitudine nell'URL
|
||||
const regex = /@(-?\d+\.\d+),(-?\d+\.\d+)/;
|
||||
const match = url.match(regex);
|
||||
|
||||
if (match) {
|
||||
const lat = parseFloat(match[1]);
|
||||
const lon = parseFloat(match[2]);
|
||||
return [lat, lon]; // Restituisce un array con latitudine e longitudine
|
||||
} else {
|
||||
return [0, 0]; // Se non trova latitudine e longitudine
|
||||
}
|
||||
}
|
||||
|
||||
export async function POST(request: Request) {
|
||||
const prisma = new PrismaClient();
|
||||
const data = await request.json();
|
||||
const [lat, lon] = extractLatLonFromGmapsUrl(data.sede_url);
|
||||
|
||||
await prisma.cliente.create({
|
||||
data: {
|
||||
|
|
@ -29,8 +44,12 @@ export async function POST(request: Request) {
|
|||
sede: data.sede,
|
||||
sede_url: data.sede_url,
|
||||
telefono: data.telefono,
|
||||
registratori: {
|
||||
lat: lat,
|
||||
lon: lon,
|
||||
/*registratori: {
|
||||
create: {
|
||||
id: "80E1758414",
|
||||
modello: Modello.FORM100,
|
||||
interventi: {
|
||||
create: {
|
||||
data: new Date("2025-10-30"),
|
||||
|
|
@ -39,7 +58,7 @@ export async function POST(request: Request) {
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},*/
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ export default function Page() {
|
|||
async function getClienti() {
|
||||
const req = await fetch(`/api/clienti`);
|
||||
const data = await req.json();
|
||||
console.log(data.clients);
|
||||
setClienti(data.clients);
|
||||
}
|
||||
|
||||
|
|
@ -26,7 +25,10 @@ export default function Page() {
|
|||
|
||||
return (
|
||||
<div id="map" className="w-full h-full border rounded-md m-0 p-0">
|
||||
<MapWithNoSSR highlight={client} clienti={clienti} />
|
||||
<MapWithNoSSR
|
||||
highlight={clienti?.find((cliente) => cliente.id == +(client || -1))}
|
||||
clienti={clienti}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -155,10 +155,6 @@ export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
|
|||
setClientPathname(pathname);
|
||||
}, [pathname]);
|
||||
|
||||
useEffect(() => {
|
||||
console.log();
|
||||
}, [clientPathname]);
|
||||
|
||||
return (
|
||||
<Sidebar
|
||||
collapsible="icon"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ const Map = ({
|
|||
highlight,
|
||||
clienti,
|
||||
}: {
|
||||
highlight?: string;
|
||||
highlight?: Cliente;
|
||||
clienti: Array<Cliente>;
|
||||
}) => {
|
||||
const positions = [
|
||||
|
|
@ -55,7 +55,7 @@ const Map = ({
|
|||
<MapContainer
|
||||
center={
|
||||
highlight
|
||||
? positions.find((client) => client.name == highlight)?.position
|
||||
? [highlight.lat, highlight.lon]
|
||||
: [45.54157745559809, 10.211896906975962]
|
||||
}
|
||||
zoom={13}
|
||||
|
|
@ -74,6 +74,7 @@ const Map = ({
|
|||
draggable={false}
|
||||
animate={false}
|
||||
icon={customMarker}
|
||||
key={client.id}
|
||||
>
|
||||
<Popup className="">
|
||||
<div className="flex flex-row gap-5">
|
||||
|
|
@ -108,9 +109,7 @@ const Map = ({
|
|||
)
|
||||
) : (
|
||||
<Marker
|
||||
position={
|
||||
positions.find((client) => client.name == highlight)?.position
|
||||
}
|
||||
position={[highlight.lat, highlight.lon]}
|
||||
draggable={false}
|
||||
animate={false}
|
||||
icon={customMarker}
|
||||
|
|
@ -119,7 +118,7 @@ const Map = ({
|
|||
<div className="flex flex-row gap-5">
|
||||
<div>
|
||||
<span className="block text-sm font-bold">
|
||||
{positions.find((client) => client.name == highlight)?.name}
|
||||
{highlight.ragione_sociale}
|
||||
</span>
|
||||
<div className="flex gap-2">
|
||||
<span className="text-xs font-semibold">P.IVA</span>
|
||||
|
|
@ -129,13 +128,7 @@ const Map = ({
|
|||
|
||||
<Tooltip>
|
||||
<TooltipTrigger asChild>
|
||||
<a
|
||||
href={
|
||||
positions.find((client) => client.name == highlight)
|
||||
?.sede_url
|
||||
}
|
||||
target="blank"
|
||||
>
|
||||
<a href={highlight.sede_url} target="blank">
|
||||
<Button variant="outline">
|
||||
<MapIcon className="size-4" />
|
||||
</Button>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "prisma-client-58455549b989c60e3bedecbaad5fb747da20ec4980d09c51c40211ff854da52b",
|
||||
"name": "prisma-client-5f7d234f39789de56f24e3f97fcb730daf5c78fb0ef54bab42a661559a87fb78",
|
||||
"main": "index.js",
|
||||
"types": "index.d.ts",
|
||||
"browser": "default.js",
|
||||
|
|
|
|||
BIN
src/generated/prisma/query_engine-windows.dll.node.tmp396
Normal file
BIN
src/generated/prisma/query_engine-windows.dll.node.tmp396
Normal file
Binary file not shown.
|
|
@ -195,8 +195,8 @@ const config = {
|
|||
}
|
||||
}
|
||||
},
|
||||
"inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nenum Modello {\n FORM100\n FORM200\n FORM200PLUS\n FORM500\n}\n\nmodel Intervento {\n id Int @id @default(autoincrement())\n id_registratore String\n data DateTime @db.Date\n lavoro String @db.Text\n fattura Boolean @db.Boolean\n registratore Registratore @relation(fields: [id_registratore], references: [id])\n}\n\nmodel Registratore {\n id String @id\n id_cliente Int\n modello Modello?\n data_acquisto DateTime? @db.Date\n ultima_verifica DateTime? @db.Date\n prossima_verifica DateTime? @db.Date\n cliente Cliente @relation(fields: [id_cliente], references: [id])\n interventi Intervento[]\n}\n\nmodel Cliente {\n id Int @id @default(autoincrement())\n ragione_sociale String @unique @db.VarChar(255)\n email String @db.VarChar(255)\n partita_iva String @db.VarChar(255)\n telefono String @db.VarChar(255)\n sede String @db.VarChar(255)\n sede_url String @db.VarChar(255)\n contratto String @db.VarChar(255)\n lat Float\n lon Float\n registratori Registratore[]\n}\n",
|
||||
"inlineSchemaHash": "3424ce1a172605bbf2b32e4c6ada582172d780cc98a6e12f826a26c0cc5b9555",
|
||||
"inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"DATABASE_URL\")\n}\n\nenum Modello {\n FORM100\n FORM200\n FORM200PLUS\n FORM500\n}\n\nmodel Intervento {\n id Int @id @default(autoincrement())\n id_registratore String\n data DateTime @db.Date\n lavoro String @db.Text\n fattura Boolean @db.Boolean\n registratore Registratore @relation(fields: [id_registratore], references: [id])\n}\n\nmodel Registratore {\n id String @id\n id_cliente Int\n modello Modello?\n data_acquisto DateTime? @db.Date\n ultima_verifica DateTime? @db.Date\n prossima_verifica DateTime? @db.Date\n cliente Cliente @relation(fields: [id_cliente], references: [id])\n interventi Intervento[]\n}\n\nmodel Cliente {\n id Int @id @default(autoincrement())\n ragione_sociale String @unique @db.VarChar(255)\n email String @db.VarChar(255)\n partita_iva String @db.VarChar(255)\n telefono String @db.VarChar(255)\n sede String @db.VarChar(255)\n sede_url String\n contratto String @db.VarChar(255)\n lat Float\n lon Float\n registratori Registratore[]\n}\n",
|
||||
"inlineSchemaHash": "9bd9d1485d1021de6ddd08a2040ad878357151b96b361e965ef2ca00c0bca296",
|
||||
"copyEngine": true
|
||||
}
|
||||
config.dirname = '/'
|
||||
|
|
|
|||
Loading…
Reference in a new issue