diff options
Diffstat (limited to 'app/api/sync/import')
| -rw-r--r-- | app/api/sync/import/route.ts | 39 | ||||
| -rw-r--r-- | app/api/sync/import/status/route.ts | 41 |
2 files changed, 80 insertions, 0 deletions
diff --git a/app/api/sync/import/route.ts b/app/api/sync/import/route.ts new file mode 100644 index 00000000..a6496578 --- /dev/null +++ b/app/api/sync/import/route.ts @@ -0,0 +1,39 @@ +import { NextRequest, NextResponse } from "next/server" +import { importService } from "@/lib/vendor-document-list/import-service" +import { getServerSession } from "next-auth" +import { authOptions } from "@/app/api/auth/[...nextauth]/route" + +export async function POST(request: NextRequest) { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const body = await request.json() + const { contractId, sourceSystem = 'DOLCE' } = body + + if (!contractId) { + return NextResponse.json( + { error: 'Contract ID is required' }, + { status: 400 } + ) + } + + const result = await importService.importFromExternalSystem( + contractId, + sourceSystem + ) + + return NextResponse.json(result) + } catch (error) { + console.error('Import failed:', error) + return NextResponse.json( + { + error: 'Import failed', + message: error instanceof Error ? error.message : 'Unknown error' + }, + { status: 500 } + ) + } +} diff --git a/app/api/sync/import/status/route.ts b/app/api/sync/import/status/route.ts new file mode 100644 index 00000000..c5b4b0bd --- /dev/null +++ b/app/api/sync/import/status/route.ts @@ -0,0 +1,41 @@ +// app/api/sync/import/status/route.ts +import { NextRequest, NextResponse } from "next/server" +import { importService } from "@/lib/vendor-document-list/import-service" +import { getServerSession } from "next-auth" +import { authOptions } from "@/app/api/auth/[...nextauth]/route" + +export async function GET(request: NextRequest) { + try { + const session = await getServerSession(authOptions) + if (!session?.user?.id) { + return NextResponse.json({ error: "Unauthorized" }, { status: 401 }) + } + + const { searchParams } = new URL(request.url) + const contractId = searchParams.get('contractId') + const sourceSystem = searchParams.get('sourceSystem') || 'DOLCE' + + if (!contractId) { + return NextResponse.json( + { error: 'Contract ID is required' }, + { status: 400 } + ) + } + + const status = await importService.getImportStatus( + Number(contractId), + sourceSystem + ) + + return NextResponse.json(status) + } catch (error) { + console.error('Failed to get import status:', error) + return NextResponse.json( + { + error: 'Failed to get import status', + message: error instanceof Error ? error.message : 'Unknown error' + }, + { status: 500 } + ) + } +}
\ No newline at end of file |
