import { workOrderApi } from "../../services/api"; import { post } from "../../apiUtil"; import { API_URL } from "../../constants"; 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, internalWONumber: wo.internalWONumber ?? "", workOrderNumber: wo.workerOrderNumber ?? wo.workOrderNumber ?? "", title: wo.title ?? wo.workerOrderTitle ?? "", location: wo.location ?? "", locationId: wo.locationId != null ? String(wo.locationId) : "", locationZip: wo.locationZip ?? "", assignedTo: wo.assignee ?? wo.assignedTo ?? "", dueDate: wo.dueDate ? wo.dueDate.split("T")[0] : "", createdDate: wo.createdDate ? wo.createdDate.split("T")[0] : "", createdDateFull: wo.createdDate ?? "", description: wo.description ?? "", priority: wo.priority ?? "", status: wo.status ?? "Open", po: wo.po ?? "", tt: wo.tt ?? "", problem: wo.problem ?? "", trade: wo.trade ?? "", subTrade: wo.subTrade ?? "", vendorNTE: wo.vendorNTE != null ? String(wo.vendorNTE) : "", scheduledDate: wo.scheduledDate ? wo.scheduledDate.split("T")[0] : "", completedDate: wo.completedDate ? wo.completedDate.split("T")[0] : "", source: wo.source ?? "", comments: wo.comments ?? [], auditLog: wo.auditLog ?? [], dispatches: wo.dispatches ?? [], }; } 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, { Id: workOrder.id, WorkerOrderNumber: workOrder.workOrderNumber, WorkerOrderTitle: workOrder.title, Description: workOrder.description, PO: workOrder.po, TT: workOrder.tt, AssignTo: workOrder.assignedTo || null, DueDate: workOrder.dueDate || null, Priority: workOrder.priority || null, Status: workOrder.status, LocationId: workOrder.locationId ? parseInt(workOrder.locationId) : null, Problem: workOrder.problem || null, Trade: workOrder.trade || null, SubTrade: workOrder.subTrade || null, VendorNTE: workOrder.vendorNTE ? parseFloat(workOrder.vendorNTE) : null, ScheduledDate: workOrder.scheduledDate || null, CompletedDate: workOrder.completedDate || null, Source: workOrder.source || null, }); } catch (error) { console.error("Error updating work order:", error); throw error; } }; export const addComment = async (workOrderId, text, commentType = "internal") => { return post(`${API_URL}/WorkOrder/AddCommentJson`, { WorkorderId: workOrderId, Text: text, CommentType: commentType, }); }; export const changeWorkOrderAssignment = async (id, assignTo) => { return post(`${API_URL}/WorkOrder/ChangeAssignment?id=${id}&assignTo=${encodeURIComponent(assignTo || "")}`); }; export const fetchUsers = async () => { const { get: apiGet } = await import("../../apiUtil"); const data = await apiGet(`${API_URL}/User`); return (data || []).map((u) => ({ id: u.id ?? u.Id, name: u.name ?? u.Name ?? u.userName ?? "" })); }; export const fetchDropdownOptions = async (category, parent) => { const { get: apiGet } = await import("../../apiUtil"); let url = `${API_URL}/DropdownOptions/ByCategory/${encodeURIComponent(category)}`; if (parent) url += `?parent=${encodeURIComponent(parent)}`; return (await apiGet(url)) || []; }; export const fetchVendorsDropdown = async (trade, siteZip) => { const { get: apiGet } = await import("../../apiUtil"); const params = new URLSearchParams(); if (trade) params.append("trade", trade); if (siteZip) params.append("siteZip", siteZip); const qs = params.toString(); return (await apiGet(`${API_URL}/Vendor/Dropdown${qs ? `?${qs}` : ""}`)) || []; }; export const fetchTaskTemplates = async () => { const { get: apiGet } = await import("../../apiUtil"); return (await apiGet(`${API_URL}/TaskListTemplate`)) || []; }; export const updateChecklistItem = async (id, isCompleted, completedBy) => { return post(`${API_URL}/WorkOrder/UpdateChecklistItem`, { Id: id, IsCompleted: isCompleted, CompletedBy: completedBy }); }; export const addChecklistItem = async (dispatchId, itemText, workOrderId) => { return post(`${API_URL}/WorkOrder/AddChecklistItem`, { DispatchId: dispatchId, ItemText: itemText, WorkOrderId: workOrderId }); }; export const getDispatchById = async (id) => { const { get: apiGet } = await import("../../apiUtil"); return apiGet(`${API_URL}/WorkOrder/GetDispatch/${id}`); }; export const updateDispatch = async (payload) => { return post(`${API_URL}/WorkOrder/UpdateDispatch`, payload); }; export const addDispatchComment = async (dispatchId, text, sendEmail = true) => { return post(`${API_URL}/WorkOrder/AddDispatchComment`, { DispatchId: dispatchId, Text: text, SendEmail: sendEmail, }); }; export const dispatchToVendor = async (payload) => { return post(`${API_URL}/WorkOrder/DispatchToVendor`, payload); }; export const changeWorkOrderStatus = async (id, status) => { return post(`${API_URL}/WorkOrder/ChangeStatus?id=${id}&status=${encodeURIComponent(status)}`); }; export const deleteWorkOrder = async (id) => { try { await workOrderApi.delete(id); return true; } catch (error) { console.error("Error deleting work order:", error); throw error; } };