1import{i as $,t as k}from"./react-C6JdJxIB.js";import{a as E,i as b}from"./index.esm-DxXUb9DD.js";import{t as z}from"./jsx-runtime-CGXBp6bb.js";import{t as B}from"./useLanguages-D4QGBoF3.js";import{t as G}from"./CentralLayout-B7lm4y_K.js";import O from"./CreateForm-LSFPt0xa.js";import"./EditForm-9xK3kPSK.js";import H from"./DataTable-BaZuxsSw.js";import J from"./DeleteModal-BovmyuZf.js";var _=$(k(),1),c=z();function S(o,r){const n=Array.isArray(r)?r.map(s=>Number(s)):[];return n.length?o.filter(s=>(Array.isArray(s.tenant_type_ids)?s.tenant_type_ids.map(l=>Number(l)):[]).some(l=>n.includes(l))).map(s=>Number(s.id)):[]}function D(o,r={}){return(o?.length?o:[{code:"en"}]).reduce((n,s)=>(n[s.code]=r[s.code]??"",n),{})}function te({plans:o,features:r=[],tenantTypes:n=[]}){const{languages:s}=B(),[l,f]=(0,_.useState)(!1),[I,y]=(0,_.useState)(!1),[N,g]=(0,_.useState)(!1),[p,m]=(0,_.useState)(null),[j,v]=(0,_.useState)(!1),h=s?.length>0?s:[{code:"en",name:"English",direction:"ltr"}],F=(e,i=[])=>{const u=S(r,e);return u.length?
1i.map(d=>Number(d)).filter(d=>u.includes(d)):[]},t=E({name:D(h),price:"0",period:"monthly",duration_days:30,stripe_price_id:"",tenant_type_ids:[],feature_ids:[],is_trial:!1,is_active:!0}),a=E({name:D(h),price:"0",period:"monthly",duration_days:30,stripe_price_id:"",tenant_type_ids:[],feature_ids:[],is_trial:!1,is_active:!0}),x=S(r,t.data.tenant_type_ids),A=S(r,a.data.tenant_type_ids),w=e=>{e.preventDefault(),b.post(route("admin.plans.store"),{name:t.data.name,price:t.data.price,period:t.data.period,duration_days:t.data.duration_days,stripe_price_id:t.data.stripe_price_id,tenant_type_ids:t.data.tenant_type_ids,feature_ids:t.data.feature_ids,is_trial:t.data.is_trial,is_active:t.data.is_active},{onSuccess:()=>{f(!1),t.reset()},onError:i=>t.setError(i)})},P=e=>{const i=e.tenant_type_ids??[],u=F(i,e.feature_ids??[]);a.setData({name:D(h,e.name_translations??{}),price:e.price??"0",period:e.period??"monthly",duration_days:e.duration_days??30,stripe_price_id:e.stripe_price_id??"",tenant_type_ids:i,feature_ids:u,is_trial:!!e.is_trial,is_active:!!e.is_active}),m(e),y(!0)},T=e=>{e.preventDefault(),b.put(route("admin.plans.update",p.id),{name:a.data.name,price:a.data.price,period:a.data.period,duration_days:a.data.duration_days,stripe_price_id:a.data.stripe_price_id,tenant_type_ids:a.data.tenant_type_ids,feature_ids:a.data.feature_ids,is_trial:a.data.is_trial,is_active:a.data.is_active},{onSuccess:()=>y(!1),onError:i=>a.setError(i)})},C=(e,i,u)=>{const d=Number(u);if(!i.includes(d))return;const M=e.data.feature_ids.includes(d)?e.data.feature_ids.filter(R=>R!==d):[...e.data.feature_ids,d];e.setData("feature_ids",M)},L=e=>{m(e),g(!0)},q=()=>{v(!0),b.delete(route("admin.plans.destroy",p.id),{onFinish:()=>{v(!1),g(!1),m(null)}})};return(0,c.jsxs)(G,{section:"admin",title:"Plans",currentRoute:"admin.plans.index",children:[(0,c.jsx)(H,{plans:o,onAdd:()=>f(!0),onEdit:P,onDelete:L}),(0,c.jsx)(O,{isOpen:l,onClose:()=>{f(!1),t.reset()},form:t,tenantTypes:n,features:r,allowedFeatureIds:x,onTenantTypesChange:e=>{const i=F(e,t.data.feature_ids);t.setData("tenant_type_ids",e),t.setData("feature_ids",i)},onFeatureToggle:e=>C(t,x,e),onSubmit:w,title:"Add New Plan",submitLabel:"Create Plan"}),(0,c.jsx)(O,{isOpen:I,onClose:()=>{y(!1),m(null)},form:a,tenantTypes:n,features:r,allowedFeatureIds:A,onTenantTypesChange:e=>{const i=F(e,a.data.feature_ids);a.setData("tenant_type_ids",e),a.setData("feature_ids",i)},onFeatureToggle:e=>C(a,A,e),onSubmit:T,title:`Edit â ${p?.name??"Plan"}`,submitLabel:"Save Changes"}),(0,c.jsx)(J,{isOpen:N,onClose:()=>g(!1),onConfirm:q,processing:j,itemName:p?.name??""})]})}export{te 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.