Skip to content

Commit

Permalink
fix(contribute_productions): update schemas
Browse files Browse the repository at this point in the history
  • Loading branch information
Mihoub2 committed Oct 8, 2024
1 parent dcbf3d6 commit 03c66cc
Show file tree
Hide file tree
Showing 10 changed files with 92 additions and 87 deletions.
67 changes: 7 additions & 60 deletions client/src/layout/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,19 +67,6 @@ const Header: React.FC = () => {

const handleCloseModal = () => setShowModal(false);

const countNewContributions = (data, appName) => {
if (!data || !data.data) return 0;

const filterByAppName = appName
? (contribution) => contribution.fromApplication === appName
: () => true;

return data.data.filter(
(contribution) =>
filterByAppName(contribution) && contribution.status === "new"
).length;
};

return (
<>
<HeaderWrapper>
Expand Down Expand Up @@ -123,22 +110,14 @@ const Header: React.FC = () => {
current={pathname.split("/").includes("scanr")}
title={"scanR"}
>
{urls.map(({ href, name }, index) => {
const { data, isLoading, isError } = contributionsData[index];
const appName = href === "/scanr-contact" ? "scanr" : null;

{urls.map(({ href, name }) => {
return (
<Link
key={href}
current={pathname.startsWith("/scanr")}
href={href}
>
{name}{" "}
{isLoading
? "(Chargement...)"
: !isError && data
? `(${countNewContributions(data, appName)})`
: ""}
{name}
</Link>
);
})}
Expand All @@ -147,35 +126,17 @@ const Header: React.FC = () => {
current={pathname.startsWith("/paysage")}
href="/paysage-contact"
>
Paysage{" "}
{!contributionsData[1].isLoading &&
countNewContributions(contributionsData[1].data, "paysage") > 0
? `(${countNewContributions(
contributionsData[1].data,
"paysage"
)})`
: ""}
Paysage
</Link>
<Link
current={pathname.startsWith("/curiexplore")}
href="/curiexplore-contact"
>
CurieXplore{" "}
{!contributionsData[1].isLoading &&
countNewContributions(contributionsData[1].data, "curiexplore") > 0
? `(${countNewContributions(
contributionsData[1].data,
"curiexplore"
)})`
: ""}
CurieXplore
</Link>
<NavItem current={pathname.split("/").includes("bso")} title={"BSO"}>
<Link current={pathname.startsWith("/bso")} href="/bso-contact">
Formulaire de contact{" "}
{!contributionsData[1].isLoading &&
countNewContributions(contributionsData[1].data, "bso") > 0
? `(${countNewContributions(contributionsData[1].data, "bso")})`
: ""}
Formulaire de contact
</Link>
<Link current={pathname.startsWith("/bso")} href="/bso-local">
Demandes de BSO local
Expand All @@ -185,27 +146,13 @@ const Header: React.FC = () => {
current={pathname.startsWith("/datasupr")}
href="/datasupr-contact"
>
datasupR{" "}
{!contributionsData[1].isLoading &&
countNewContributions(contributionsData[1].data, "datasupr") > 0
? `(${countNewContributions(
contributionsData[1].data,
"datasupr"
)})`
: ""}
datasupR
</Link>
<Link
current={pathname.startsWith("/works-magnet")}
href="/works-magnet-contact"
>
Works magnet{" "}
{!contributionsData[1].isLoading &&
countNewContributions(contributionsData[1].data, "works-magnet") > 0
? `(${countNewContributions(
contributionsData[1].data,
"works-magnet"
)})`
: ""}
Works magnet
</Link>
</Nav>
</HeaderWrapper>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,14 @@ const ContributionProductionItem = ({
<Row>
<Col>
<Text size="sm" bold className="name">
{data?.name} ({data?.id})
{data?.name} ({data?.objectId})
<button
className={`copy-button ${copiedId === data?.id ? "copied" : ""}`}
onClick={() => copyToClipboard(data?.id)}
className={`copy-button ${
copiedId === data?.objectId ? "copied" : ""
}`}
onClick={() => copyToClipboard(data?.objectId)}
>
{copiedId === data?.id && (
{copiedId === data?.objectId && (
<span className="copied-text">Copié</span>
)}
<FaCopy size={14} color="#2196f3" className="copy-icon" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Contribute_Production } from "@/types";
import { Contribute_Production } from "../../../types";
import MessagePreview from "./message-preview";

const ContributorProductionInfo = ({
Expand Down
42 changes: 21 additions & 21 deletions client/src/pages/home/index.tsx
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
import { Col, Container, Row, Title } from "@dataesr/dsfr-plus";
import ContributionsGraphByYear from "../../components/graphs/contributions-by-year";
import ContributionsGraphByName from "../../components/graphs/contributions-by-name";
import ContributionsGraphByStatus from "../../components/graphs/by-status";
import ContributionsGraphByTags from "../../components/graphs/by-tags";
import ContributionsGraphByDomains from "../../components/graphs/by-domains";
import ContributionsGraphByTypes from "../../components/graphs/by-types";
import AdminTreatmentGraph from "../../components/graphs/treatment-by-admin";
import AdminResponseGraph from "../../components/graphs/response-by-admin";
import ContributionsGraphByProductions from "../../components/graphs/by-missing-productions";
import CommentsGraphByTeamMember from "../../components/graphs/comment-by-team";
import ContributionsGraphByYearAndType from "../../components/graphs/contribution-by-type";
import { useState } from "react";
import { contactUrl, contributionUrl } from "../../config/api";
import ContributionData from "../../api/contribution-api/getData";
import { Container, Row, Title } from "@dataesr/dsfr-plus";
// import ContributionsGraphByYear from "../../components/graphs/contributions-by-year";
// import ContributionsGraphByName from "../../components/graphs/contributions-by-name";
// import ContributionsGraphByStatus from "../../components/graphs/by-status";
// import ContributionsGraphByTags from "../../components/graphs/by-tags";
// import ContributionsGraphByDomains from "../../components/graphs/by-domains";
// import ContributionsGraphByTypes from "../../components/graphs/by-types";
// import AdminTreatmentGraph from "../../components/graphs/treatment-by-admin";
// import AdminResponseGraph from "../../components/graphs/response-by-admin";
// import ContributionsGraphByProductions from "../../components/graphs/by-missing-productions";
// import CommentsGraphByTeamMember from "../../components/graphs/comment-by-team";
// import ContributionsGraphByYearAndType from "../../components/graphs/contribution-by-type";
// import { useState } from "react";
// import { contactUrl, contributionUrl } from "../../config/api";
// import ContributionData from "../../api/contribution-api/getData";

const Home = () => {
const [filter, setFilter] = useState("contributions");
const url = filter === "object" ? contributionUrl : contactUrl;
const { data, isLoading, isError } = ContributionData(url);
const contributions = data?.data as { data: [] };
// const [filter, setFilter] = useState("contributions");
// const url = filter === "object" ? contributionUrl : contactUrl;
// const { data, isLoading, isError } = ContributionData(url);
// const contributions = data?.data as { data: [] };

return (
<Container className="fr-mt-10v">
<Title>Bienvenue sur le Guichet numérique du DISD</Title>
<Row gutters className="fr-grid-row--center fr-mt-5w">
<Col md="6">
{/* <Col md="6">
<ContributionsGraphByYear
contributions={contributions}
isLoading={isLoading}
Expand Down Expand Up @@ -128,7 +128,7 @@ const Home = () => {
isLoading={isLoading}
isError={isError}
/>
</Col>
</Col> */}
</Row>
</Container>
);
Expand Down
1 change: 1 addition & 0 deletions client/src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ export type MessagePreviewProps = {
};

export type Contribute_Production = {
objectId: string;
fullName: string;
firstName: string;
lastName: string;
Expand Down
1 change: 1 addition & 0 deletions server/routes/productions/get/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ getProductionsRoutes.get(

const formattedProductions = productions.map((production: any) => ({
id: production.id.toString(),
objectId: production._id.toString(),
organisation: production.organisation || "",
fonction: production.position || "",
treated_at: production.treated_at || new Date(),
Expand Down
1 change: 1 addition & 0 deletions server/schemas/get/productionSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { t } from "elysia";
export const productionSchema = t.Object(
{
id: t.String(),
objectId: t.String(),
treated_at: t.Optional(t.Union([t.String(), t.Date()])),
email: t.Optional(t.String()),
name: t.Optional(t.String()),
Expand Down
1 change: 1 addition & 0 deletions server/schemas/post/productionsSchema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { t } from "elysia";

export const postProductionsSchema = t.Object(
{
objectId: t.String(),
email: t.String({ regex: /^[^\s@]+@[^\s@]+\.[^\s@]+$/ }),
name: t.String(),
extra: t.Optional(t.Record(t.String(), t.String())),
Expand Down
2 changes: 1 addition & 1 deletion server/script/cleanObjects.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ async function addFromAppField() {

const db = client.db("ticket-office-api");
// change collection with contact / contribute_production and contribute
const collection = db.collection("contribute");
const collection = db.collection("contribute_productions");

const contacts = await collection.find().toArray();
console.log(`Nombre de contacts trouvés : ${contacts.length}`);
Expand Down
52 changes: 52 additions & 0 deletions server/script/convertIdtoObjectIdProd.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import { MongoClient } from "mongodb";

const mongoURI = process.env.MONGO_URI || "mongodb://localhost:27017";
const client = new MongoClient(mongoURI);

// THIS SCRIPT IS USED TO RENAME "id" FIELD TO "objectId"
// USE IT DIRECTLY IN PROD

console.log(mongoURI);
async function renameIdToObjectId() {
try {
await client.connect();
console.log("Connecté à MongoDB");

const db = client.db("ticket-office-api");
// change collection if needed
const collection = db.collection("contribute_productions");

const contacts = await collection.find().toArray();
console.log(`Nombre de contacts trouvés : ${contacts.length}`);

for (const contact of contacts) {
// Vérifie si le champ 'id' existe avant de le renommer
if (contact.id) {
try {
// Renomme le champ 'id' en 'objectId'
await collection.updateOne(
{ _id: contact._id },
{
$rename: { id: "objectId" },
}
);

console.log(`Document mis à jour pour l'ID : ${contact._id}`);
} catch (error) {
console.error(
`Impossible de renommer le champ id en objectId pour le document : ${contact._id}`,
error
);
}
}
}

console.log("Renommage terminé avec succès.");
} catch (error) {
console.error("Erreur lors du renommage :", error);
} finally {
await client.close();
}
}

renameIdToObjectId();

0 comments on commit 03c66cc

Please sign in to comment.