diff --git a/apps/infoalloggi/src/components/servizio/servizio_actions.tsx b/apps/infoalloggi/src/components/servizio/servizio_actions.tsx
index 70e1021..84e03f4 100644
--- a/apps/infoalloggi/src/components/servizio/servizio_actions.tsx
+++ b/apps/infoalloggi/src/components/servizio/servizio_actions.tsx
@@ -39,9 +39,11 @@ import {
import { useState } from "react";
import { useServizio } from "~/providers/ServizioProvider";
+import type { ServizioServizioId } from "~/schemas/public/Servizio";
+import type { UsersId } from "~/schemas/public/Users";
export const ServizioActions = () => {
- const { servizio, isAdmin } = useServizio();
+ const { servizio, isAdmin, userId } = useServizio();
const canUserEdit =
servizio.isOkAcconto &&
@@ -59,13 +61,19 @@ export const ServizioActions = () => {
>
)}
- {isAdmin && }
+ {isAdmin && (
+
+ )}
);
};
-const AddAnnuncio = () => {
- const { servizioId, userId } = useServizio();
-
+export const AddAnnuncio = ({
+ servizioId,
+ userId,
+}: {
+ servizioId: ServizioServizioId;
+ userId: UsersId;
+}) => {
const { data: codici, isLoading: loading } =
api.servizio.getAnnunciAvailableToAdd.useQuery({
servizioId,
@@ -87,6 +95,7 @@ const AddAnnuncio = () => {
await utils.servizio.getCompatibileAnnunci.invalidate({
servizioId,
});
+ await utils.servizio.getUserServizi.invalidate({ userId });
toast.success("Annuncio aggiunto");
setOpenModal(false);
setSelectedAnnunci([]);
@@ -166,6 +175,7 @@ const AddAnnuncio = () => {
);
};
+
const InterruzioneServizio = () => {
const { servizio, userId } = useServizio();
diff --git a/apps/infoalloggi/src/components/tables/servizio-table.tsx b/apps/infoalloggi/src/components/tables/servizio-table.tsx
index bcc45b7..8760992 100644
--- a/apps/infoalloggi/src/components/tables/servizio-table.tsx
+++ b/apps/infoalloggi/src/components/tables/servizio-table.tsx
@@ -1,5 +1,5 @@
import toast from "react-hot-toast";
-import type { Servizio } from "~/schemas/public/Servizio";
+import type { Servizio, ServizioServizioId } from "~/schemas/public/Servizio";
import type { UsersId } from "~/schemas/public/Users";
import { api } from "~/utils/api";
import { LoadingPage } from "~/components/loading";
@@ -37,6 +37,13 @@ import { Button } from "~/components/ui/button";
import { Confirm } from "~/components/confirm";
import Link from "next/link";
import { env } from "~/env.mjs";
+import type { AnnunciId } from "~/schemas/public/Annunci";
+import {
+ Tooltip,
+ TooltipContent,
+ TooltipTrigger,
+} from "~/components/ui/tooltip";
+import { AddAnnuncio } from "~/components/servizio/servizio_actions";
export const TabServizio = ({
userId,
@@ -94,6 +101,7 @@ export const TabServizio = ({
Inviato
Status
+
@@ -105,7 +113,7 @@ export const TabServizio = ({
servizio.decorrenza !== null;
return (
-
+
{servizio.servizio_id}
{servizio.tipologia}
@@ -132,6 +140,13 @@ export const TabServizio = ({
Inattivo
)}
+
+
+
@@ -294,3 +309,35 @@ export const TabServizio = ({
);
};
+
+const AnnunciSection = ({
+ selectedAnnunci,
+ servizioId,
+ userId,
+}: {
+ selectedAnnunci: { codice: string; annunci_id: AnnunciId }[];
+ servizioId: ServizioServizioId;
+ userId: UsersId;
+}) => {
+ return (
+
+
+
+ {selectedAnnunci?.length}
+
+
+ {selectedAnnunci?.length > 0 ? (
+
+ {selectedAnnunci?.map((annuncio) => (
+ - {annuncio.codice}
+ ))}
+
+ ) : (
+ Nessun annuncio associato
+ )}
+
+
+
+
+ );
+};
diff --git a/apps/infoalloggi/src/server/controllers/servizio.controller.ts b/apps/infoalloggi/src/server/controllers/servizio.controller.ts
index a900872..3642b77 100644
--- a/apps/infoalloggi/src/server/controllers/servizio.controller.ts
+++ b/apps/infoalloggi/src/server/controllers/servizio.controller.ts
@@ -113,7 +113,21 @@ export const getServiziByUserId = async (userId: UsersId) => {
try {
return await db
.selectFrom("servizio")
- .selectAll()
+ .selectAll("servizio")
+ .select((eb) => [
+ jsonArrayFrom(
+ eb
+ .selectFrom("servizio_annunci")
+ .select(["servizio_annunci.annunci_id"])
+ .innerJoin("annunci", "annunci.id", "servizio_annunci.annunci_id")
+ .select("annunci.codice")
+ .whereRef(
+ "servizio_annunci.servizio_id",
+ "=",
+ "servizio.servizio_id",
+ ),
+ ).as("annunci"),
+ ])
.where("user_id", "=", userId)
.orderBy("created_at", "asc")
.execute();