66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
import { DashboardStats, ActivityLog, PendingTask } from "@/types/dashboard";
|
|
|
|
export const dashboardApi = {
|
|
getStats: async (): Promise<DashboardStats> => {
|
|
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
return {
|
|
correspondences: 124,
|
|
rfas: 45,
|
|
approved: 89,
|
|
pending: 12,
|
|
};
|
|
},
|
|
|
|
getRecentActivity: async (): Promise<ActivityLog[]> => {
|
|
await new Promise((resolve) => setTimeout(resolve, 600));
|
|
return [
|
|
{
|
|
id: 1,
|
|
user: { name: "John Doe", initials: "JD" },
|
|
action: "Created RFA",
|
|
description: "RFA-001: Concrete Pouring Request",
|
|
createdAt: new Date(Date.now() - 1000 * 60 * 30).toISOString(), // 30 mins ago
|
|
targetUrl: "/rfas/1",
|
|
},
|
|
{
|
|
id: 2,
|
|
user: { name: "Jane Smith", initials: "JS" },
|
|
action: "Approved Correspondence",
|
|
description: "COR-005: Site Safety Report",
|
|
createdAt: new Date(Date.now() - 1000 * 60 * 60 * 2).toISOString(), // 2 hours ago
|
|
targetUrl: "/correspondences/5",
|
|
},
|
|
{
|
|
id: 3,
|
|
user: { name: "Mike Johnson", initials: "MJ" },
|
|
action: "Uploaded Drawing",
|
|
description: "A-101: Ground Floor Plan Rev B",
|
|
createdAt: new Date(Date.now() - 1000 * 60 * 60 * 5).toISOString(), // 5 hours ago
|
|
targetUrl: "/drawings/1",
|
|
},
|
|
];
|
|
},
|
|
|
|
getPendingTasks: async (): Promise<PendingTask[]> => {
|
|
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
return [
|
|
{
|
|
id: 1,
|
|
title: "Review RFA-002",
|
|
description: "Approval required for steel reinforcement",
|
|
daysOverdue: 2,
|
|
url: "/rfas/2",
|
|
priority: "HIGH",
|
|
},
|
|
{
|
|
id: 2,
|
|
title: "Approve Monthly Report",
|
|
description: "January 2025 Progress Report",
|
|
daysOverdue: 0,
|
|
url: "/correspondences/10",
|
|
priority: "MEDIUM",
|
|
},
|
|
];
|
|
},
|
|
};
|