1import{aH as B,r as P,au as g,aG as T,j as a,K as k,C as l,b as u,a8 as D,W as d,a9 as R,aa as F,$ as L,a0 as M,a2 as O,B as n,_ as H,I as c,Q as f}from"./index-CwRyDTkN.js";import{T as G,a as U,b as v,c as j}from"./tabs-Dl0aRh_n.js";import{c as A,m as K,D as V}from"./useReferrals-DF8sbe3a.js";import{S as W}from"./shield-alert-C0Nv_DK_.js";const Y=o=>{var r;return((r=V.find(p=>p.value===o))==null?void 0:r.label)??o},z={normal:"bg-muted text-foreground",watch:"bg-amber-500/15 text-foreground",review:"bg-amber-500/25 text-foreground",high_risk:"bg-destructive/15 text-foreground",critical:"bg-destructive/25 text-foreground"},ae=()=>{const o=B(),[r,p]=P.useState({}),[m,$]=P.useState({}),{data:y=[],isLoading:N}=g({queryKey:["admin-referral-disputes"],queryFn:async()=>{const{data:e,error:s}=await c.from("referral_disputes").select("*, referral_connections(service_type, location_text, match_score, message_count, appointment_scheduled, contact_released_at, family_user_id), pros(display_name)").order("created_at",{ascending:!1}).limit(100);if(s)throw s;return e??[]}}),{data:E=[],isLoading:Q}=g({queryKey:["admin-integrity-scores"],queryFn:async()=>{const{data:e,error:s}=await c.from("provider_integrity_scores").select("*, pros(display_name)").order("score",{ascending:!1}).limit(100);if(s)throw s;return e??[]}}),{data:b=[]}=g({queryKey:["admin-referral-balances"],queryFn:async()=>{const{data:e,error:s}=await c.from("provider_referral_balances").select("*, pros(display_name)").order("amount_due",{ascending:!1}).limit(100);if(s)throw s;return e??[]}}),t=T({mutationFn:async e=>{const{data:s,error:i}=await c.functions.invoke("referral-decide-dispute",{body:e});if(i)throw i;if(s!=null&&s.error)throw new Error(s.error);return s},onSuccess:()=>{o.invalidateQueries({queryKey:["admin-referral-disputes"]}),o.invalidateQueries({queryKey:["admin-referral-balances"]}),f({title:"Decision recorded"})},onError:e=>f({title:"Could not record decision",description:e.message,variant:"destructive"})}),x=T({mutationFn:async({proId:e,patch:s})=>{const{error:i}=await c.from("provider_integrity_scores").update(s).eq("pro_id",e);if(i)throw i},onSuccess:()=>{o.invalidateQueries({queryKey:["admin-integrity-scores"]}),f({title:"Provider status updated"})}});return a.jsxs("div",{className:"space-y-8 p-6",children:[a.jsxs("header",{className:"space-y-2",children:[a.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:"Referral billing & integrity"}),a.jsx("p",{className:"text-muted-foreground",children:"Review outcome reports, issue non-cash referral credits, and monitor referral behaviour patterns."})]}),a.jsxs(G,{defaultValue:"disputes",children:[a.jsxs(U,{children:[a.jsx(v,{value:"disputes",children:"Outcome reports"}),a.jsx(v,{value:"integrity",children:"Integrity"}),a.jsx(v,{value:"balances",children:"Balances"})]}),a.jsxs(j,{value:"disputes",className:"space-y-6 pt-6",children:[N&&a.jsx(k,{className:"h-5 w-5 animate-spin text-muted-foreground","aria-hidden":"true"}),!N&&y.length===0&&a.jsx(l,{children:a.jsx(u,{className:"py-10 text-center text-muted-foreground",children:"No outcome reports yet."})}),y.map(e=>{var s,i,w,C,q,S,I;return a.jsxs(l,{children:[a.jsxs(D,{className:"gap-2 pb-3",children:[a.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[a.jsx(d,{variant:e.status==="pending"?"secondary":"default",children:e.status.replace(/_/g," ")}),e.auto_classification&&a.jsxs("span",{className:"text-sm text-muted-foreground",children:["Suggested: ",String(e.auto_classification).replace(/_/g," ")]})]}),a.jsxs(R,{className:"text-lg",children:[((s=e.pros)==null?void 0:s.display_name)??"Provider"," â ",Y(e.reason_code)]}),a.jsxs(F,{children:[[(i=e.referral_connections)==null?void 0:i.service_type,(w=e.referral_connections)==null?void 0:w.location_text].filter(Boolean).join(" · ")," · ","filed ",new Date(e.created_at).toLocaleDateString()]})]}),a.jsxs(u,{className:"space-y-4",children:[e.explanation&&a.jsxs("p",{className:"text-sm",children:["â",e.explanation,"â"]}),a.jsxs("div",{className:"grid gap-2 rounded-lg border bg-muted/40 p-4 text-sm sm:grid-cols-2",children:[a.jsxs("span",{children:["Messages exchanged: ",((C=e.referral_connections)==null?void 0:C.message_count)??0]}),a.jsxs("span",{children:["Appointment scheduled: ",(q=e.referral_connections)!=null&&q.appointment_scheduled?"Yes":"No"]}),a.jsxs("span",{children:["Contact released: ",(S=e.referral_connections)!=null&&S.contact_released_at?new Date(e.referral_connections.contact_released_at).toLocaleDateString():"â"]}),a.jsxs("span",{children:["Family outcome: ",((I=e.evidence_snapshot)==null?void 0:I.family_outcome)??"not reported"]})]}),e.status==="pending"||e.status==="needs_info"?a.jsxs("div",{className:"space-y-3",children:[a.jsxs("div",{className:"grid gap-3 sm:grid-cols-[160px_1fr]",children:[a.jsxs("div",{className:"space-y-1",children:[a.jsx(L,{htmlFor:`credit-${e.id}`,children:"Partial credit (coins)"}),a.jsx(M,{id:`credit-${e.id}
1`,type:"number",min:0,value:m[e.id]??"",onChange:h=>$(_=>({..._,[e.id]:h.target.value}))})]}),a.jsxs("div",{className:"space-y-1",children:[a.jsx(L,{htmlFor:`notes-${e.id}`,children:"Internal notes"}),a.jsx(O,{id:`notes-${e.id}`,rows:2,value:r[e.id]??"",onChange:h=>p(_=>({..._,[e.id]:h.target.value}))})]})]}),a.jsxs("div",{className:"flex flex-wrap gap-2",children:[a.jsx(n,{className:"min-h-11",disabled:t.isPending,onClick:()=>t.mutate({disputeId:e.id,decision:"approved",adminNotes:r[e.id]}),children:"Approve full credit"}),a.jsx(n,{variant:"outline",className:"min-h-11",disabled:t.isPending||!m[e.id],onClick:()=>t.mutate({disputeId:e.id,decision:"partially_approved",creditCoins:Number(m[e.id]),adminNotes:r[e.id]}),children:"Partially approve"}),a.jsx(n,{variant:"outline",className:"min-h-11",disabled:t.isPending,onClick:()=>t.mutate({disputeId:e.id,decision:"needs_info",adminNotes:r[e.id]}),children:"Request explanation"}),a.jsx(n,{variant:"destructive",className:"min-h-11",disabled:t.isPending,onClick:()=>t.mutate({disputeId:e.id,decision:"denied",adminNotes:r[e.id]}),children:"Deny credit"})]})]}):a.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.credited_coins?`Referral credit issued: ${A(e.credited_coins)}`:"No credit issued",e.admin_notes?` · ${e.admin_notes}`:""]})]})]},e.id)})]}),a.jsxs(j,{value:"integrity",className:"space-y-4 pt-6",children:[Q&&a.jsx(k,{className:"h-5 w-5 animate-spin text-muted-foreground","aria-hidden":"true"}),E.map(e=>{var s;return a.jsxs(l,{className:e.score>=50?"border-destructive/30":void 0,children:[a.jsxs(D,{className:"gap-2 pb-3",children:[a.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[a.jsxs(d,{className:z[e.band]??"",variant:"secondary",children:[e.score," â ",String(e.band).replace(/_/g," ")]}),e.monitored&&a.jsx(d,{variant:"outline",children:"Monitored"}),e.manual_credit_approval_required&&a.jsx(d,{variant:"outline",children:"Manual credit approval"}),e.opportunities_paused&&a.jsx(d,{variant:"destructive",children:"Opportunities paused"})]}),a.jsxs(R,{className:"flex items-center gap-2 text-lg",children:[e.score>=50?a.jsx(W,{className:"h-5 w-5 text-destructive","aria-hidden":"true"}):a.jsx(H,{className:"h-5 w-5 text-muted-foreground","aria-hidden":"true"}),((s=e.pros)==null?void 0:s.display_name)??"Provider"]}),a.jsxs(F,{children:[e.connected_referrals," connected referrals · ",e.dispute_count," outcome reports · ",e.approved_credit_count," credited ·"," ",e.denied_dispute_count," denied · ",e.customer_contradictions," family contradictions"]})]}),a.jsxs(u,{className:"flex flex-wrap gap-2",children:[a.jsx(n,{variant:"outline",className:"min-h-11",onClick:()=>x.mutate({proId:e.pro_id,patch:{monitored:!e.monitored}}),children:e.monitored?"Remove monitoring":"Place on monitored status"}),a.jsx(n,{variant:"outline",className:"min-h-11",onClick:()=>x.mutate({proId:e.pro_id,patch:{manual_credit_approval_required:!e.manual_credit_approval_required}}),children:e.manual_credit_approval_required?"Allow automatic credits":"Require manual credit approval"}),a.jsx(n,{variant:e.opportunities_paused?"default":"destructive",className:"min-h-11",onClick:()=>x.mutate({proId:e.pro_id,patch:{opportunities_paused:!e.opportunities_paused}}),children:e.opportunities_paused?"Restore normal access":"Pause new opportunities"})]})]},e.pro_id)})]}),a.jsx(j,{value:"balances",className:"pt-6",children:a.jsx(l,{children:a.jsxs(u,{className:"divide-y pt-6",children:[b.map(e=>{var s;return a.jsxs("div",{className:"flex flex-wrap items-baseline justify-between gap-2 py-3 text-sm",children:[a.jsxs("div",{children:[a.jsx("p",{className:"font-medium",children:((s=e.pros)==null?void 0:s.display_name)??e.pro_id}),a.jsx("p",{className:"text-muted-foreground",children:String(e.state).replace(/_/g," ")})]}),a.jsxs("div",{className:"text-right",children:[a.jsxs("p",{className:"font-semibold",children:[K(e.amount_due)," due"]}),a.jsxs("p",{className:"text-muted-foreground",children:[A(e.future_credit_coins)," future credit · ",K(e.lifetime_paid)," paid to date"]})]})]},e.pro_id)}),b.length===0&&a.jsx("p",{className:"py-6 text-sm text-muted-foreground",children:"No provider balances yet."})]})})})]})]})};export{ae 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.