1import{u as Q,r as u,o as W,a as A,j as e,at as T,C as n,a4 as i,d as f,bd as R,a$ as V,N as Y,B as b,_ as Z,a1 as o,a2 as x,P as G,K as q,U as J,ap as X,$ as O,V as ee,W as se,Y as te,Z as ae,L as F,I as le,ao as H,Q as P,q as L}from"./index-CU4TP-S4.js";import{T as ce,a as ne,b as I,c as _}from"./tabs-DGAvBb6E.js";import{W as U}from"./wrench-DmI5MxeC.js";import{F as ie}from"./file-text-BgBpfFOt.js";import{M as re}from"./message-square-B8Z7FTIH.js";import{P as de}from"./play-D8clGXcP.js";import{C as z}from"./clock-BHlwe1eO.js";import{f as w}from"./format-Dvax21W1.js";const $={critical:"bg-red-500 text-white",high:"bg-orange-500 text-white",medium:"bg-yellow-500 text-black",low:"bg-green-500 text-white"},E={open:"bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200",in_progress:"bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200",on_hold:"bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-200",completed:"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200",cancelled:"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"},me={critical:e.jsx(H,{className:"w-4 h-4"}),high:e.jsx(H,{className:"w-4 h-4"}),medium:e.jsx(z,{className:"w-4 h-4"}),low:e.jsx(z,{className:"w-4 h-4"})};function fe(){const{toast:s}=Q(),[l,r]=u.useState(null),[C,k]=u.useState("my-orders"),{data:h=[],isLoading:D}=W({queryKey:["/api/maintenance/work-orders"]}),{data:d}=W({queryKey:["/api/maintenance/work-orders",l],enabled:!!l}),p=A({mutationFn:async({id:t,...c})=>P("PUT",`/api/maintenance/work-orders/${t}`,c),onSuccess:()=>{L.invalidateQueries({queryKey:["/api/maintenance/work-orders"]}),s({title:"Work order updated"})},onError:()=>{s({title:"Failed to update work order",variant:"destructive"})}}),j=A({mutationFn:async({id:t,comment:c})=>P("POST",`/api/maintenance/work-orders/${t}/comments`,{comment:c}),onSuccess:()=>{L.invalidateQueries({queryKey:["/api/maintenance/work-orders",l]}),s({title:"Comment added"})},onError:()=>{s({title:"Failed to add comment",variant:"destructive"})}}),N=h.filter(t=>t.status!=="completed"&&t.status!=="cancelled"),y=h.filter(t=>t.status==="completed"),v=t=>{p.mutate({...t,id:t.id,status:"in_progress"})},m=(t,c,g)=>{p.mutate({...t,id:t.id,status:"completed",completionNotes:c,actualHours:g?parseFloat(g):void 0}),r(null)};return l&&d?e.jsx(oe,{workOrder:d,onBack:()=>r(null),onStart:()=>v(d),onComplete:m,onAddComment:t=>j.mutate({id:l,comment:t}),isUpdating:p.isPending,isAddingComment:j.isPending}):e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsxs("div",{className:"sticky top-0 z-10 bg-background border-b px-4 py-3",children:[e.jsx("h1",{className:"text-xl font-bold","data-testid":"text-page-title",children:"My Work Orders"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Tap an order to view details"})]}),e.jsxs(ce,{value:C,onValueChange:k,className:"px-4 pt-4",children:[e.jsxs(ne,{className:"w-full",children:[e.jsxs(I,{value:"my-orders",className:"flex-1 gap-2","data-testid":"tab-my-orders",children:[e.jsx(U,{className:"w-4 h-4"}),"Active (",N.length,")"]}),e.jsxs(I,{value:"completed",className:"flex-1 gap-2","data-testid":"tab-completed",children:[e.jsx(T,{className:"w-4 h-4"}),"Completed"]})]}),e.jsx(_,{value:"my-orders",className:"mt-4 pb-20",children:D?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"Loading..."}):N.length===0?e.jsxs("div",{className:"text-center py-12",children:[e.jsx(T,{className:"w-12 h-12 mx-auto text-green-500 mb-4"}),e.jsx("p",{className:"text-lg font-medium",children:"All caught up!"}),e.jsx("p",{className:"text-muted-foreground",children:"No active work orders assigned to you"})]}):e.jsx("div",{className:"space-y-3",children:N.map(t=>e.jsx(B,{workOrder:t,onClick:()=>r(t.id)},t.id))})}),e.jsx(_,{value:"completed",className:"mt-4 pb-20",children:y.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"No completed work orders"}):e.jsx("div",{className:"space-y-3",children:y.slice(0,20).map(t=>e.jsx(B,{workOrder:t,onClick:()=>r(t.id)},t.id))})})]})]})}function B({workOrder:s,onClick:l}){return e.jsx(n,{className:"hover-elevate active-elevate-2 cursor-pointer",onClick:l,"data-testid":`card-work-order-${s.id}`,children:e.jsx(i,{className:"p-4",children:e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsxs(f,{className:$[s.priority],children:[me[s.priority],e.jsx("span",{className:"ml-1 capitalize",children:s.priority})]}),e.jsx(f,{className:E[s.status],children:s.status.replace("_"," ")})]}),e.jsx("p",{className:"font-medium text-sm mb-1",children:s.workOrderNumber}),e.jsx("p",{className:"font-medium truncate",children:s.title}),s.assetName&&e.jsxs("p",{className:"text-sm text-muted-foreground mt-1 flex items-center gap-1",children:[e.jsx(U,{className:"w-3 h-3"}),s.assetName]}),s.locationName&&e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1",children:[e.jsx(R,{className:"w-3 h-3"}),s.locationName]}),s.dueDate&&e.jsxs("p",{className:"text-sm text-muted-foreground flex items-center gap-1 mt-1",children:[e.jsx(V,{className:"w-3 h-3"}),"Due: ",w(new Date(s.dueDate),"MMM d, yyyy")]})]}),e.jsx(Y,{className:"w-5 h-5 text-muted-foreground flex-shrink-0"})]})})})}function oe({workOrder:s,onBack:l,onStart:r,onComplete:C,onAddComment:k,isUpdating:h,isAddingComment:D}){var g,S,M;const[d,p]=u.useState(""),[j,N]=u.useState(s.estimatedHours||""),[y,v]=u.useState(!1),[m,t]=u.useState(""),c=()=>{m.trim()&&(k(m),t(""))};return e.jsxs("div",{className:"min-h-screen bg-background pb-32",children:[e.jsxs("div",{className:"sticky top-0 z-10 bg-background border-b px-4 py-3",children:[e.jsx(b,{variant:"ghost",size:"sm",onClick:l,className:"mb-2","data-testid":"button-back",children:"Back to List"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:s.workOrderNumber}),e.jsx("h1",{className:"text-lg font-bold",children:s.title})]}),e.jsx(f,{className:$[s.priority],children:s.priority})]})]}),e.jsx(Z,{className:"h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"p-4 space-y-4",children:[e.jsxs(n,{children:[e.jsx(o,{className:"pb-2",children:e.jsx(x,{className:"text-base",children:"Details"})}),e.jsxs(i,{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Status"}),e.jsx(f,{className:E[s.status],children:s.status.replace("_"," ")})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Type"}),e.jsx("span",{className:"text-sm capitalize",children:s.workOrderType})]}),s.assetName&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Asset"}),e.jsx("span",{className:"text-sm",children:s.assetName})]}),s.locationName&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Location"}),e.jsx("span",{className:"text-sm",children:s.locationName})]}),s.dueDate&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Due Date"}),e.jsx("span",{className:"text-sm",children:w(new Date(s.dueDate),"MMM d, yyyy")})]}),s.estimatedHours&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Estimated Hours"}),e.jsxs("span",{className:"text-sm",children:[s.estimatedHours,"h"]})]}),s.requesterFirstName&&e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:"Requested By"}),e.jsxs("span",{className:"text-sm",children:[s.requesterFirstName," ",s.requesterLastName]})]})]})]}),s.description&&e.jsxs(n,{children:[e.jsx(o,{className:"pb-2",children:e.jsxs(x,{className:"text-base flex items-center gap-2",children:[e.jsx(ie,{className:"w-4 h-4"}),"Description"]})}),e.jsx(i,{children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:s.description})})]}),s.instructions&&e.jsxs(n,{children:[e.jsx(o,{className:"pb-2",children:e.jsx(x,{className:"text-base",children:"Instructions"})}),e.jsx(i,{children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:s.instructions})})]}),s.checklistItems&&s.checklistItems.length>0&&e.jsxs(n,{children:[e.jsx(o,{className:"pb-2",children:e.jsx(x,{className:"text-base",children:"Checklist"})}),e.jsx(i,{children:e.jsx("div",{className:"space-y-2",children:s.checklistItems.map((a,K)=>e.jsxs("div",{className:"flex items-start gap-2 p-2 rounded border",children:[e.jsx("input",{type:"checkbox",checked:a.checked,readOnly:!0,className:"mt-1"}),e.jsx("span",{className:"text-sm",children:a.item})]},K))})})]}),s.partsUsed&&s.partsUsed.length>0&&e.jsxs(n,{children:[e.jsx(o,{className:"pb-2",children:e.jsxs(x,{className:"text-base flex items-center gap-2",children:[e.jsx(G,{className:"w-4 h-4"}),"Parts Used"]})}),e.jsx(i,{children:e.jsx("div",{className:"space-y-2",children:s.partsUsed.map(a=>e.jsxs("div",{className:"flex items-center justify-between p-2 rounded border",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:a.partName}),e.jsx("p",{className:"text-xs text-muted-foreground",children:a.partNumber})]}),e.jsxs("div",{className:"text-right",children:[e.jsxs("p",{className:"text-sm",children:["Qty: ",a.quantity]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["$",Number(a.totalCost||0).toFixed(2)]})]})]},a.id))})})]}),e.jsxs(n,{children:[e.jsx(o,{className:"pb-2",children:e.jsxs(x,{className:"text-base flex items-center gap-2",children:[e.jsx(re,{className:"w-4 h-4"}),"Comments (",((g=s.comments)==null?void 0:g.length)||0,")"]})}),e.jsxs(i,{children:[e.jsxs("div",{className:"space-y-3 mb-4",children:[((S=s.comments)==null?void 0:S.length)===0&&e.jsx("p",{className:"text-sm text-muted-foreground text-center py-4",children:"No comments yet"}),(M=s.comments)==null?void 0:M.map(a=>e.jsxs("div",{className:"p-3 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsxs("span",{className:"text-sm font-medium",children:[a.firstName," ",a.lastName]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:w(new Date(a.createdAt),"MMM d, h:mm a")})]}),e.jsx("p",{className:"text-sm",children:a.comment})]},a.id))]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(q,{placeholder:"Add a comment...",value:m,onChange:a=>t(a.target.value),rows:2,className:"flex-1","data-testid":"input-comment"}),e.jsx(b,{onClick:c,disabled:D||!m.trim(),size:"sm","data-testid":"button-add-comment",children:"Send"})]})]})]})]})}),e.jsxs("div",{className:"fixed bottom-0 left-0 right-0 bg-background border-t p-4 flex gap-3",children:[s.status==="open"&&e.jsxs(b,{className:"flex-1",onClick:r,disabled:h,"data-testid":"button-start-work",children:[e.jsx(de,{className:"w-4 h-4 mr-2"}),"Start Work"]}),s.status==="in_progress"&&e.jsx(e.Fragment,{children:e.jsxs(J,{open:y,onOpenChange:v,children:[e.jsx(X,{asChild:!0,children:e.jsxs(b,{className:"flex-1","data-testid":"button-complete-work",children:[e.jsx(O,{className:"w-4 h-4 mr-2"}),"Complete"]})}),e.jsxs(ee,{children:[e.jsxs(se,{children:[e.jsx(te,{children:"Complete Work Order"}),e.jsx(ae,{children:"Add completion notes and actual time spent"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(F,{htmlFor:"actualHours",children:"Actual Hours Worked"}),e.jsx(le,{id:"actualHours",type:"number",step:"0.5",value:j,onChange:a=>N(a.target.value),"data-testid":"input-actual-hours"})]}),e.jsxs("div",{children:[e.jsx(F,{htmlFor:"completionNotes",children:"Completion Notes"}),e.jsx(q,{id:"completionNotes",value:d,onChange:a=>p(a.target.value),placeholder:"Describe work performed, any issues found...",rows:4,"data-testid":"input-completion-notes"})]}),e.jsx(b,{className:"w-full",onClick:()=>{C(s,d,j),v(!1)},disabled:h,"data-testid":"button-confirm-complete",children:"Mark as Completed"})]})]})]})}),s.status==="completed"&&e.jsx("div",{className:"flex-1 text-center py-3",children:e.jsxs(f,{className:"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200",children:[e.jsx(T,{className:"w-4 h-4 mr-1"}),"Completed"]})})]})]})}export{fe as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.