PageSourceSearch

https://clinobavisita.lovable.app/assets/AuditoriasSeguranca-DkKkp9ZE.js

js clinobavisita.lovable.app collected 2026-10-03 03:26:46 UTC 35,157 bytes, 2 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/fieldVisitPdf-DCMnK8aE.js","assets/vendor-pdf-C7_rzZkG.js","assets/pdfExport-Cq9agwu5.js","assets/simulacro-D7W_xhNU.js","assets/clinoba-logo-D5oIZ6L4.js","assets/attachmentUrl-Cc0QxZez.js","assets/vendor-ui-7a2g4EPQ.js","assets/vendor-supabase-CmEeeXwu.js","assets/index-BRqlr9pz.js","assets/vendor-charts-BA2datHr.js","assets/vendor-query-C7Sh1Wuq.js","assets/vendor-react-wPwDAbZm.js","assets/index-CAzRSY9_.css","assets/riskAssessment-DzWue9Gt.js","assets/riskAssessmentDefaults-C9idxbQ-.js"])))=>i.map(i=>d[i]);
2import{_ as rs}from"./vendor-pdf-C7_rzZkG.js";import{r as d,j as e}from"./vendor-ui-7a2g4EPQ.js";import{u as ls}from"./useUrlSyncedId-B8WtcvNm.js";import{A as os}from"./AppLayout-gxgHxLD7.js";import{C as We,a as Ge}from"./card-dydI4wdZ.js";import{B as ce}from"./badge-flWvuATz.js";import{B as u}from"./button-IWipDNMr.js";import{I as M}from"./input-DDXvkULH.js";import{L as b}from"./label-CCYmj4WJ.js";import{T as ds,a as cs,b as Fe,c as Ee}from"./tabs-MsazapdW.js";import{T as Qe,a as He,b as ve,c as E,d as Ke,e as I}from"./table-z0ci0TOl.js";import{D as me,a as ue,b as he,c as xe,e as $e}from"./dialog-CaoKy1hf.js";import{S as ae,a as ie,b as ne,c as re,d as z}from"./select-DFzfCdPR.js";import{T as Je}from"./textarea-Chi2Y5XV.js";import{S as Ie}from"./separator-ChFDpiTA.js";import{u as Ae,a as ms,b as us,c as hs,d as xs,e as Xe,f as Oe}from"./useSafetyAudits-Cs-gECSr.js";import{u as ps,T as Le}from"./TablePaginationFooter-CHbVS_s1.js";import{u as js,w as gs}from"./useEntities-CH-3j2yg.js";import{u as fs}from"./useTecnicos-CfzgvUkQ.js";import{a as Ye,u as _s}from"./useEntityAreas-DoRJWoxD.js";import{i as vs,j as ys,b as Re,L as bs,c as ze,h as Ns,R as Cs,p as Ss,D as ws,d as As,F as ks,e as Ts,f as Ds,g as Ps,E as Fs}from"./RiskAuditLibraryWizard-C35KZd1x.js";import{S as Es}from"./StorageImage-C7cD-E_x.js";import{A as Is,a as Os,b as Ls,c as Rs,d as zs,e as Vs,f as qs,g as Ms}from"./alert-dialog-B1TS7z-r.js";import{u as Bs,b as Ze,c as es}from"./vendor-query-C7Sh1Wuq.js";import{b as ke,g as Us,X as Ws,u as Gs}from"./index-BRqlr9pz.js";import{C as Qs}from"./chevron-up-3e2jIu6C.js";import{C as Hs}from"./chevron-down-B2ONYjXh.js";import{R as Ks}from"./rotate-ccw-DZoR-5o0.js";import{P as de}from"./plus-LvPZ1H8E.js";import{P as ss}from"./pencil-BsfvxuxK.js";import{C as Ve}from"./camera-DTA_Y65x.js";import{T as Te}from"./trash-2-DdhoFaF7.js";import{C as qe}from"./circle-check-BVuaRlc8.js";import{E as $s}from"./eye-off-CSIlexFA.js";import{S as Js}from"./shield-BUy3YEGg.js";import{F as Me}from"./footprints-BdymFxQQ.js";import{L as Xs}from"./library-BjCkKOZm.js";import{S as Ys}from"./settings-OrS0YH2i.js";import{S as Zs}from"./search-CTiyquGI.js";import{C as et}from"./scroll-area-C82cbuBi.js";import{C as st}from"./copy-Cxy46ndl.js";import{E as tt}from"./eye-CxJy_7zl.js";import{H as at}from"./history-ovspmE6O.js";import{D as it}from"./download-DhVe0c4Z.js";import"./vendor-supabase-CmEeeXwu.js";import"./vendor-react-wPwDAbZm.js";import"./wifi-off-DQHND7A_.js";import"./vendor-date-BjUT7hhi.js";import"./sheet-yE9VdCms.js";import"./loader-circle-iRnjTJNH.js";import"./popover-BV-bzWh8.js";import"./chevron-right-YDxwak9y.js";import"./check-Sze_G5rf.js";import"./pt-pv7w5cIY.js";import"./building-2-DYhs9epK.js";import"./mail-DuqP7ufE.js";import"./sparkles-CC4s_vgX.js";import"./briefcase-B3Q3DxP-.js";import"./clipboard-list-DKfIBgTx.js";import"./stethoscope-IUcUMgxB.js";import"./book-open-uB6Hzx6-.js";import"./clock-C_pnHwX8.js";import"./user-BJd_oNUv.js";import"./triangle-alert-CGZj8GUT.js";import"./file-text-BU7RK35p.js";import"./circle-check-big-SYctJUov.js";import"./dropdown-menu-DrpYavd5.js";import"./circle-Bleajexe.js";import"./attachmentUrl-Cc0QxZez.js";import"./skeleton-DftqOdu3.js";import"./map-pin-BarqtCFL.js";import"./settings-2-DPzPSJCo.js";import"./chevron-left-C7k5JJlX.js";import"./command-Cd4lBM_d.js";import"./riskAssessment-DzWue9Gt.js";import"./useIndustrias-CZOWGCq0.js";import"./vendor-charts-BA2datHr.js";const De=Us();function nt(l){return Bs({queryKey:["dismissed-checklist-items",l],enabled:!!l,queryFn:async()=>{const{data:o,error:t}=await De.from("field_visit_dismissed_checklist_items").select("*").eq("audit_id",l);if(t)throw t;return o}})}function rt(){const l=Ze();return es({mutationFn:async o=>{const{error:t}=await De.from("field_visit_dismissed_checklist_items").insert(o);if(t)throw t},onSuccess:(o,t)=>l.invalidateQueries({queryKey:["dismissed-checklist-items",t.audit_id]}),onError:()=>ke.error("Erro ao marcar como não aplicável")})}function lt(){const l=Ze();return es({mutationFn:async({id:o,audit_id:t})=>{const{error:x}=await De.from("field_visit_dismissed_checklist_items").delete().eq("id",o);if(x)throw x;return t},onSuccess:o=>l.invalidateQueries({queryKey:["dismissed-checklist-items",o]}),onError:()=>ke.error("Erro ao restaurar item")})}const G="__other__",ot=[{value:"compliant",label:"Conforme"},{value:"pending",label:"Não conforme"},{value:"in_progress",label:"Em Curso"},{value:"resolved",label:"Resolvido"}],dt={compliant:"bg-green-100 text-green-800 border-green-300 focus:ring-green-400",resolved:"bg-green-100 text-green-800 border-green-300 focus:ring-green-400",in_progress:"bg-orange-100 text-orange-800 border-orange-300 focus:ring-orange-400",pending:"bg-red-100 text-red-800 border-red-300 focus:ring-red-400"}
2,Se={description:"",recommended_action:"",responsible:"",responsibleOther:"",recommended_deadline:"",deadlineOther:""};function ct({auditId:l,area:o,allFindings:t,entityIndustria:x}){const r=t.filter(s=>s.area_id===o.id),{data:p=[]}=vs(o.area_type_id===null?void 0:o.area_type_id,x),{data:S=[]}=ys(),{saveFinding:j,deleteFinding:V}=Ae(),{data:Y=[]}=Re("responsible"),{data:O=[]}=Re("deadline"),{data:B=[]}=nt(l),Q=rt(),H=lt(),[v,K]=d.useState(""),[k,Z]=d.useState(!1),[$,U]=d.useState(new Set),[ee,T]=d.useState(!1),[g,w]=d.useState(null),[h,c]=d.useState(Se),[L,D]=d.useState(null),[q,a]=d.useState(null),[y,N]=d.useState(!1),J=d.useRef(null),[se,pe]=d.useState(null),je=d.useRef(null),[m,R]=d.useState(null),ye=()=>{const s=m;s&&(R(null),V.mutate(s.id),ke("Achado apagado",{description:s.description,action:{label:"Desfazer",onClick:()=>{const{id:n,created_at:_,...W}=s;j.mutate(W)}},duration:8e3}))},ge=s=>{D(s),a(s?URL.createObjectURL(s):null),s&&N(!1)},C=()=>{g&&q&&!L&&N(!0),D(null),a(null)},be=()=>{w(null),c(Se),D(null),a(null),N(!1),T(!0)},fe=s=>{w(s.id);const n=Y.some(W=>W.label===s.responsible),_=O.some(W=>W.label===s.recommended_deadline);c({description:s.description||"",recommended_action:s.recommended_action||"",responsible:s.responsible?n?s.responsible:G:"",responsibleOther:s.responsible&&!n?s.responsible:"",recommended_deadline:s.recommended_deadline?_?s.recommended_deadline:G:"",deadlineOther:s.recommended_deadline&&!_?s.recommended_deadline:""}),D(null),a(s.photo_url||null),N(!1),T(!0)},_e=s=>{w(null),c({description:s.title,recommended_action:s.default_recommended_action||"",responsible:s.default_responsible||"",responsibleOther:"",recommended_deadline:s.default_deadline||"",deadlineOther:""}),D(null),a(null),N(!1),T(!0)},i=s=>{c({description:s.title,recommended_action:s.default_recommended_action||"",responsible:s.default_responsible||"",responsibleOther:"",recommended_deadline:s.default_deadline||"",deadlineOther:""})},P=s=>{c(n=>({...n,description:s}))},A=s=>r.some(n=>n.description===s.title)||$.has(s.title),te=async s=>{if(!A(s)){U(n=>new Set(n).add(s.title));try{await j.mutateAsync({audit_id:l,area_id:o.id,description:s.title,recommended_action:s.default_recommended_action||null,responsible:s.default_responsible||null,recommended_deadline:s.default_deadline||null,status:"compliant",sort_order:r.length}),setTimeout(()=>U(n=>{const _=new Set(n);return _.delete(s.title),_}),8e3)}catch{U(n=>{const _=new Set(n);return _.delete(s.title),_})}}},le=s=>({id:g||void 0,audit_id:l,area_id:o.id,description:h.description||"Conforme",recommended_action:h.recommended_action||null,responsible:h.responsible===G?h.responsibleOther:h.responsible||null,recommended_deadline:h.recommended_deadline===G?h.deadlineOther:h.recommended_deadline||null,status:s,photo_url:y?null:void 0,...g?{}:{sort_order:r.length}}),X=async s=>{try{const n=await j.mutateAsync(le(s)),_=g||n?.id;if(L&&_){const W=await ze(L,"safety-audit",_);W&&await j.mutateAsync({id:_,audit_id:l,photo_url:W})}T(!1),w(null),c(Se),D(null),a(null),N(!1)}catch{}},oe=s=>{pe(s),je.current?.click()},Ne=async s=>{const n=se;if(pe(null),!(!s||!n))try{const _=await ze(s,"safety-audit",n);_&&await j.mutateAsync({id:n,audit_id:l,photo_url:_})}catch{}},f=B.filter(s=>s.area_id===o.id),ts=s=>f.some(n=>n.item_title===s.title),as=s=>{Q.mutate({audit_id:l,area_id:o.id,item_title:s.title})},Ce=v.trim().toLowerCase(),is=s=>!Ce||[s.title,s.pergunta_verificacao,s.categoria].filter(Boolean).some(n=>n.toLowerCase().includes(Ce)),Pe=p.filter(s=>is(s)&&!ts(s)),ns=s=>{const n=A(s);return e.jsxs("div",{className:`rounded-lg border p-3 ${n?"bg-muted/50 opacity-70":""}`,children:[e.jsx("p",{className:"font-medium text-sm",children:s.title}),s.pergunta_verificacao&&e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5",children:s.pergunta_verificacao}),n?e.jsx(ce,{variant:"outline",className:"mt-2 border-green-500 text-green-700",children:"Registado"}):e.jsxs("div",{className:"flex gap-2 mt-2",children:[e.jsxs(u,{size:"sm",variant:"outline",className:"h-8 gap-1 text-xs flex-1",onClick:()=>te(s),disabled:j.isPending,children:[e.jsx(qe,{className:"w-3.5 h-3.5"})," Conforme"]}),e.jsxs(u,{size:"sm",variant:"outline",className:"h-8 gap-1 text-xs flex-1 text-destructive border-destructive/40",onClick:()=>_e(s),children:[e.jsx(de,{className:"w-3.5 h-3.5"})," Não conforme"]}),e.jsx(u,{size:"sm",variant:"ghost",className:"h-8 gap-1 text-xs text-muted-foreground",title:"Não aplicável a esta empresa",onClick:()=>as(s),disabled:Q.isPending,children:e.jsx($s,{className:"w-3.5 h-3.5"})})]})]},s.id)};return e.jsxs("div",{className:"space-y-5",children:[e.jsx("input",{ref:je,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:s=>Ne(s.target.files?.[0]||null)}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-sm font-semibold mb-2",children:"Checklist sugerido para este espaço"}),p.length>
24&&e.jsx(M,{value:v,onChange:s=>K(s.target.value),placeholder:"Pesquisar checklist sugerido...",className:"mb-2"}),Pe.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:Ce?`Sem resultados para "${v}".`:"Sem itens de checklist padrão configurados para este tipo de espaço."}):e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:Pe.map(ns)}),f.length>0&&e.jsxs("div",{className:"mt-3",children:[e.jsxs(u,{variant:"ghost",size:"sm",className:"h-8 text-xs gap-1 text-muted-foreground",onClick:()=>Z(s=>!s),children:[k?e.jsx(Qs,{className:"w-3.5 h-3.5"}):e.jsx(Hs,{className:"w-3.5 h-3.5"}),k?"Esconder":"Ver"," não aplicáveis (",f.length,")"]}),k&&e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2 mt-2",children:f.map(s=>e.jsxs("div",{className:"rounded-lg border p-3 flex items-center justify-between gap-2 opacity-70",children:[e.jsx("p",{className:"text-sm",children:s.item_title}),e.jsxs(u,{variant:"ghost",size:"sm",className:"h-8 gap-1 text-xs shrink-0",onClick:()=>H.mutate({id:s.id,audit_id:l}),disabled:H.isPending,children:[e.jsx(Ks,{className:"w-3.5 h-3.5"})," Restaurar"]})]},s.id))})]})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("h4",{className:"text-sm font-semibold",children:["Achados deste espaço (",r.length,")"]}),e.jsxs(u,{size:"sm",onClick:be,className:"gap-1.5",children:[e.jsx(de,{className:"w-4 h-4"})," Acrescentar"]})]}),r.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Ainda sem achados neste espaço."}):e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:r.map(s=>e.jsx(We,{children:e.jsxs(Ge,{className:"p-3 space-y-1.5",children:[e.jsx("button",{type:"button",className:"text-left w-full",onClick:()=>fe(s),children:e.jsx("span",{className:"font-medium text-sm",children:s.description})}),s.recommended_action&&e.jsx("p",{className:"text-xs text-muted-foreground",children:s.recommended_action}),e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground flex-wrap",children:[s.responsible&&e.jsxs("span",{children:["Resp.: ",s.responsible]}),s.recommended_deadline&&e.jsxs("span",{children:["Prazo: ",s.recommended_deadline]})]}),s.photo_url&&e.jsx(Es,{src:s.photo_url,linkToFull:!0,alt:"",className:"h-14 w-14 object-cover rounded border"}),e.jsxs("div",{className:"flex items-center gap-2 pt-1 flex-wrap",children:[e.jsxs(ae,{value:s.status,onValueChange:n=>j.mutate({id:s.id,audit_id:l,status:n}),children:[e.jsx(ie,{className:`h-8 text-xs w-32 font-medium ${dt[s.status]||""}`,children:e.jsx(ne,{})}),e.jsx(re,{children:ot.map(n=>e.jsx(z,{value:n.value,children:n.label},n.value))})]}),e.jsxs(u,{variant:"ghost",size:"sm",className:"h-8 gap-1 text-xs",onClick:()=>fe(s),children:[e.jsx(ss,{className:"w-3.5 h-3.5"})," Editar"]}),e.jsxs(u,{variant:"ghost",size:"sm",className:"h-8 gap-1 text-xs",onClick:()=>oe(s.id),children:[e.jsx(Ve,{className:"w-3.5 h-3.5"})," ",s.photo_url?"Trocar foto":"Foto"]}),e.jsxs(u,{variant:"ghost",size:"sm",className:"h-8 gap-1 text-xs text-destructive",onClick:()=>R(s),children:[e.jsx(Te,{className:"w-3.5 h-3.5"})," Apagar"]})]})]})},s.id))})]}),e.jsx(me,{open:ee,onOpenChange:T,children:e.jsxs(ue,{className:"max-w-2xl max-h-[85vh] overflow-y-auto overscroll-contain",children:[e.jsx(he,{children:e.jsx(xe,{children:g?"Editar achado":"Acrescentar achado"})}),!g&&e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"Pesquisar na biblioteca de checklist"}),e.jsx(bs,{items:S,getId:s=>s.id,getLabel:s=>s.title,getSublabel:s=>[s.area_type?.name||"Geral",s.categoria].filter(Boolean).join(" · "),onSelect:i,onCreateNew:P,placeholder:"Pesquisar item já definido...",createLabel:"Criar achado novo"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Escolhe um já existente (de qualquer tipo de espaço) ou escreve um novo abaixo."})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{className:"text-xs",children:"Descrição"}),e.jsx(Je,{value:h.description,onChange:s=>c(n=>({...n,description:s.target.value})),rows:3,placeholder:"Descrição...",className:"text-base"})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{className:"text-xs",children:"Ação Recomendada"}),e.jsx(M,{value:h.recommended_action,onChange:s=>c(n=>({...n,recommended_action:s.target.value})),className:"h-11 text-base"})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"Responsável"}),e.jsxs(ae,{value:h.responsible,onValueChange:s=>c(n=>({...n,responsible:s})),children:[e.jsx(ie,{className:"h-11",children:e.jsx(ne,{placeholder:"Responsável"})}),e.jsxs(re,{children:[Y.map(s=>e.jsx(z,{value:s.label,children:s.label},s.id)),e.jsx(z,{value:G,children:"Outro..."})]})]}),h.responsible===G&&e.jsx(M,{className:"h-11 text-base mt-1.5",placeholder:"Escrever...",value:h.responsibleOther,onChange:s=>c(n=>({...n,responsibleOther:s.target.value}))})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"Prazo"}),e.jsxs(ae,{value:h.recommended_deadline,onValueChange:s=>c(n=>({...n,recommended_deadline:s})),children:[e.jsx(ie,{className:"h-11",children:e.jsx(ne,{placeholder:"Prazo"})}),e.jsxs(re,{children:[O.map(s=>e.jsx(z,{value:s.label,children:s.label},s.id)),e.jsx(z,{value:G,children:"Outro..."})]})]}),h.recommended_deadline===G&&e.jsx(M,{className:"h-11 text-base mt-1.5",placeholder:"Escrever...",value:h.deadlineOther,onChange:s=>c(n=>({...n,deadlineOther:s.target.value}))})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{className:"text-xs",children:"Foto (opcional)"}),e.jsx("input",{ref:J,type:"file",accept:"image/*",capture:"environment",className:"hidden",onChange:s=>ge(s.target.files?.[0]||null)}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(u,{type:"button",variant:"outline",onClick:()=>J.current?.click(),className:"gap-1.5 h-11",children:[e.jsx(Ve,{className:"w-4 h-4"})," ",L||q?"Trocar foto":"Tirar/anexar foto"]}),q&&e.jsxs("div",{className:"relative",children:[e.jsx("img",{src:q,alt:"",className:"h-11 w-11 object-cover rounded border"}),e.jsx("button",{type:"button",onClick:C,className:"absolute -top-1.5 -right-1.5 bg-background border rounded-full p-0.5","aria-label":"Remover foto",children:e.jsx(Ws,{className:"w-3 h-3"})})]})]})]})]}),e.jsxs($e,{className:"flex-wrap gap-2",children:[e.jsx(u,{variant:"outline",onClick:()=>T(!1),children:"Cancelar"}),e.jsxs(u,{variant:"outline",onClick:()=>X("compliant"),disabled:j.isPending,className:"gap-1.5",children:[e.jsx(qe,{className:"w-4 h-4"})," Marcar conforme"]}),e.jsxs(u,{onClick:()=>X(g&&r.find(s=>
2s.id===g)?.status||"pending"),disabled:!h.description.trim()||j.isPending,className:"gap-1.5",children:[e.jsx(de,{className:"w-4 h-4"})," ",g?"Guardar":"Adicionar"]})]})]})}),e.jsx(Is,{open:!!m,onOpenChange:s=>!s&&R(null),children:e.jsxs(Os,{children:[e.jsxs(Ls,{children:[e.jsx(Rs,{children:"Apagar achado?"}),e.jsxs(zs,{children:['Tem a certeza que quer apagar "',m?.description,'"? Pode desfazer logo a seguir.']})]}),e.jsxs(Vs,{children:[e.jsx(qs,{children:"Cancelar"}),e.jsx(Ms,{onClick:ye,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"Apagar"})]})]})})]})}const Be={draft:{label:"Rascunho",class:"bg-muted text-muted-foreground"},in_progress:{label:"Em Curso",class:"bg-blue-500/10 text-blue-600"},completed:{label:"Concluída",class:"bg-green-500/10 text-green-600"}},mt={compliant:"Conforme",pending:"Pendente",in_progress:"Em Curso",resolved:"Resolvido"},ut={compliant:"bg-green-100 text-green-800",resolved:"bg-green-100 text-green-800",in_progress:"bg-orange-100 text-orange-800",pending:"bg-red-100 text-red-800"};function Va(){const{user:l}=Gs(),[o,t]=d.useState("audits"),[x,r]=d.useState(""),[p,S]=d.useState(""),[j,V]=d.useState(1),[Y,O]=d.useState(!1),[B,Q]=d.useState("audit"),[H,v]=ls("open"),[K,k]=d.useState(!1),[Z,$]=d.useState(!1),U=ps(i=>{V(1),S(i)},350),ee=i=>{r(i),U(i)},T=i=>{t(i),V(1)},g=o==="safewalks"?"safewalk":"audit",{data:w,isLoading:h}=ms({search:p||void 0,type:g},j),c=w?.rows??[],L=w?.total??0,D=Math.max(1,Math.ceil(L/25)),{data:q}=us(),{data:a=[]}=js(),{data:y=[]}=fs(),{createAudit:N,deleteAudit:J}=Ae(),se=hs(),pe=Ye(),je=xs(),[m,R]=d.useState({entity_id:"",audit_date:new Date().toISOString().split("T")[0],location:"",auditor_user_id:l?.id||""}),{data:ye}=gs(m.entity_id||void 0),{data:ge=[]}=Xe(m.entity_id?{entityId:m.entity_id,type:B}:void 0),C=d.useMemo(()=>m.entity_id&&ge.sort((i,P)=>i.audit_date<P.audit_date?1:-1)[0]||null,[ge,m.entity_id,B]),be=async()=>{if(!C)return;const i=await se.mutateAsync({sourceId:C.id,entityId:m.entity_id});O(!1),R({entity_id:"",audit_date:new Date().toISOString().split("T")[0],location:"",auditor_user_id:l?.id||""}),v(i);const P=a.find(A=>A.id===m.entity_id)?.name||"";Ss("safety_audit",i,P,P)},fe=async()=>{if(!m.entity_id)return;const i=a.find(f=>f.id===m.entity_id),P=y.find(f=>f.id===m.auditor_user_id),A=i?.addresses?.find(f=>f.is_primary)||i?.addresses?.[0],te=A?[A.street,A.postal_code,A.city].filter(Boolean).join(", "):void 0,le=i?.identifiers?.find(f=>f.is_primary)?.identifier_value||i?.identifiers?.find(f=>["nif_pt","nipc"].includes(f.identifier_type))?.identifier_value||i?.identifiers?.[0]?.identifier_value,X=ye,oe=await N.mutateAsync({entity_id:m.entity_id,type:B,audit_date:m.audit_date,location:m.location,entity_name:i?.name,entity_address:C?.entity_address||te,entity_nif:C?.entity_nif||X?.nif||le,entity_cae:C?.entity_cae||X?.cae||i?.cae,entity_activity:C?.entity_activity||X?.industria||i?.industria,entity_workers_count:C?.entity_workers_count??void 0,entity_contact_name:C?.entity_contact_name||X?.nome_responsavel||i?.responsible_name||void 0,entity_contact_role:C?.entity_contact_role||void 0,auditor_user_id:m.auditor_user_id||void 0,auditor_name:P?.nome,created_by:l?.id,status:"draft"}),Ne=m.entity_id;O(!1),R({entity_id:"",audit_date:new Date().toISOString().split("T")[0],location:"",auditor_user_id:l?.id||""}),oe?.id&&(v(oe.id),pe.mutateAsync(Ne).then(f=>{je.mutate({auditId:oe.id,areaId:f,areaTypeId:null,entityIndustria:i?.industria})}))},_e=async(i,P)=>{const A=await se.mutateAsync({sourceId:i,entityId:P});v(A);const te=a.find(le=>le.id===P)?.name||"";return{newId:A,label:te,entityName:te}};return e.jsxs(os,{children:[e.jsxs("div",{className:"max-w-7xl mx-auto space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(Js,{className:"h-6 w-6"}),"Auditorias de Segurança"]}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Auditorias e SafeWalks"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(u,{onClick:()=>{Q("audit"),O(!0)},className:"gap-1.5",children:[e.jsx(de,{className:"h-4 w-4"})," Nova Auditoria"]}),e.jsxs(u,{variant:"outline",onClick:()=>{Q("safewalk"),O(!0)},className:"gap-1.5",children:[e.jsx(Me,{className:"h-4 w-4"})," Novo SafeWalk"]}),e.jsxs(u,{variant:"outline",onClick:()=>$(!0),className:"gap-1.5",children:[e.jsx(Xs,{className:"h-4 w-4"})," Biblioteca"]}),e.jsx(u,{variant:"outline",size:"icon",onClick:()=>k(!0),title:"Configurações","aria-label":"Definições",children:e.jsx(Ys,{className:"h-4 w-4"})})]})]}),e.jsx("div",{className:"flex items-center gap-3",children:e.jsxs("div",{className:"relative flex-1",children:[e.jsx(Zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(M,{placeholder:"Pesquisar...",value:x,onChange:i=>ee(i.target.value),className:"pl-9"})]})}),e.jsxs(ds,{value:o,onValueChange:T,children:[e.jsxs(cs,{children:[e.jsxs(Fe,{value:"audits",className:"gap-1.5",children:[e.jsx(et,{className:"h-4 w-4"}),"Auditorias"," ",e.jsx(ce,{variant:"secondary",className:"ml-1",children:q?.audit??"…"})]}),e.jsxs(Fe,{value:"safewalks",className:"gap-1.5",children:[e.jsx(Me,{className:"h-4 w-4"}),"SafeWalks"," ",e.jsx(ce,{variant:"secondary",className:"ml-1",children:q?.safewalk??"…"})]})]}),e.jsxs(Ee,{value:"audits",className:"mt-4 space-y-4",children:[e.jsx(Ue,{audits:c,onSelect:v,onDelete:i=>J.mutate(i),onDuplicate:_e}),e.jsx(Le,{page:j,totalPages:D,total:L,isLoading:h,onPageChange:V})]}),e.jsxs(Ee,{value:"safewalks",className:"mt-4 space-y-4",children:[e.jsx(Ue,{audits:c,onSelect:v,onDelete:i=>J.mutate(i),onDuplicate:_e}),e.jsx(Le,{page:j,totalPages:D,total:L,isLoading:h,onPageChange:V})]})]})]}),e.jsx(me,{open:Y,onOpenChange:O,children:e.jsxs(ue,{className:"max-w-4xl w-[95vw] max-h-[90vh] overflow-y-auto",children:[e.jsx(he,{children:e.jsx(xe,{children:B==="audit"?"Nova Auditoria de Segurança":"Novo SafeWalk"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{children:"Entidade *"}),e.jsxs(ae,{value:m.entity_id,onValueChange:i=>R({...m,entity_id:i}),children:[e.jsx(ie,{children:e.jsx(ne,{placeholder:"Selecionar entidade"})}),e.jsx(re,{children:a.map(i=>e.jsx(z,{value:i.id,children:i.name},i.id))})]})]}),e.jsxs("div",{children:[e.jsx(b,{children:"Data"}
2),e.jsx(M,{type:"date",value:m.audit_date,onChange:i=>R({...m,audit_date:i.target.value})})]}),e.jsxs("div",{children:[e.jsx(b,{children:"Localidade"}),e.jsx(M,{value:m.location||"",onChange:i=>R({...m,location:i.target.value})})]}),e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{children:"Técnico/a Responsável"}),e.jsxs(ae,{value:m.auditor_user_id,onValueChange:i=>R({...m,auditor_user_id:i}),children:[e.jsx(ie,{children:e.jsx(ne,{placeholder:"Selecionar"})}),e.jsx(re,{children:y.map(i=>e.jsx(z,{value:i.id,children:i.nome},i.id))})]})]})]}),C&&e.jsxs("div",{className:"rounded-md border p-3 bg-muted/30 text-sm space-y-2",children:[e.jsxs("p",{children:["Já existe ",B==="audit"?"uma auditoria":"um safewalk"," anterior desta empresa (",new Date(C.audit_date).toLocaleDateString("pt-PT"),"). Podes começar a duplicar os dados dessa visita e só atualizar o que mudou."]}),e.jsxs(u,{size:"sm",variant:"secondary",onClick:be,disabled:se.isPending,className:"gap-1.5",children:[e.jsx(st,{className:"h-3.5 w-3.5"}),se.isPending?"A duplicar...":"Duplicar a anterior"]})]})]}),e.jsxs($e,{children:[e.jsx(u,{variant:"outline",onClick:()=>O(!1),children:"Cancelar"}),e.jsx(u,{onClick:fe,disabled:N.isPending||!m.entity_id,children:C?"Começar em branco":"Criar"})]})]})}),e.jsx(xt,{auditId:H,onClose:()=>v(null)}),e.jsx(me,{open:K,onOpenChange:k,children:e.jsxs(ue,{className:"max-w-lg",children:[e.jsx(he,{children:e.jsx(xe,{children:"Configurações"})}),e.jsx(Ns,{})]})}),e.jsx(Cs,{open:Z,onClose:()=>$(!1)})]})}function Ue({audits:l,onSelect:o,onDelete:t,onDuplicate:x}){return l.length===0?e.jsx("p",{className:"text-center text-muted-foreground py-8",children:"Sem registos"}):e.jsx(We,{children:e.jsx(Ge,{className:"p-0",children:e.jsxs(Qe,{children:[e.jsx(He,{children:e.jsxs(ve,{children:[e.jsx(E,{children:"Data"}),e.jsx(E,{children:"Entidade"}),e.jsx(E,{children:"Localidade"}),e.jsx(E,{children:"Técnico/a"}),e.jsx(E,{children:"Estado"}),e.jsx(E,{className:"w-[130px]"})]})}),e.jsx(Ke,{children:l.map(r=>e.jsxs(ve,{className:"cursor-pointer",onClick:()=>o(r.id),children:[e.jsx(I,{className:"text-sm",children:new Date(r.audit_date).toLocaleDateString("pt-PT")}),e.jsx(I,{className:"font-medium text-sm",children:r.entity?.name||r.entity_name}),e.jsx(I,{className:"text-sm text-muted-foreground",children:r.location}),e.jsx(I,{className:"text-sm",children:r.auditor?.nome||r.auditor_name}),e.jsx(I,{children:e.jsx(ce,{variant:"outline",className:Be[r.status]?.class,children:Be[r.status]?.label})}),e.jsx(I,{children:e.jsxs("div",{className:"flex gap-1",onClick:p=>p.stopPropagation(),children:[e.jsx(u,{variant:"ghost",size:"icon",className:"h-7 w-7",onClick:()=>o(r.id),"aria-label":"Ver",children:e.jsx(tt,{className:"h-3.5 w-3.5"})}),x&&e.jsx(ws,{type:"safety_audit",duplicate:()=>x(r.id,r.entity_id)}),e.jsx(u,{variant:"ghost",size:"icon",className:"h-7 w-7 text-destructive",onClick:()=>t(r.id),"aria-label":"Eliminar",children:e.jsx(Te,{className:"h-3.5 w-3.5"})})]})})]},r.id))})]})})})}const ht=[{key:"dados",label:"Dados Gerais"},{key:"locais",label:"Locais"},{key:"conclusao",label:"Conclusão"}];function xt({auditId:l,onClose:o}){const{data:t,isLoading:x}=Oe(l),{updateAudit:r}=Ae(),{data:p=[]}=_s(t?.entity_id),S=Ye(),{data:j={}}=As("safety_audit",l??void 0),[V,Y]=d.useState(null),[O,B]=d.useState(""),[Q,H]=d.useState(!1),[v,K]=d.useState(null),[k,Z]=d.useState(0),[$,U]=d.useState(!1),{data:ee=[]}=Xe(t?{entityId:t.entity_id,type:t.type}:void 0),T=d.useMemo(()=>t&&[...ee].sort((N,J)=>N.audit_date<J.audit_date?1:-1).filter(N=>N.id!==t.id&&N.audit_date<=t.audit_date)[0]?.id||null,[ee,t]),{data:g}=Oe($?T??void 0:void 0),w=t?.type==="audit",h=w?"Auditoria de Segurança":"SafeWalk";d.useEffect(()=>{t?.entity_id&&S.mutate(t.entity_id)},[t?.entity_id]),d.useEffect(()=>{Z(0),K(null)},[l]);const c=(a,y)=>{r.mutate({id:t.id,[a]:y}),Y(null)},L=(a,y)=>{r.mutate({id:t.id,[a]:y})},D=(t?.findings||[]).reduce((a,y)=>(y.area_id&&(a[y.area_id]=(a[y.area_id]||0)+1),a),{}),q=async()=>{const{exportFieldVisitSafetyAuditPdf:a}=await rs(async()=>{const{exportFieldVisitSafetyAuditPdf:y}=await import("./fieldVisitPdf-DCMnK8aE.js");return{exportFieldVisitSafetyAuditPdf:y}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]));
2await a(t,t.findings||[],p)};return e.jsxs(e.Fragment,{children:[e.jsx(ks,{open:!!l,onClose:o,onFinish:o,title:t?`${h} - ${t.entity?.name||t.entity_name}`:h,steps:ht,activeStep:k,onStepChange:Z,headerActions:t&&e.jsxs(e.Fragment,{children:[T&&e.jsxs(u,{variant:"outline",size:"sm",onClick:()=>U(!0),className:"gap-1.5",children:[e.jsx(at,{className:"h-3.5 w-3.5"}),w?"Auditoria anterior":"SafeWalk anterior"]}),e.jsxs(ae,{value:t.status,onValueChange:a=>r.mutate({id:t.id,status:a}),children:[e.jsx(ie,{className:"w-36",children:e.jsx(ne,{})}),e.jsxs(re,{children:[e.jsx(z,{value:"draft",children:"Rascunho"}),e.jsx(z,{value:"in_progress",children:"Em Curso"}),e.jsx(z,{value:"completed",children:"Concluída"})]})]}),e.jsxs(u,{variant:"outline",size:"sm",onClick:q,className:"gap-1.5",children:[e.jsx(it,{className:"h-3.5 w-3.5"}),"PDF"]})]}),children:x||!t?e.jsx("div",{className:"py-8 text-center text-muted-foreground text-sm",children:"A carregar…"}):e.jsxs(e.Fragment,{children:[k===0&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3 text-sm",children:[e.jsx(F,{label:"N.º",value:t.audit_number||"",onSave:a=>c("audit_number",a)}),e.jsx(F,{label:"Localidade",value:t.location||"",onSave:a=>c("location",a)})]}),e.jsx(Ie,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Identificação da Empresa"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsx(F,{label:"Morada",value:t.entity_address||"",onSave:a=>c("entity_address",a)}),e.jsx(F,{label:"NIF",value:t.entity_nif||"",onSave:a=>c("entity_nif",a)}),e.jsx(F,{label:"CAE",value:t.entity_cae||"",onSave:a=>c("entity_cae",a)}),e.jsx(F,{label:"Atividade",value:t.entity_activity||"",onSave:a=>c("entity_activity",a)}),e.jsx(F,{label:"N.º Trabalhadores",value:String(t.entity_workers_count||""),onSave:a=>c("entity_workers_count",parseInt(a)||null)}),e.jsx(F,{label:"Contacto",value:t.entity_contact_name||"",onSave:a=>c("entity_contact_name",a)}),e.jsx(F,{label:"Cargo Contacto",value:t.entity_contact_role||"",onSave:a=>c("entity_contact_role",a)})]})]}),e.jsx(Ie,{}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:"Equipa Auditora"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsx(F,{label:"Nome do Auditor",value:t.auditor_name||"",onSave:a=>c("auditor_name",a)}),e.jsx(F,{label:"Função do Auditor",value:t.auditor_function||"",onSave:a=>c("auditor_function",a)})]})]})]}),k===1&&e.jsxs("div",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-2",children:w?"Não Conformidades / Ações":"Constatações SafeWalk"}),v?e.jsx(Ts,{visitType:"safety_audit",visitId:t.id,area:v,status:j[v.id]||"pending",onBack:()=>K(null),onFirstEdit:()=>{t.status==="draft"&&r.mutate({id:t.id,status:"in_progress"})},children:e.jsx(ct,{auditId:t.id,area:v,allFindings:t.findings||[],entityIndustria:t?.entity?.industria})}):e.jsx(Ds,{areas:p,progress:j,itemCounts:D,onSelectArea:K,onManageAreas:()=>H(!0)})]}),k===2&&e.jsxs("div",{className:"space-y-6",children:[w?e.jsxs(e.Fragment,{children:[e.jsx(pt,{label:"Recomendações Adicionais",items:t.recommendations||[],onSave:a=>L("recommendations",a)}),e.jsxs("div",{children:[e.jsx(b,{className:"text-sm font-semibold",children:"Acidentes de Trabalho"}),e.jsx(we,{value:t.accidents_text||"",onSave:a=>c("accidents_text",a),placeholder:"Texto sobre acidentes..."})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-sm font-semibold",children:"Conclusão"}),e.jsx(we,{value:t.conclusion_text||"",onSave:a=>c("conclusion_text",a),placeholder:"Texto de conclusão..."})]})]}):e.jsxs("div",{children:[e.jsx(b,{className:"text-sm font-semibold",children:"Conclusão"}),e.jsx(we,{value:t.conclusion_text||"",onSave:a=>c("conclusion_text",a),placeholder:"Texto de conclusão..."})]}),e.jsx(Ps,{entityId:t.entity_id,visitType:"safety_audit",visitId:t.id})]})]})}),e.jsx(me,{open:$,onOpenChange:U,children:e.jsxs(ue,{className:"max-w-4xl max-h-[85vh] overflow-y-auto",children:[e.jsx(he,{children:e.jsxs(xe,{children:[w?"Auditoria anterior":"SafeWalk anterior"," —"," ",g?.audit_date&&new Date(g.audit_date).toLocaleDateString("pt-PT")]})}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"Só de leitura — consulta para referência, não é possível editar aqui."}),(g?.findings||[]).length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Sem achados guardados nesta visita."}):e.jsxs(Qe,{children:[e.jsx(He,{children:e.jsxs(ve,{children:[e.jsx(E,{children:"Descrição"}),e.jsx(E,{children:"Ação Recomendada"}),e.jsx(E,{children:"Responsável"}),e.jsx(E,{children:"Prazo"}),e.jsx(E,{children:"Estado"})]})}),e.jsx(Ke,{children:(g?.findings||[]).map(a=>e.jsxs(ve,{children:[e.jsx(I,{className:"text-xs",children:a.description}),e.jsx(I,{className:"text-xs",children:a.recommended_action||"—"}),e.jsx(I,{className:"text-xs",children:a.responsible||"—"}),e.jsx(I,{className:"text-xs",children:a.recommended_deadline||"—"}),e.jsx(I,{className:"text-xs",children:e.jsx(ce,{variant:"outline",className:`border-0 ${ut[a.status]||""}`,children:mt[a.status]||a.status})})]},a.id))})]})]})}),t?.entity_id&&e.jsx(me,{open:Q,onOpenChange:H,children:e.jsxs(ue,{className:"max-w-lg",children:[e.jsx(he,{children:e.jsxs(xe,{children:["Áreas — ",t.entity?.name||t.entity_name]})}
2),e.jsx(Fs,{entityId:t.entity_id})]})})]})}function F({label:l,value:o,onSave:t}){const[x,r]=d.useState(!1),[p,S]=d.useState(o);return e.jsxs("div",{children:[e.jsx(b,{className:"text-[10px] text-muted-foreground",children:l}),x?e.jsx(M,{className:"h-7 text-xs",value:p,onChange:j=>S(j.target.value),onBlur:()=>{t(p),r(!1)},onKeyDown:j=>{j.key==="Enter"&&(t(p),r(!1))},autoFocus:!0}):e.jsx("p",{className:"text-sm cursor-pointer hover:bg-muted/50 rounded px-1 py-0.5 min-h-[24px] group flex items-center gap-1.5",onClick:()=>{S(o),r(!0)},children:o?e.jsxs(e.Fragment,{children:[e.jsx("span",{children:o}),e.jsx(ss,{className:"h-3 w-3 text-muted-foreground opacity-0 group-hover:opacity-100 shrink-0"})]}):e.jsx("span",{className:"text-muted-foreground italic",children:"Clique para editar"})})]})}function we({value:l,onSave:o,placeholder:t,rows:x=4}){const[r,p]=d.useState(l);return d.useEffect(()=>{p(l)},[l]),e.jsx(Je,{className:"mt-1",rows:x,value:r,onChange:S=>p(S.target.value),onBlur:()=>{r!==l&&o(r)},placeholder:t})}function pt({label:l,items:o,onSave:t}){const[x,r]=d.useState("");return e.jsxs("div",{children:[e.jsx(b,{className:"text-sm font-semibold",children:l}),e.jsx("ul",{className:"mt-1 space-y-1",children:o.map((p,S)=>e.jsxs("li",{className:"flex items-center gap-2 text-sm",children:[e.jsx("span",{className:"flex-1",children:p}),e.jsx(u,{variant:"ghost",size:"icon",className:"h-6 w-6 text-destructive",onClick:()=>t(o.filter((j,V)=>V!==S)),"aria-label":"Eliminar",children:e.jsx(Te,{className:"h-3 w-3"})})]},S))}),e.jsxs("div",{className:"flex gap-2 mt-2",children:[e.jsx(M,{className:"h-7 text-xs",placeholder:"Adicionar item...",value:x,onChange:p=>r(p.target.value),onKeyDown:p=>{p.key==="Enter"&&x.trim()&&(t([...o,x.trim()]),r(""))}}),e.jsx(u,{size:"sm",className:"h-7",onClick:()=>{x.trim()&&(t([...o,x.trim()]),r(""))},disabled:!x.trim(),children:e.jsx(de,{className:"h-3 w-3"})})]})]})}export{Va 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.