shoc-frontend-new/src/pages/workorders/api.js
Adam Moussa 03b2572773 Add work order detail/view page
- Create WorkOrderViewPage with details grid, status badge, and activity timeline
- Add /workorders/:id route for view, keep /workorders/edit/:id for edit
- List page now navigates to view page instead of edit
- Include comments and commenter fields in API response mapping
2026-04-16 17:41:11 -04:00

65 lines
1.8 KiB
JavaScript

import { workOrderApi } from "../../services/api";
export const getWorkOrders = async (params = {}) => {
try {
const response = await workOrderApi.getAll(params);
const workOrders = response.data || response;
return Array.isArray(workOrders) ? workOrders : [];
} catch (error) {
console.error("Error fetching work orders:", error);
throw error;
}
};
export const getWorkOrderById = async (id) => {
try {
const wo = await workOrderApi.getById(id);
return {
id: wo.id,
workOrderNumber: wo.workerOrderNumber ?? wo.workOrderNumber ?? "",
title: wo.title ?? wo.workerOrderTitle ?? "",
location: wo.location ?? "",
assignedTo: wo.assignee ?? wo.assignedTo ?? "",
dueDate: wo.dueDate ? wo.dueDate.split("T")[0] : "",
createdDate: wo.createdDate ? wo.createdDate.split("T")[0] : "",
description: wo.description ?? "",
priority: wo.priority ?? "",
status: wo.status ?? "Open",
estimatedHours: wo.estimatedHours ?? "",
po: wo.po ?? "",
tt: wo.tt ?? "",
comments: wo.comments ?? [],
};
} catch (error) {
console.error("Error fetching work order:", error);
throw error;
}
};
export const addWorkOrder = async (workOrder) => {
try {
return await workOrderApi.create(workOrder);
} catch (error) {
console.error("Error creating work order:", error);
throw error;
}
};
export const editWorkOrder = async (workOrder) => {
try {
return await workOrderApi.update(workOrder.id, workOrder);
} catch (error) {
console.error("Error updating work order:", error);
throw error;
}
};
export const deleteWorkOrder = async (id) => {
try {
await workOrderApi.delete(id);
return true;
} catch (error) {
console.error("Error deleting work order:", error);
throw error;
}
};