Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions backend/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ async function startServer() {
app.use('/api/uploads/notebooks', express.static(path.join(__dirname, '/uploads/notebooks')));
app.use('/api/uploads/foodmenu', express.static(path.join(__dirname, '/uploads/foodmenu')));
app.use('/api/uploads/plannings', express.static(path.join(__dirname, '/uploads/plannings')));
app.use('/api/uploads/other', express.static(path.join(__dirname, '/uploads/other')));
app.use('/api/exports/bus', express.static(path.join(__dirname, '/exports/bus')));
app.use('/api/exports/teammembers', express.static(path.join(__dirname, '/exports/teammembers')));

Expand Down
3 changes: 3 additions & 0 deletions backend/src/middlewares/multer.middleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ const acceptedMIMETypesByItem: Record<string, Record<string, MIMEType[]>> = {
fisea: [MIMEType.PDF],
master: [MIMEType.PDF],
},
other: {
parental_authorization: [MIMEType.PDF],
},
};

export const createUploadMiddleware = () => {
Expand Down
13 changes: 13 additions & 0 deletions frontend/src/components/Admin/adminExportImport.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,3 +155,16 @@ export const AdminImportNotebooks = () => {
</Card>
);
};

export const AdminImportOther = () => {
return (
<Card className="w-full max-w-3xl mx-auto">
<CardHeader>
<CardTitle className="text-2xl font-semibold text-gray-800 text-center">Autres imports</CardTitle>
</CardHeader>
<CardContent className="space-y-4">
<AdminFileImport category="other" item="parental_authorization" title="Autorisation parentale" />
</CardContent>
</Card>
);
};
19 changes: 13 additions & 6 deletions frontend/src/components/WEI_SDI_Food/foodSection.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react';

import { checkFoodStatus } from '../../services/requests/event.service';
import { getPermission } from '../../services/requests/user.service';
// import { getPermission } from '../../services/requests/user.service';
import { checkUploadAvailability } from '../../utils/utils';
import { Card, CardContent, CardHeader, CardTitle } from '../ui/card';

