From 18101a0f407d23a77db795e635af3410b7ad4bc9 Mon Sep 17 00:00:00 2001 From: Maurits Misana Date: Mon, 16 Sep 2024 13:08:45 +0200 Subject: [PATCH] add some information about completed modules --- .../diploma/[id]/_components/advise.tsx | 121 ++++++++++++++++++ .../app/(certificate)/diploma/[id]/page.tsx | 15 +-- pnpm-lock.yaml | 8 +- scripts/seed-local-db.js | 40 ++++-- supabase/package.json | 2 +- 5 files changed, 157 insertions(+), 29 deletions(-) create mode 100644 apps/web/src/app/(certificate)/diploma/[id]/_components/advise.tsx diff --git a/apps/web/src/app/(certificate)/diploma/[id]/_components/advise.tsx b/apps/web/src/app/(certificate)/diploma/[id]/_components/advise.tsx new file mode 100644 index 00000000..b9dca480 --- /dev/null +++ b/apps/web/src/app/(certificate)/diploma/[id]/_components/advise.tsx @@ -0,0 +1,121 @@ +import { CheckIcon } from "@heroicons/react/16/solid"; +import { notFound } from "next/navigation"; +import { Badge } from "~/app/(dashboard)/_components/badge"; +import { Divider } from "~/app/(dashboard)/_components/divider"; +import { Subheading } from "~/app/(dashboard)/_components/heading"; +import { Strong, Text, TextLink } from "~/app/(dashboard)/_components/text"; +import { retrieveCertificateById } from "~/lib/nwd"; +import { generateAdvise } from "../../_utils/generate-advise"; + +export default async function CertificateAdvise({ id }: { id: string }) { + const [certificate, advise] = await Promise.all([ + retrieveCertificateById(id).catch(() => notFound()), + generateAdvise(id), + ]); + + const { + course: { + title: courseTitle, + handle: courseHandle, + discipline: { handle: disciplineHandle }, + }, + degree: { title: degreeTitle }, + } = certificate.program; + + const uniqueCompletedModules = Array.from( + new Set( + certificate.completedCompetencies.map( + (competency) => competency.curriculum_competency.moduleId, + ), + ), + ); + + return ( +
+ + Je bent bezig met de cursus {courseTitle} op niveau{" "} + {degreeTitle}. Hieronder vind je een overzicht van de + modules die je tot nu toe hebt voltooid. {advise} + + +
+
+ Kernmodules +
    + {certificate.curriculum.modules + .filter((module) => module.isRequired) + .map((module, index, filteredArray) => { + const isModuleCompleted = uniqueCompletedModules.includes( + module.id, + ); + return ( +
  • +
    +
    + {isModuleCompleted ? ( + + ) : ( + + )} + {module.title} +
    + {isModuleCompleted ? ( + Behaald + ) : null} +
    + {index < filteredArray.length - 1 && ( + + )} +
  • + ); + })} +
+
+
+ Keuzemodules +
    + {certificate.curriculum.modules + .filter((module) => !module.isRequired) + .map((module, index, filteredArray) => { + const isModuleCompleted = uniqueCompletedModules.includes( + module.id, + ); + return ( +
  • +
    +
    + {isModuleCompleted ? ( + + ) : ( + + )} + {module.title} +
    + {isModuleCompleted ? ( + Behaald + ) : null} +
    + {index < filteredArray.length - 1 && ( + + )} +
  • + ); + })} +
+
+
+ + + Wil je meer weten over de opbouw van jouw cursus?
Bezoek de + cursuspagina{" "} + + {courseTitle} + + . +
+
+ ); +} diff --git a/apps/web/src/app/(certificate)/diploma/[id]/page.tsx b/apps/web/src/app/(certificate)/diploma/[id]/page.tsx index 94ba8d8a..55c1bad7 100644 --- a/apps/web/src/app/(certificate)/diploma/[id]/page.tsx +++ b/apps/web/src/app/(certificate)/diploma/[id]/page.tsx @@ -14,8 +14,8 @@ import { import dayjs from "~/lib/dayjs"; import { retrieveCertificateById } from "~/lib/nwd"; import { Text, TextLink } from "../../../(dashboard)/_components/text"; -import { generateAdvise } from "../_utils/generate-advise"; import { safeParseCertificateParams } from "../_utils/parse-certificate-params"; +import CertificateAdvise from "./_components/advise"; import { Confetti } from "./_components/confetti"; import { ShareCertificate } from "./_components/share"; import CertificateTemplate from "./_components/template"; @@ -48,9 +48,8 @@ export async function generateMetadata({ params }: Props): Promise { } export default async function Page({ params, searchParams }: Props) { - const [certificate, advice] = await Promise.all([ + const [certificate] = await Promise.all([ retrieveCertificateById(params.id).catch(() => notFound()), - generateAdvise(params.id), ]); const result = safeParseCertificateParams({ @@ -136,13 +135,9 @@ export default async function Page({ params, searchParams }: Props) {

En nu?

- {advice} - - - Leer meer over alle verschillende diploma's op{" "} - onze diplomalijn{" "} - pagina! - + + +
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e37a1263..1beda454 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -556,8 +556,8 @@ importers: supabase: devDependencies: supabase: - specifier: ^1.183.5 - version: 1.187.10 + specifier: ^1.192.5 + version: 1.192.5 packages: @@ -13569,8 +13569,8 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 - /supabase@1.187.10: - resolution: {integrity: sha512-7Nc50xN0k/G5fX3bpa+ZaulBoK/i5jwdjXhiNzyZhUf8qEWQnSsT1LTidCvpzuGt+8Gi6G3aMAh/5GlRdBLIoQ==} + /supabase@1.192.5: + resolution: {integrity: sha512-xRn5wu4jtSgaPXfNrYRYv6Y1oxevxp7Ff95rJyhh1Us7WqSxjmJcpFygXG/tZx/Oxp/iD1JMhip+mFVlfcaVcw==} engines: {npm: '>=8'} hasBin: true requiresBuild: true diff --git a/scripts/seed-local-db.js b/scripts/seed-local-db.js index a3fd9733..b5106569 100644 --- a/scripts/seed-local-db.js +++ b/scripts/seed-local-db.js @@ -4,17 +4,29 @@ const cp = require('child_process') const options = { shell: true, stdio: 'inherit' } -cp.execFileSync( - 'pnpm', - ['--filter', 'core', '--filter', 'scripts', 'build'], - options, -) -cp.execFileSync('node', ['./packages/scripts/out/seed/seed'], { - ...options, - env: { - PGURI: 'postgresql://postgres:postgres@127.0.0.1:54322/postgres', - NEXT_PUBLIC_SUPABASE_URL: 'http://127.0.0.1:54321', - SUPABASE_SERVICE_ROLE_KEY: - 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU', - }, -}) +try { + console.log('Executing pnpm build...') + cp.execFileSync( + 'pnpm', + ['--filter', 'core', '--filter', 'scripts', 'build'], + options, + ) + console.log('pnpm build completed successfully') + + console.log('Executing seed script...') + cp.execFileSync('node', ['./packages/scripts/out/seed/seed'], { + ...options, + env: { + ...process.env, + PGURI: 'postgresql://postgres:postgres@127.0.0.1:54322/postgres', + NEXT_PUBLIC_SUPABASE_URL: 'http://127.0.0.1:54321', + SUPABASE_SERVICE_ROLE_KEY: + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU', + }, + }) + console.log('Seed script completed successfully') +} catch (error) { + console.error('An error occurred:', error.message) + console.error('Error details:', error) + process.exit(1) +} diff --git a/supabase/package.json b/supabase/package.json index acd14b8c..4fe83c82 100644 --- a/supabase/package.json +++ b/supabase/package.json @@ -12,6 +12,6 @@ "deploy": "supabase link --project-ref $SUPABASE_PROJECT_REF && supabase db push" }, "devDependencies": { - "supabase": "^1.183.5" + "supabase": "^1.192.5" } }