1var _=(l,d,e)=>new Promise((h,t)=>{var u=r=>{try{o(e.next(r))}catch(m){t(m)}},a=r=>{try{o(e.throw(r))}catch(m){t(m)}},o=r=>r.done?h(r.value):Promise.resolve(r.value).then(u,a);o((e=e.apply(l,d)).next())});import{r as p,j as s}from"./react-vendor-BEafpyAm.js";import{s as j,o as g,u as q,b as F,O as B,W as L,C,e as w,f as T,h as M,i as k,j as f,t as y,B as R}from"./index-o6Y4MR8m.js";import{R as A,a as K}from"./radio-group-khovEMV1.js";import"./crypto-vendor-DdVgyv-Y.js";import"./react-query-vendor-BhLAuXR4.js";import"./recharts-vendor-C3BwgIm8.js";import"./icons-vendor-DBipXAa1.js";import"./supabase-vendor-DUUDoC-1.js";import"./date-fns-core-p4ULazqZ.js";import"./date-fns-locales-Csbs7Iu2.js";class z{getSubscriptionPlans(){return _(this,null,function*(){try{const{data:d,error:e}=yield j.from("subscription_plans").select("*").eq("is_active",!0).order("price_per_user",{ascending:!0});return{plans:(d||[]).map(t=>{var u,a,o,r;return{id:t.id,name:t.name,description:(u=t.description)!=null?u:void 0,price_per_user:t.price_per_user,max_users:(a=t.max_users)!=null?a:void 0,features:(o=t.features)!=null?o:{},is_active:(r=t.is_active)!=null?r:!1,created_at:t.created_at}}),error:e}}catch(d){return g.error("Erro ao buscar planos:",d),{plans:[],error:d}}})}}const G=new z,rs=({company:l,userType:d})=>{const{t:e,language:h}=q(),[t,u]=p.useState([]),[a,o]=p.useState(null),[r,m]=p.useState(""),[I,N]=p.useState(!0),[S,P]=p.useState(!1),{toast:b}=F(),v=B(d,L),D=i=>i.plan_key?`subscription.plans.${i.plan_key}`:{Básico:"subscription.plans.basic",Profissional:"subscription.plans.professional",Enterprise:"subscription.plans.enterprise",basic:"subscription.plans.basic",professional:"subscription.plans.professional",enterprise:"subscription.plans.enterprise"}[i.name]||`subscription.plans.${i.name}`,O=i=>{var n;return i.description_key?`subscription.plans.${i.description_key}`:i.description&&i.description.includes("_description")?`subscription.plans.${i.description}`:{"Monitoramento básico de bem-estar":"subscription.plans.basicDescription","Monitoramento avançado com insights":"subscription.plans.professionalDescription","Solução completa para grandes empresas":"subscription.plans.enterpriseDescription",basic_description:"subscription.plans.basicDescription",professional_description:"subscription.plans.professionalDescription",enterprise_description:"subscription.plans.enterpriseDescription"}[(n=i.description)!=null?n:""]||`subscription.plans.${i.description}`},U=i=>`subscription.features.${i.replace(/_([a-z])/g,(n,x)=>x.toUpperCase())}`,E=p.useCallback(()=>_(null,null,function*(){N(!0);try{const{plans:i,error:c}=yield G.getSubscriptionPlans();c?(g.error("Erro ao carregar planos:",c),b({title:e("message.error"),description:e("subscription.loadPlansError"),variant:"destructive"})):u(i);const{data:n,error:x}=yield j.from("company_subscriptions").select(` 2 *, 3 subscription_plans (*) 4 `).eq("company_id",l.id).eq("is_active",!0).single();!x&&n&&(o(n),m(n.plan_id))}catch(i){g.error("Erro inesperado ao carregar dados de assinatura:",i),b({title:e("message.error"),description:e("subscription.loadUnexpectedError"),variant:"destructive"})}finally{N(!1)}}),[l.id,e,b]);p.useEffect(()=>{E()},[E]);const $=()=>_(null,null,function*(){if(!(!r||!v)){P(!0);try{if(a&&(yield j.from("company_subscriptions").update({is_active:!1}).eq("id",a.id)),!t.find(x=>x.id===r))throw new Error(e("subscription.planNotFound"));const{data:c,error:n}=yield j.from("company_subscriptions").insert({company_id:l.id,plan_id:r,licenses_purchased:l.max_licenses,start_date:new Date().toISOString(),end_date:new Date(Date.now()+720*60*60*1e3).toISOString(),is_active:!0}).select().single();if(n)throw n;o(c),b({title:e("message.success"),description:e("subscription.updateSuccess")})}catch(i){g.error("Erro ao atualizar assinatura:",i),b({title:e("message.error"),description:i.message||e("subscription.updateError"),variant:"destructive"})}finally{P(!1)}}});return I?s.jsx("div",{className:"flex items-center justify-center py-8",children:s.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-equilybrium-navy"})}):s.jsxs("div",{className:"space-y-6",children:[a&&s.jsxs(C,{children:[s.jsxs(w,{children:[s.jsx(T,{children:e("subscription.currentSubscription")}),s.jsx(M,{children:e("subscription.currentSubscriptionDesc")})]}),s.jsx(k,{children:s.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[s.jsxs("div",{children:[s.jsx(f,{className:"text-sm font-medium text-gray-500",children:e("subscription.plan")}),s.jsx("p",{className:"text-sm font-medium",children:a.subscription_plans?e(D(a.subscription_plans)):"â"})]}),s.jsxs("div",{children:[s.jsx(f,{className:"text-sm font-medium text-gray-500",children:e("subscription.status")}),s.jsx(y,{variant:"default",children:e("status.active")})]}),s.jsxs("div",{children:[s.jsx(f,{className:"text-sm font-medium text-gray-500",children:e("subscription.licenses")}),s.jsx("p",{className:"text-sm font-medium",children:a.licenses_purchased})]}),s.jsxs("div",{children:[s.jsx(f,{className:"text-sm font-medium text-gray-500",children:e("subscription.validUntil")}),s.jsx("p",{className:"text-sm font-medium",children:new Date(a.end_date).toLocaleDateString(h)})]})]})})]}),s.jsxs(C,{children:[s.jsxs(w,{children:[s.jsx(T,{children:e("subscription.availablePlans")}),s.jsx(M,{children:e("subscription.availablePlansDesc")})]}),s.jsx(k,{children:t.length===0?s.jsx("div",{className:"text-center py-8 text-gray-500",children:e("subscription.noPlansAvailable")}):s.jsxs("div",{className:"space-y-4",children:[s.jsx(A,{value:r,onValueChange:m,disabled:!v,children:t.map(i=>s.jsxs("div",{className:"flex items-start space-x-3 p-4 border rounded-lg",children:[s.jsx(K,{value:i.id,id:i.id,className:"mt-1"}),s.jsxs("div",{className:"flex-1",children:[s.jsx(f,{htmlFor:i.id,className:"text-base font-medium cursor-pointer",children:e(D(i))}),i.description&&s.jsx("p",{className:"text-sm text-gray-600 mt-1",children:e(O(i))}),s.jsxs("div",{className:"flex items-center gap-4 mt-2",children:[s.jsx(y,{variant:"secondary",children:e("subscription.pricePerUser",{price:i.price_per_user.toFixed(2)})}),i.max_users&&s.jsx(y,{variant:"outline",children:e("subscription.upToUsers",{count:i.max_users})})]}),i.features&&Object.keys(i.features).length>0&&s.jsxs("div",{className:"mt-2",children:[s.jsxs("p",{className:"text-xs text-gray-500",children:[e("subscription.includedFeatures"),":"]}),s.jsx("ul",{className:"text-xs text-gray-600 mt-1 space-y-1",children:Object.entries(i.features).filter(([c,n])=>n===!0).map(([c])=>s.jsxs("li",{children:["⢠",e(U(c))]},c))})]})]})]},i.id))}),v&&r&&r!==(a==null?void 0:a.plan_id)&&s.jsx("div",{className:"flex justify-end pt-4 border-t",children:s.jsx(R,{onClick:$,disabled:S,children:e(S?"subscription.updating":"subscription.updatePlan")})})]})})]})]})};export{rs 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.