1import{r as d,j as e}from"./vendor-react-O1HtssjF.js";import{b as U,d as W,s as X,q as y,e as D,A as q,S as x,c as J,I,B as c,a as j,M as Y}from"./index-DE-2a8lD.js";import{u as P,b as S}from"./vendor-query-C57Ujfuk.js";import{i as Z}from"./authUtils-BpmAmtz3.js";import{L as b}from"./label-_lWEXx3t.js";import{C as ee}from"./checkbox-DJtd-_nm.js";import{P as ae,a as se,b as te}from"./popover-Dg6xe2Y0.js";import{S as z}from"./Select--eowR-J1.js";import{m as ie,P as ne,L as re,n as ce,o as le}from"./vendor-icons-2dxAfxR_.js";import"./vendor-radix-Cn4zZLa9.js";import"./vendor-datefns-RsZNnTnu.js";import"./vendor-openai-PX4_LG7y.js";(function(){try{var i=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},o=new i.Error().stack;o&&(i._sentryDebugIds=i._sentryDebugIds||{},i._sentryDebugIds[o]="a2c29259-8757-4ba0-a49a-0d725adaf8fb",i._sentryDebugIdIdentifier="sentry-dbid-a2c29259-8757-4ba0-a49a-0d725adaf8fb")}catch{}})();const N={clientId:"",planId:"",startDate:new Date().toISOString().split("T")[0],billingDay:1};function be(){const{isAuthenticated:i,isLoading:o}=U(),{toast:n}=W(),B=X(),[A,K]=d.useState(""),[Q,v]=d.useState(!1),[r,l]=d.useState(N),[u,g]=d.useState([]),F=d.useRef(!1);d.useEffect(()=>{!o&&!i&&(n({title:"Acesso negado",description:"Você precisa fazer login para acessar esta página.",variant:"destructive"}),setTimeout(()=>{window.location.href="/login"},500))},[i,o,n]);const{data:m,isLoading:R}=P({queryKey:["/api/admin/subscriptions"],enabled:i}),{data:C}=P({queryKey:["/api/admin/clients"],enabled:i}),{data:t}=P({queryKey:["/api/admin/plans"],enabled:i});d.useEffect(()=>{t&&t.length>0&&!F.current&&(g(t.map(a=>a.id)),F.current=!0)},[t]);const w=S({mutationFn:async a=>(await D("POST","/api/admin/subscriptions",a)).json(),onSuccess:()=>{y.invalidateQueries({queryKey:["/api/admin/subscriptions"]}),y.invalidateQueries({queryKey:["/api/admin/invoices"]}),n({title:"Assinatura criada com sucesso!"}),v(!1),l(N)},onError:a=>{if(Z(a)){n({title:"Sessão expirada",description:"Fazendo login novamente...",variant:"destructive"}),setTimeout(()=>{window.location.href="/login"},500);return}n({title:"Erro ao criar assinatura",description:a.message,variant:"destructive"})}}),L=S({mutationFn:async a=>D("PATCH",`/api/admin/subscriptions/${a}/cancel`),onSuccess:()=>{y.invalidateQueries({queryKey:["/api/admin/subscriptions"]}),n({title:"Assinatura cancelada com sucesso!"})},onError:a=>{n({title:"Erro ao cancelar assinatura",description:a.message,variant:"destructive"})}}),k=S({mutationFn:async a=>D("PATCH",`/api/admin/subscriptions/${a}/activate`),onSuccess:()=>{y.invalidateQueries({queryKey:["/api/admin/subscriptions"]}),n({title:"Assinatura ativada com sucesso!"})},onError:a=>{n({title:"Erro ao ativar assinatura",description:a.message,variant:"destructive"})}}),M=()=>{if(!r.clientId||!r.planId||!r.startDate){n({title:"Campos obrigatórios",description:"Cliente, plano e data de inÃcio são obrigatórios.",variant:"destructive"});return}w.mutate(r)},V=a=>{g(s=>s.includes(a)?s.filter(p=>p!==a):[...s,a])},O=()=>{t&&g(t.map(a=>a.id))},_=()=>{g([])},h=m==null?void 0:m.filter(a=>{var E,T;const s=A.toLowerCase(),p=((E=a.client)==null?void 0:E.name.toLowerCase().includes(s))||((T=a.plan)==null?void 0:T.name.toLowerCase().includes(s)),f=u.length===0||a.planId&&u.includes(a.planId);return p&&f}),H=a=>a?new Date(a).toLocaleDateString("pt-BR"):"-",$=a=>new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL"}).format(a/100),G=a=>{switch(a){case"ativa":return e.jsx(j,{variant:"success",children:"Ativa"});case"cancelada":return e.jsx(j,{variant:"danger",children:"Cancelada"});case"suspensa":return e.jsx(j,{variant:"warning",children:"Suspensa"});default:return e.jsx(j,{children:a})}};return o?e.jsx(q,{children:e.jsxs("div",{className:"space-y-6",children:[e.jsx(x,{className:"h-10 w-64"}),e.jsx(x,{className:"h-96"})]})}):i?e.jsxs(q,{children:[e.jsx("div",{className:"v2-page-head",children:e.jsxs("div",{className:"v2-page-head-title",children:[e.jsx("h1",{"data-testid":"text-page-title",children:"Assinaturas"}),e.jsx("div",{className:"v2-sub",children:"Gerencie as assinaturas dos clientes"})]})}),e.jsxs("div",{className:"v2-card",children:[e.jsxs("div",{className:"v2-card-head",children:[e.jsxs("div",{children:[e.jsx("h3",{children:"Assinaturas"}),e.jsx("div",{className:"v2-sub",children:J((m==null?void 0:m.length)||0,"assinatura cadastrada","assinaturas cadastradas")})]}),e.jsxs("div",{className:"v2-row v2-gap-2",style:{flexWrap:"wrap",alignItems:"center"},children:[e.jsx("div",{style:{width:240}
1,children:e.jsx(I,{type:"search",placeholder:"Buscar assinaturas...",value:A,onChange:a=>K(a.target.value),"data-testid":"input-search-subscriptions"})}),e.jsxs(ae,{children:[e.jsx(se,{asChild:!0,children:e.jsxs(c,{variant:"secondary",leftIcon:e.jsx(ie,{className:"h-4 w-4"}),"data-testid":"button-plan-filter",children:["Filtrar Planos",u.length>0&&t&&u.length<t.length&&e.jsx(j,{size:"sm",style:{marginLeft:6},children:u.length})]})}),e.jsx(te,{className:"w-56",align:"start",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{className:"text-sm font-medium",children:"Planos"}),e.jsxs("div",{className:"flex gap-1",children:[e.jsx(c,{variant:"ghost",size:"sm",onClick:O,"data-testid":"button-select-all-plans",children:"Todos"}),e.jsx(c,{variant:"ghost",size:"sm",onClick:_,"data-testid":"button-clear-plans",children:"Limpar"})]})]}),e.jsx("div",{className:"space-y-2",children:t==null?void 0:t.map(a=>e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(ee,{id:`plan-filter-${a.id}`,checked:u.includes(a.id),onCheckedChange:()=>V(a.id),"data-testid":`checkbox-plan-${a.slug}`}),e.jsx("label",{htmlFor:`plan-filter-${a.id}`,className:"text-sm cursor-pointer flex-1",children:a.name})]},a.id))})]})})]}),e.jsx(c,{leftIcon:e.jsx(ne,{className:"h-4 w-4"}),onClick:()=>v(!0),"data-testid":"button-new-subscription",children:"Nova Assinatura"}),e.jsxs(Y,{open:Q,onClose:()=>{v(!1),l(N)},title:"Nova Assinatura",size:"md",footer:e.jsxs(e.Fragment,{children:[e.jsx(c,{variant:"secondary",onClick:()=>{v(!1),l(N)},"data-testid":"button-cancel-create",children:"Cancelar"}),e.jsx(c,{onClick:M,disabled:w.isPending,"data-testid":"button-save-subscription",children:w.isPending?e.jsxs(e.Fragment,{children:[e.jsx(re,{className:"mr-2 h-4 w-4 animate-spin"}),"Salvando..."]}):"Criar Assinatura"})]}),children:[e.jsx("p",{className:"v2-sub",style:{margin:"0 0 8px"},children:"Vincule um cliente a um plano"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"Cliente *"}),e.jsxs(z,{value:r.clientId,onChange:a=>l(s=>({...s,clientId:a.target.value})),"aria-label":"Cliente","data-testid":"select-subscription-client",children:[e.jsx("option",{value:"",disabled:!0,children:"Selecione um cliente"}),C==null?void 0:C.map(a=>e.jsx("option",{value:a.id,children:a.name},a.id))]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"Plano *"}),e.jsxs(z,{value:r.planId,onChange:a=>l(s=>({...s,planId:a.target.value})),"aria-label":"Plano","data-testid":"select-subscription-plan",children:[e.jsx("option",{value:"",disabled:!0,children:"Selecione um plano"}),t==null?void 0:t.map(a=>e.jsxs("option",{value:a.id,children:[a.name," - ",$(a.price||0)]},a.id))]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"startDate",children:"Data de InÃcio *"}),e.jsx(I,{id:"startDate",type:"date",value:r.startDate,onChange:a=>l(s=>({...s,startDate:a.target.value})),"data-testid":"input-subscription-start-date"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"billingDay",children:"Dia do Vencimento"}),e.jsx(I,{id:"billingDay",type:"number",min:1,max:28,value:r.billingDay,onChange:a=>l(s=>({...s,billingDay:parseInt(a.target.value)||1})),"data-testid":"input-subscription-billing-day"})]})]})]})]})]})]}),R?e.jsxs("div",{className:"space-y-3",children:[e.jsx(x,{className:"h-16"}),e.jsx(x,{className:"h-16"}),e.jsx(x,{className:"h-16"})]}):e.jsx("div",{className:"v2-t-wrap",children:e.jsxs("table",{className:"v2-clean",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Cliente"}),e.jsx("th",{children:"Plano"}),e.jsx("th",{children:"Valor"}),e.jsx("th",{children:"InÃcio"}),e.jsx("th",{children:"Vencimento"}),e.jsx("th",{children:"Status"}),e.jsx("th",{style:{textAlign:"right"},children:"Ações"})]})}),e.jsx("tbody",{children:(h==null?void 0:h.length)===0?e.jsx("tr",{children:e.jsx("td",{colSpan:7,style:{textAlign:"center",padding:"32px 16px",color:"var(--v2-text-muted)",cursor:"default"},children:"Nenhuma assinatura encontrada"})}):h==null?void 0:h.map(a=>{var s,p,f;return e.jsxs("tr",{"data-testid":`row-subscription-${a.id}`,style:{cursor:"default"},children:[e.jsx("td",{className:"font-medium","data-testid":`text-subscription-client-${a.id}`,children:((s=a.client)==null?void 0:s.name)||"-"}),e.jsx("td",{"data-testid":`text-subscription-plan-${a.id}`,children:((p=a.plan)==null?void 0:p.name)||"-"}),e.jsx("td",{"data-testid":`text-subscription-price-${a.id}`,children:$(((f=a.plan)==null?void 0:f.price)||0)}),e.jsx("td",{"data-testid":`text-subscription-start-${a.id}`,children:H(a.startDate)}),e.jsxs("td",{"data-testid":`text-subscription-billing-${a.id}`,children:["Dia ",a.billingDay]}),e.jsx("td",{"data-testid":`badge-subscription-status-${a.id}`,children:G(a.status)}),e.jsx("td",{style:{textAlign:"right"},children:e.jsx("div",{className:"flex items-center justify-end gap-1",children:a.status==="cancelada"?e.jsx(c,{variant:"ghost",size:"sm",className:"v2-btn-icon",onClick:()=>k.mutate(a.id),disabled:k.isPending,"data-testid":`button-activate-subscription-${a.id}`,children:e.jsx(ce,{className:"h-4 w-4 text-green-600 dark:text-green-400"})}):e.jsx(c,{variant:"ghost",size:"sm",className:"v2-btn-icon",onClick:async()=>{await B({title:"Cancelar assinatura",message:"Deseja realmente cancelar esta assinatura?",confirmLabel:"Cancelar assinatura",destructive:!0})&&L.mutate(a.id)},disabled:L.isPending,"data-testid":`button-cancel-subscription-${a.id}`,children:e.jsx(le,{className:"h-4 w-4 text-destructive"})})})})]},a.id)})})]})})]})]}):null}export{be as default}; 2//# sourceMappingURL=subscriptions-BeixWNcG.js.map
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.