Expand All @@ -10,7 +10,7 @@ export const FoodSection = () => {
const [isMenuAvailable, setIsMenuAvailable] = useState(false);
const [isAllergensAvailable, setIsAllergensAvailable] = useState(false);

const permission = getPermission();
// const permission = getPermission();
const menuUrl = `${import.meta.env.VITE_API_URL}/uploads/foodmenu/menu.pdf`;
const allergensUrl = `${import.meta.env.VITE_API_URL}/uploads/foodmenu/allergens.pdf`;

Expand Down Expand Up @@ -103,11 +103,18 @@ export const FoodSection = () => {
<div className="surface-card overflow-hidden">
<iframe
title="Billetterie Repas"
src="https://www.billetweb.fr/billetterie-repas-semaine-inte-a25"
className="w-full h-[600px] border-none"
src="https://www.billetweb.fr/repas-nouveaux-newcomer-dinner"
className="w-full h-[600px] border-none mb-4"
/>
</div>
{(permission === 'Student' || permission === 'Admin') && (
<div className="surface-card overflow-hidden">
<iframe
title="Billetterie Repas"
src="https://www.billetweb.fr/barbecue14"
className="w-full h-[600px] border-none mb-4"
/>
</div>
{/* {(permission === 'Student' || permission === 'Admin') && (
<div className="surface-card overflow-hidden">
<span className="items-center rounded-md bg-red-400/10 px-2 py-1 text-s font-medium text-red-400 inset-ring inset-ring-red-400/20 mx-auto mt-4 mb-4 block w-max">
La billetterie du repas test est réservée aux Chefs d'Equipe et Organisateurs de
Expand All @@ -119,7 +126,7 @@ export const FoodSection = () => {
className="w-full h-[600px] border-none"
/>
</div>
)}
)} */}
</>
)}
</CardContent>
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/WEI_SDI_Food/sdiSection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export const SdiSection = () => {
<div className="surface-card overflow-hidden">
<iframe
title="Billetterie SDI"
src="https://www.billetweb.fr/billetterie-soiree-dintegration-utt-2025"
src="https://www.billetweb.fr/soiree-dintegration-2026"
className="w-full h-[600px] border-none"
/>
</div>
Expand Down
32 changes: 30 additions & 2 deletions frontend/src/components/WEI_SDI_Food/weiSection.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { useEffect, useState } from 'react';

import { useOnboarding } from '../../contexts/onboarding';
import { useUser } from '../../contexts/user';
import { decodeToken, getToken } from '../../services/requests/auth.service';
import { checkWEIStatus } from '../../services/requests/event.service';
import { Card, CardContent, CardHeader, CardTitle } from '../ui/card';
Expand All @@ -18,6 +19,8 @@ export const WeiSection = () => {

const { status: onboardingStatus, loading: onboardingLoading } = useOnboarding();

const { user, loading: userLoading } = useUser();

useEffect(() => {
const script = document.createElement('script');
script.src = 'https://www.billetweb.fr/js/export.js';
Expand All @@ -30,10 +33,11 @@ export const WeiSection = () => {
useEffect(() => {
if (!roles.includes('Nouveau')) return;
if (onboardingLoading) return;
if (userLoading) return;
setHasContactInformation(onboardingStatus?.hasemergencyContactInformation ?? true);
setHasVssForm(onboardingStatus ? onboardingStatus.vss_form == 'validated' : true);
setNeedsVssForm(onboardingStatus?.needsVssForm ?? false);
}, [roles, onboardingLoading, onboardingStatus]);
}, [roles, onboardingLoading, onboardingStatus, userLoading]);

const fetchStatus = async () => {
try {
Expand All @@ -55,6 +59,30 @@ export const WeiSection = () => {
d'Intégration 2025 !
</p>
</CardHeader>
{!user?.majeur && (
<CardContent className="space-y-10">
<div className="surface-card p-6 text-center">
<p className="text-xl text-amber-500 font-semibold">
⚠️ Attention, pour participer au WEI en étant mineur tu as besoin d'une autorisation
parentale!
</p>
<p>
Tu la trouveras en{' '}
<a
className="underline text-blue-500"
target="_blank"
href={`${import.meta.env.VITE_API_URL}/uploads/other/parental_authorization.pdf`}
rel="noreferrer">
cliquant ici
</a>
, une fois complétée il faudra la renvoyer à{' '}
<a className="underline text-blue-500" href="mailto:lucie.fritig@utt.fr">
lucie.fritig+inte26-documents-wei@utt.fr
</a>
</p>
</div>
</CardContent>
)}
<CardContent className="space-y-10">
{!isWEIOpen ? (
<div className="surface-card p-6 text-center">
Expand Down Expand Up @@ -93,7 +121,7 @@ export const WeiSection = () => {
<div className="surface-card overflow-hidden">
<iframe
title="Billetterie WEI"
src="https://www.billetweb.fr/billetterie-week-end-dintegration-utt-2025"
src="https://www.billetweb.fr/week-end-dintegration-2026"
className="w-full h-[600px] border-none"
/>
</div>
Expand Down
5 changes: 5 additions & 0 deletions frontend/src/pages/admin/adminExport.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
AdminExportConnect,
AdminImportFoodMenu,
AdminImportNotebooks,
AdminImportOther,
AdminImportPlannings,
} from '../../components/Admin/adminExportImport';
import { AdminLayout } from '../../components/Admin/adminLayout';
Expand All @@ -25,6 +26,10 @@ const AdminPageExport: React.FC = () => (
<RevealSection delay={0.3}>
<AdminImportNotebooks />
</RevealSection>

<RevealSection delay={0.4}>
<AdminImportOther />
</RevealSection>
</div>
</AdminLayout>
);
Expand Down
Loading