Add project management support and integrate customer-project functionality
This commit is contained in:
37
internal_frontend/app/api/projects/[id]/route.ts
Normal file
37
internal_frontend/app/api/projects/[id]/route.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import {NextRequest, NextResponse} from "next/server";
|
||||
import {serverCall} from "@/lib/api/serverCall";
|
||||
import {projectRoutes} from "@/app/api/projects/projectRoutes";
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
try {
|
||||
// Extract project ID from the URL
|
||||
const segments = request.url.split("/");
|
||||
const projectId = segments.pop();
|
||||
|
||||
if (!projectId) {
|
||||
return NextResponse.json(
|
||||
{error: "Project ID is required"},
|
||||
{status: 400}
|
||||
);
|
||||
}
|
||||
|
||||
// Perform server call to fetch the project details
|
||||
const response = await serverCall(projectRoutes.getById(projectId), "GET");
|
||||
|
||||
if (!response.ok) {
|
||||
return NextResponse.json(
|
||||
{error: "Project not found"},
|
||||
{status: response.status}
|
||||
);
|
||||
}
|
||||
|
||||
const project = await response.json();
|
||||
return NextResponse.json(project);
|
||||
} catch (error) {
|
||||
console.error("Error fetching project:", error);
|
||||
return NextResponse.json(
|
||||
{error: "Failed to fetch project"},
|
||||
{status: 500}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
import {NextRequest, NextResponse} from "next/server";
|
||||
import {serverCall} from "@/lib/api/serverCall";
|
||||
import {projectRoutes} from "@/app/api/projects/projectRoutes";
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
const segments = request.url.split('/');
|
||||
const id = segments[segments.indexOf('customer') + 1];
|
||||
const response = await serverCall(projectRoutes.getProjectByCustomerId(id), "GET");
|
||||
|
||||
if (!response.ok) {
|
||||
return NextResponse.json({error: "Customer not found"}, {status: 404});
|
||||
}
|
||||
|
||||
const customer = await response.json();
|
||||
return NextResponse.json(customer);
|
||||
}
|
||||
6
internal_frontend/app/api/projects/projectRoutes.ts
Normal file
6
internal_frontend/app/api/projects/projectRoutes.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export const projectRoutes = {
|
||||
'create': '/api/projects',
|
||||
getById: (id: string) => `/api/projects/${id}`,
|
||||
getProjectByCustomerId: (customerId: string) => `/api/projects/customer/${customerId}`
|
||||
}
|
||||
;
|
||||
21
internal_frontend/app/api/projects/route.ts
Normal file
21
internal_frontend/app/api/projects/route.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import {NextRequest, NextResponse} from "next/server";
|
||||
import {serverCall} from "@/lib/api/serverCall";
|
||||
import {projectRoutes} from "@/app/api/projects/projectRoutes";
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
try {
|
||||
// Parse the incoming JSON payload
|
||||
const body = await req.json();
|
||||
|
||||
// Make a POST request to the backend using serverCall
|
||||
const response = await serverCall(projectRoutes.create, "POST", body);
|
||||
|
||||
// Parse and return the backend response
|
||||
const result = await response.json();
|
||||
return NextResponse.json(result);
|
||||
} catch (error) {
|
||||
// Handle errors gracefully
|
||||
console.error("Error creating project:", error);
|
||||
return NextResponse.json({error: "Failed to create project"}, {status: 500});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user