120 lines
3.5 KiB
TypeScript
120 lines
3.5 KiB
TypeScript
import { Drawing, CreateDrawingDto, DrawingRevision } from "@/types/drawing";
|
|
|
|
// Mock Data
|
|
const mockDrawings: Drawing[] = [
|
|
{
|
|
drawing_id: 1,
|
|
drawing_number: "A-101",
|
|
title: "Ground Floor Plan",
|
|
type: "CONTRACT",
|
|
discipline_id: 2,
|
|
discipline: { id: 2, discipline_code: "ARC", discipline_name: "Architecture" },
|
|
sheet_number: "01",
|
|
scale: "1:100",
|
|
current_revision: "0",
|
|
issue_date: new Date(Date.now() - 100000000).toISOString(),
|
|
revision_count: 1,
|
|
revisions: [
|
|
{
|
|
revision_id: 1,
|
|
revision_number: "0",
|
|
revision_date: new Date(Date.now() - 100000000).toISOString(),
|
|
revision_description: "Issued for Construction",
|
|
revised_by_name: "John Doe",
|
|
file_url: "/mock-drawing.pdf",
|
|
is_current: true,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
drawing_id: 2,
|
|
drawing_number: "S-201",
|
|
title: "Foundation Details",
|
|
type: "SHOP",
|
|
discipline_id: 1,
|
|
discipline: { id: 1, discipline_code: "STR", discipline_name: "Structure" },
|
|
sheet_number: "05",
|
|
scale: "1:50",
|
|
current_revision: "B",
|
|
issue_date: new Date().toISOString(),
|
|
revision_count: 2,
|
|
revisions: [
|
|
{
|
|
revision_id: 3,
|
|
revision_number: "B",
|
|
revision_date: new Date().toISOString(),
|
|
revision_description: "Updated reinforcement",
|
|
revised_by_name: "Jane Smith",
|
|
file_url: "/mock-drawing-v2.pdf",
|
|
is_current: true,
|
|
},
|
|
{
|
|
revision_id: 2,
|
|
revision_number: "A",
|
|
revision_date: new Date(Date.now() - 50000000).toISOString(),
|
|
revision_description: "First Submission",
|
|
revised_by_name: "Jane Smith",
|
|
file_url: "/mock-drawing-v1.pdf",
|
|
is_current: false,
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
export const drawingApi = {
|
|
getAll: async (params?: { type?: "CONTRACT" | "SHOP"; search?: string }) => {
|
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
|
|
let filtered = [...mockDrawings];
|
|
if (params?.type) {
|
|
filtered = filtered.filter((d) => d.type === params.type);
|
|
}
|
|
if (params?.search) {
|
|
const lowerSearch = params.search.toLowerCase();
|
|
filtered = filtered.filter((d) =>
|
|
d.drawing_number.toLowerCase().includes(lowerSearch) ||
|
|
d.title.toLowerCase().includes(lowerSearch)
|
|
);
|
|
}
|
|
|
|
return filtered;
|
|
},
|
|
|
|
getById: async (id: number) => {
|
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
return mockDrawings.find((d) => d.drawing_id === id);
|
|
},
|
|
|
|
create: async (data: CreateDrawingDto) => {
|
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
const newId = Math.max(...mockDrawings.map((d) => d.drawing_id)) + 1;
|
|
const newDrawing: Drawing = {
|
|
drawing_id: newId,
|
|
drawing_number: data.drawing_number,
|
|
title: data.title,
|
|
type: data.drawing_type,
|
|
discipline_id: data.discipline_id,
|
|
discipline: { id: data.discipline_id, discipline_code: "MOCK", discipline_name: "Mock Discipline" },
|
|
sheet_number: data.sheet_number,
|
|
scale: data.scale,
|
|
current_revision: "0",
|
|
issue_date: new Date().toISOString(),
|
|
revision_count: 1,
|
|
revisions: [
|
|
{
|
|
revision_id: newId * 10,
|
|
revision_number: "0",
|
|
revision_date: new Date().toISOString(),
|
|
revision_description: "Initial Upload",
|
|
revised_by_name: "Current User",
|
|
file_url: "#",
|
|
is_current: true,
|
|
}
|
|
]
|
|
};
|
|
|
|
mockDrawings.unshift(newDrawing);
|
|
return newDrawing;
|
|
},
|
|
};
|