diff --git a/app/admin/page.tsx b/app/admin/page.tsx index 59689f2..9b818a6 100644 --- a/app/admin/page.tsx +++ b/app/admin/page.tsx @@ -611,7 +611,9 @@ export default function AdminPage() { checked={forceDelete} onChange={(e) => setForceDelete(e.target.checked)} /> - Forcer la suppression même si l'utilisateur a des heures + + Forcer la suppression même si l'utilisateur a des heures + @@ -630,7 +632,8 @@ export default function AdminPage() { Confirmation de suppression forcée - Cette action supprimera l'utilisateur sans tenir compte de ses heures. Êtes-vous sûr ? + Cette action supprimera l'utilisateur sans tenir compte de ses + heures. Êtes-vous sûr ? setShowForceModal(false)}>Annuler diff --git a/app/api/upload/route.ts b/app/api/upload/route.ts index 23f660a..3b5adbc 100644 --- a/app/api/upload/route.ts +++ b/app/api/upload/route.ts @@ -1,5 +1,5 @@ import { NextRequest, NextResponse } from 'next/server'; -import { writeFile } from 'fs/promises'; +import { writeFile, mkdir } from 'fs/promises'; import path from 'path'; export async function POST(request: NextRequest) { @@ -29,6 +29,7 @@ export async function POST(request: NextRequest) { const filename = `${Date.now()}-${file.name}`; const filepath = path.join(process.cwd(), 'public', 'uploads', filename); + await mkdir(path.dirname(filepath), { recursive: true }); await writeFile(filepath, buffer); return NextResponse.json({ path: `/uploads/${filename}` }); diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index ddd549c..a8dcc93 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -150,6 +150,23 @@ export default function DashboardPage() { return ( Tableau de bord + + Totaux + + + En attente + {formatHours(totalPending)} + + + Validées + {formatHours(totalValidated)} + + + Rejetées + {formatHours(totalRejected)} + + + {isMember && ( @@ -292,23 +309,6 @@ export default function DashboardPage() { )} - - Totaux - - - En attente - {formatHours(totalPending)} - - - Validées - {formatHours(totalValidated)} - - - Rejetées - {formatHours(totalRejected)} - - - ); }
{formatHours(totalPending)}
{formatHours(totalValidated)}
{formatHours(totalRejected)}