Browse Source

feat(api): add import summary endpoint for cintas data analysis

vtugulan 6 months ago
parent
commit
e4153da2ae
1 changed files with 72 additions and 0 deletions
  1. 72 0
      app/api/imports/[id]/summary/route.ts

+ 72 - 0
app/api/imports/[id]/summary/route.ts

@@ -0,0 +1,72 @@
+import { NextRequest, NextResponse } from 'next/server';
+import { prisma } from '@/lib/prisma';
+
+export async function GET(
+    request: NextRequest,
+    { params }: { params: Promise<{ id: string }> }
+) {
+    try {
+        const { id } = await params;
+        const importId = parseInt(id);
+
+        if (isNaN(importId)) {
+            return NextResponse.json(
+                { error: 'Invalid import ID' },
+                { status: 400 }
+            );
+        }
+
+        // Check if import exists
+        const importRecord = await prisma.import.findUnique({
+            where: { id: importId }
+        });
+
+        if (!importRecord) {
+            return NextResponse.json(
+                { error: 'Import not found' },
+                { status: 404 }
+            );
+        }
+
+        // Get basic summary data
+        const totalRecords = await prisma.cintasInstallCalendar.count({
+            where: { importId }
+        });
+
+        const cintasSummaries = await prisma.cintasSummary.findMany({
+            where: { importId },
+            orderBy: { week: 'asc' }
+        });
+
+        // Get file info
+        const file = importRecord.fileId ? await prisma.file.findUnique({
+            where: { id: importRecord.fileId }
+        }) : null;
+
+        const summary = {
+            totalRecords,
+            totalWeeks: cintasSummaries.length,
+            cintasSummaries: cintasSummaries.map(summary => ({
+                week: summary.week,
+                trrTotal: summary.trrTotal,
+                fourWkAverages: summary.fourWkAverages,
+                trrPlus4Wk: summary.trrPlus4Wk,
+                powerAdds: summary.powerAdds
+            }))
+        };
+
+        return NextResponse.json({
+            importId,
+            fileName: file?.filename || 'Unknown',
+            uploadDate: importRecord.createdAt,
+            summary
+        });
+
+    } catch (error) {
+        console.error('Error fetching import summary:', error);
+        return NextResponse.json(
+            { error: 'Failed to fetch import summary' },
+            { status: 500 }
+        );
+    }
+}