diff --git a/apps/hub-server/routes/event.ts b/apps/hub-server/routes/event.ts index 58bfdc30..8bd3803a 100644 --- a/apps/hub-server/routes/event.ts +++ b/apps/hub-server/routes/event.ts @@ -1,6 +1,6 @@ import { prisma } from "@repo/db"; +import { eventCompleted } from "@repo/shared-components"; import { Router } from "express"; -import { eventCompleted } from "helper/events"; import { handleParticipantEnrolled, handleParticipantFinished } from "modules/event"; import { getMoodleCourseCompletionStatus } from "modules/moodle"; diff --git a/apps/hub/app/(app)/_components/FeaturedEvents.tsx b/apps/hub/app/(app)/_components/FeaturedEvents.tsx index 5297c264..b81fca3c 100644 --- a/apps/hub/app/(app)/_components/FeaturedEvents.tsx +++ b/apps/hub/app/(app)/_components/FeaturedEvents.tsx @@ -2,7 +2,7 @@ import { getServerSession } from "../../api/auth/[...nextauth]/auth"; import { prisma } from "@repo/db"; import { EventCard } from "../events/_components/item"; import { RocketIcon } from "lucide-react"; -import { eventCompleted } from "../../../helper/events"; +import { eventCompleted } from "@repo/shared-components"; const page = async () => { const session = await getServerSession(); diff --git a/apps/hub/app/(app)/events/_components/modalBtn.tsx b/apps/hub/app/(app)/events/_components/modalBtn.tsx index 3734cacf..e9831129 100644 --- a/apps/hub/app/(app)/events/_components/modalBtn.tsx +++ b/apps/hub/app/(app)/events/_components/modalBtn.tsx @@ -11,7 +11,8 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { Select } from "../../../_components/ui/Select"; import toast from "react-hot-toast"; import { useRouter } from "next/navigation"; -import { eventCompleted, handleParticipantEnrolled } from "../../../../helper/events"; +import { handleParticipantEnrolled } from "../../../../helper/events"; +import { eventCompleted } from "@repo/shared-components"; interface ModalBtnProps { title: string; diff --git a/apps/hub/helper/events.ts b/apps/hub/helper/events.ts index bee9495e..4bc8827c 100644 --- a/apps/hub/helper/events.ts +++ b/apps/hub/helper/events.ts @@ -1,6 +1,5 @@ import { Event, EventAppointment, Participant, Prisma } from "@repo/db"; import axios from "axios"; -import { da } from "date-fns/locale"; export const getEvents = async (filter: Prisma.EventWhereInput) => { const { data } = await axios.get< @@ -19,13 +18,6 @@ export const getEvents = async (filter: Prisma.EventWhereInput) => { return data; }; -export const eventCompleted = (event: Event, participant?: Participant) => { - if (!participant) return false; - if (event.finisherMoodleCourseId && !participant.finisherMoodleCurseCompleted) return false; - if (event.hasPresenceEvents && !participant.attended) return false; - return true; -}; - export const handleParticipantFinished = async (participantId: string) => axios.post(`${process.env.NEXT_PUBLIC_HUB_SERVER_URL}/event/handle-participant-finished`, { participantId, diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index bf61c64e..11ff5ae5 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,30 +1,30 @@ services: - traefik: - image: traefik:v3.4 - command: - - "--api.dashboard=true" # Dashboard aktivieren (nicht für Produktion) - - "--api.insecure=true" # Unsicheres Dashboard (nur für Entwicklung) - - "--providers.docker=true" - - "--providers.docker.exposedbydefault=false" - - "--providers.docker.useBindPortIP=true" - - "--entrypoints.web.address=:80" - - --entrypoints.web.http.redirections.entryPoint.to=websecure - - --entrypoints.web.http.redirections.entryPoint.scheme=https - - --entrypoints.web.http.redirections.entrypoint.permanent=true - - "--entrypoints.websecure.address=:443" - - "--certificatesresolvers.le.acme.httpchallenge=true" - - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web" - - "--certificatesresolvers.le.acme.email=johannesambre@gmail.com" - - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" - ports: - - "443:443" # HTTPS-Zugang - - "80:80" # HTTP-Zugang - - "8080:8080" # Traefik Dashboard - volumes: - - "/var/run/docker.sock:/var/run/docker.sock:ro" - - "./letsencrypt:/letsencrypt" - networks: - - traefik_network + #traefik: + # image: traefik:v3.4 + # command: + # - "--api.dashboard=true" # Dashboard aktivieren (nicht für Produktion) + # - "--api.insecure=true" # Unsicheres Dashboard (nur für Entwicklung) + # - "--providers.docker=true" + # - "--providers.docker.exposedbydefault=false" + # - "--providers.docker.useBindPortIP=true" + # - "--entrypoints.web.address=:80" + # - --entrypoints.web.http.redirections.entryPoint.to=websecure + # - --entrypoints.web.http.redirections.entryPoint.scheme=https + # - --entrypoints.web.http.redirections.entrypoint.permanent=true + # - "--entrypoints.websecure.address=:443" + # - "--certificatesresolvers.le.acme.httpchallenge=true" + # - "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web" + # - "--certificatesresolvers.le.acme.email=johannesambre@gmail.com" + # - "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json" + # ports: + # - "443:443" # HTTPS-Zugang + # - "80:80" # HTTP-Zugang + # - "8080:8080" # Traefik Dashboard + # volumes: + # - "/var/run/docker.sock:/var/run/docker.sock:ro" + # - "./letsencrypt:/letsencrypt" + # networks: + # - traefik portainer: image: portainer/portainer-ce:latest @@ -48,7 +48,7 @@ services: - "traefik.http.routers.portainer-edge.service=portainer-edge" - "traefik.http.routers.portainer-edge.tls.certresolver=le" networks: - - traefik_network + - traefik # Dispatch Service dispatch: @@ -71,14 +71,14 @@ services: - "traefik.http.routers.dispatch.entrypoints=websecure" - "traefik.http.routers.dispatch.tls.certresolver=le" - "traefik.http.services.dispatch.loadbalancer.server.port=3000" - - "traefik.docker.network=var-monorepo_traefik_network" + - "traefik.docker.network=var-monorepo_traefik" environment: - NEXTAUTH_URL=${AUTH_DISPATCH_URL} - NEXTAUTH_SECRET=${AUTH_DISPATCH_SECRET} networks: - postgres_network - - traefik_network + - traefik dispatch-server: build: context: . @@ -95,12 +95,12 @@ services: - "traefik.http.services.dispatch-server.loadBalancer.sticky.cookie.name=server_id" - "traefik.http.services.dispatch-server.loadBalancer.sticky.cookie.httpOnly=true" - "traefik.http.services.dispatch-server.loadbalancer.server.port=3000" - - "traefik.docker.network=var-monorepo_traefik_network" + - "traefik.docker.network=var-monorepo_traefik" networks: - discord_network - postgres_network - redis_network - - traefik_network + - traefik depends_on: postgres: condition: service_healthy @@ -136,7 +136,7 @@ services: - "traefik.http.routers.hub.entrypoints=websecure" - "traefik.http.routers.hub.tls.certresolver=le" - "traefik.http.services.hub.loadbalancer.server.port=3000" - - "traefik.docker.network=var-monorepo_traefik_network" + - "traefik.docker.network=var-monorepo_traefik" environment: - NEXTAUTH_URL=${AUTH_HUB_URL} - NEXTAUTH_SECRET=${AUTH_HUB_SECRET} @@ -145,7 +145,7 @@ services: networks: - discord_network - postgres_network - - traefik_network + - traefik hub-server: build: context: . @@ -157,14 +157,14 @@ services: - "traefik.http.routers.hub-server.entrypoints=websecure" - "traefik.http.routers.hub-server.tls.certresolver=le" - "traefik.http.services.hub-server.loadbalancer.server.port=3000" - - "traefik.docker.network=var-monorepo_traefik_network" + - "traefik.docker.network=var-monorepo_traefik" env_file: - .env.prod networks: - discord_network - postgres_network - - traefik_network + - traefik depends_on: postgres: condition: service_healthy @@ -179,9 +179,9 @@ services: - "traefik.http.routers.docs.entrypoints=websecure" - "traefik.http.routers.docs.tls.certresolver=le" - "traefik.http.services.docs.loadbalancer.server.port=80" - - "traefik.docker.network=var-monorepo_traefik_network" + - "traefik.docker.network=var-monorepo_traefik" networks: - - traefik_network + - traefik postgres: image: postgres:13 container_name: postgres @@ -261,23 +261,23 @@ services: # - "traefik.http.routers.moodle.entrypoints=websecure" # - "traefik.http.routers.moodle.tls.certresolver=le" # - "traefik.http.services.moodle.loadbalancer.server.port=8080" - # - "traefik.docker.network=var-monorepo_traefik_network" + # - "traefik.docker.network=var-monorepo_traefik" # networks: # - moodle_db_network - # - traefik_network + # - traefik # volumes: # - moodle_data:/bitnami/moodle # - moodle_moodledata:/bitnami/moodledata # networks: # - postgres_network - # - traefik_network + # - traefik # Für den Zugriff auf den Host livekit: image: livekit/livekit-server command: --config /etc/livekit.yaml --node-ip 37.221.196.140 restart: unless-stopped networks: - - traefik_network + - traefik ports: - "7881:7881" - "7882:7882/udp" @@ -303,8 +303,8 @@ networks: driver: bridge redis_network: driver: bridge - traefik_network: - driver: bridge + traefik: + external: true moodle_db_network: driver: bridge diff --git a/apps/hub-server/helper/events.ts b/packages/shared-components/helper/event.ts similarity index 100% rename from apps/hub-server/helper/events.ts rename to packages/shared-components/helper/event.ts diff --git a/packages/shared-components/helper/index.ts b/packages/shared-components/helper/index.ts index 963c6b2f..d19c6467 100644 --- a/packages/shared-components/helper/index.ts +++ b/packages/shared-components/helper/index.ts @@ -1 +1,2 @@ export * from "./cn"; +export * from "./event";