PageSourceSearch

https://portal.dnacomplete.com/assets/Coupons-JvgFK31n.js

js dnacomplete.com collected 2026-10-08 02:35:42 UTC 10,934 bytes, 1 lines download raw bytes

1import{A as P}from"./AdminLayout-X67muvvD.js";import{_ as I,aj as d,d as x,h as N,o as l,w as T,a as t,c as i,b as r,z as a,G as c,t as h,y as k,F as v,r as m,A as g,E as S,N as q,a7 as A,aq as V,M as b,a6 as y,T as D}from"./index-DCHUSD92.js";const B={title:"Admin - Coupons",components:{AdminLayout:P,nebulaAdmin:d},setup(){return{v$:D()}},data(){return{btns:[{error:!1,success:!1,loading:!1},{error:!1,success:!1,loading:!1},{error:!1,success:!1,loading:!1}],loading:!0,error:!1,isNewCoupon:!1,enableCartCoupons:!0,plans:[{value:"all",text:"all subscriptions"},{value:"none",text:"Lifetime only"},{value:"quarterly",text:"Quarterly only"},{value:"yearly",text:"yearly only"}],products:[],productId:"",couponId:"",newCouponName:"",selectedPlan:"all",selectedProduct:null,selectedCoupon:null,savedCoupon:null}},mounted(){this.fetchProducts(),this.getCouponConfig()},validations(){return{productId:{required:b},couponId:{required:y(()=>!this.isNewCoupon)},newCouponName:{required:y(()=>this.isNewCoupon)},selectedCoupon:{amount:{required:b,minValue:V(0),maxValue:n=>this.selectedCoupon&&this.selectedCoupon.type==="percentage"?n<=99:!0,numeric:A}}}},computed:{saveChangesButtonText:function(){return this.btns[0].loading?"Loading...":this.btns[0].error?"There's been an error. Please try again.":this.btns[0].success?"Changes Saved!":"Save Changes"},updateButtonText:function(){return this.btns[1].loading?"Loading...":this.btns[1].error?"There's been an error. Please try again.":this.btns[1].success?"Changes Saved!":"Save Changes"},deleteButtonText:function(){return this.btns[2].loading?"Loading...":this.btns[2].error?"Error. Please try again.":this.btns[2].success?"Coupon Deleted!":"Delete Coupon"}},methods:{toggleCoupon(){this.resetInfo(),this.NewCoupon?this.productId="":this.selectedCoupon={name:"",active:!1,amount:0,type:"flat",plan:"all"},this.isNewCoupon=!this.isNewCoupon},resetDefault(){this.selectedCoupon={...this.savedCoupon},this.selectedCoupon.plan?this.selectedPlan=this.selectedCoupon.plan:this.selectedPlan="all",this.setPlan(),this.btns=[{error:!1,success:!1,loading:!1},{error:!1,success:!1,loading:!1},{error:!1,success:!1,loading:!1}]},async fetchProducts(){this.error=!1,this.loading=!0;try{const{data:n,status:e}=await d.callApi("GET","/products");e===200&&(this.products=n.data)}catch{this.error=!0}this.loading=!1},setProduct(){this.productId!==""&&(this.selectedProduct=this.products.filter(n=>n.id===this.productId)[0]),this.couponId=""},setCoupon(){this.couponId!==""&&(this.savedCoupon={...this.selectedProduct.coupons[this.couponId]},this.selectedCoupon=this.selectedProduct.coupons[this.couponId],this.selectedCoupon.type==="percentage"&&this.selectedCoupon.amount<=.99&&(this.selectedCoupon.amount=this.selectedCoupon.amount*100),"active"in this.selectedCoupon||(this.selectedCoupon.active=!1),this.selectedCoupon.plan?this.selectedPlan=this.selectedCoupon.plan:this.selectedPlan="all",this.setPlan())},setPlan(){this.selectedCoupon.plan=this.selectedPlan},resetInfo(){this.couponId="",this.newCouponName="",this.selectedPlan="all",this.selectedCoupon=null,this.v$.$reset()},async getCouponConfig(){this.loading=!0;try{const{data:n,status:e}=await q.getCouponCodeConfig();e===200&&(this.enableCartCoupons=n.data.enabled,this.loading=!1)}catch{this.loading=!1}},async updateCouponConfig(){this.loading=!0,this.btns[0].loading=!0;try{const{data:n,status:e}=await d.callApi("PATCH","/coupon-config",{enabled:this.enableCartCoupons});return this.loading=!1,this.btns[0].loading=!1,this.btns[0].success=!0,setTimeout(()=>this.btns[0].success=!1,2e3),n}catch{this.loading=!1,this.btns[0].loading=!0,this.btns[0].error=!0,setTimeout(()=>this.btns[0].error=!1,2e3)}},async updateCoupon(){if(this.v$.$touch(),!this.v$.$invalid)if(this.loading=!0,this.btns[1].loading=!0,this.isNewCoupon)await this.addNewCoupon(),this.resetInfo();else{const n={productId:this.productId,couponId:this.couponId,amount:this.selectedCoupon.type==="percentage"?Number(this.selectedCoupon.amount)/100:Number(this.selectedCoupon.amount),type:this.selectedCoupon.type,active:this.selectedCoupon.active};this.selectedCoupon.plan!=="all"&&(n.plan=this.selectedPlan);try{const{data:e,status:f}=await d.callApi("PATCH","/coupons",n);if(f===200)return this.loading=!1,this.btns[1].loading=!1,this.btns[1].success=!0,setTimeout(()=>this.btns[1].success=!1,2e3),e}catch{this.loading=!1,this.btns[1].loading=!1,this.btns[1].error=!0,setTimeout(()=>this.btns[1].error=!1,2e3);return}}}
1,async addNewCoupon(){this.loading=!0;const n={productId:this.productId,couponId:this.newCouponName,amount:Number(this.selectedCoupon.amount),type:this.selectedCoupon.type,active:this.selectedCoupon.active};this.selectedCoupon.plan!=="all"&&(n.plan=this.selectedPlan);try{const{status:e}=await d.callApi("POST","/coupons",n);await this.fetchProducts(),this.isNewCoupon=!1,this.loading=!1,this.btns[1].loading=!1,this.btns[1].success=!0,setTimeout(()=>this.btns[1].success=!1,3e3),this.setProduct()}catch{this.btns[1].error=!0,setTimeout(()=>this.btns[1].error=!1,2e3)}},async deleteCoupon(){this.loading=!0,this.btns[2].loading=!0;const n={productId:this.productId,couponId:this.couponId};try{const{status:e}=await d.callApi("DELETE","/coupons",n);await this.fetchProducts(),this.resetInfo(),this.setProduct(),this.btns[2].loading=!1,this.btns[2].success=!0,setTimeout(()=>this.btns[2].success=!1,2e3)}catch{this.btns[2].error=!0,setTimeout(()=>this.btns[2].error=!1,2e3)}this.loading=!1}}},E={class:"m-md-5 col position-relative"},U={key:0,class:"loader-line"},M={class:"p-md-5 p-3 bg-white border rounded"},L={class:"row"},G={class:"col"},F={class:"row"},W={class:"col"},H={key:0,class:"error-message"},j={class:"col"},z=["value"],O={key:1,class:"error-message"},Q={key:0,class:"col"},R={key:0},_={class:"row",style:{"margin-top":"10px"}},J={key:0,class:"col"},K={class:"row"},X={key:0,class:"col"},Y={key:0,class:"error-message"},Z={class:"row"},$={class:"col"},ee={key:0,class:"error-message"},te={class:"col"},se={class:"row"},oe={class:"col"},ne=["value"],le={class:"col"},ie={class:"row"},ue={class:"col"},re={class:"col"};function ae(n,e,f,p,s,u){const w=x("admin-layout");return l(),N(w,null,{default:T(()=>[t("div",E,[s.loading?(l(),i("div",U)):r("",!0),t("main",M,[e[32]||(e[32]=t("h1",null,"Coupon Management",-1)),e[33]||(e[33]=t("hr",null,null,-1)),t("div",L,[t("div",G,[e[19]||(e[19]=t("h4",{style:{margin:"5px"}},"Enable or disable coupon codes in cart:",-1)),a(t("select",{class:"input","onUpdate:modelValue":e[0]||(e[0]=o=>s.enableCartCoupons=o)},[...e[18]||(e[18]=[t("option",{value:!0},"Enabled",-1),t("option",{value:!1},"Disabled",-1)])],512),[[c,s.enableCartCoupons]]),e[20]||(e[20]=t("br",null,null,-1)),t("button",{style:{margin:"5px"},class:"btn btn-primary",onClick:e[1]||(e[1]=o=>u.updateCouponConfig())},h(u.saveChangesButtonText),1)]),e[21]||(e[21]=t("div",{class:"col"},null,-1))]),e[34]||(e[34]=t("hr",null,null,-1)),e[35]||(e[35]=t("h2",{style:{margin:"8px"}},"Manage Coupons",-1)),t("div",F,[t("form",{onSubmit:e[6]||(e[6]=k(()=>{},["prevent"]))},[t("div",W,[a(t("select",{tabindex:"1",class:"input",required:"","onUpdate:modelValue":e[2]||(e[2]=o=>s.productId=o),onChange:e[3]||(e[3]=o=>u.setProduct())},[...e[22]||(e[22]=[t("option",{value:"",selected:""},"Select a Product to begin",-1),t("option",{value:"nebula-1x"},"Whole Genome Sequencing",-1),t("option",{value:"nebula-04x"},"Standard Whole Genome Sequencing",-1),t("option",{value:"nebula-30x"},"Deep Whole Genome Sequencing",-1),t("option",{value:"nebula-100x"},"Ultra Deep Genome Sequencing",-1)])],544),[[c,s.productId]]),p.v$.productId.$error?(l(),i("div",H," Please Select a valid product. ")):r("",!0)]),t("div",j,[s.selectedProduct&&s.selectedProduct.coupons?a((l(),i("select",{key:0,tabindex:"2",class:"input",required:"","onUpdate:modelValue":e[4]||(e[4]=o=>s.couponId=o),onChange:e[5]||(e[5]=o=>{s.isNewCoupon=!1,u.setCoupon()})},[e[23]||(e[23]=t("option",{value:""},"Select a coupon to begin",-1)),(l(!0),i(v,null,m(s.selectedProduct.coupons,(o,C)=>(l(),i("option",{key:C,value:C},h(C),9,z))),128))],544)),[[c,s.couponId]]):r("",!0),p.v$.couponId.$error?(l(),i("div",O," Please Select a valid coupon. ")):r("",!0)])],32),s.productId!=""?(l(),i("div",Q,[t("button",{class:"btn btn-outline-primary create-coupon",onClick:e[7]||(e[7]=o=>u.toggleCoupon())}," Add New Coupon ")])):r("",!0)]),s.selectedCoupon!==null&&s.couponId!==""||s.isNewCoupon&&s.productId!==""?(l(),i("div",R,[e[31]||(e[31]=t("hr",null,null,-1)),t("div",_,[e[24]||(e[24]=t("div",{class:"col"},[t("h2",null,"Coupon information")],-1)),s.isNewCoupon?r("",!0):(l(),i("div",J,[t("button",{class:"btn btn-primary float-right",onClick:e[8]||(e[8]=o=>u.resetDefault())}," Reset Default ")]))]),t("div",K,[s.isNewCoupon?(l(),i("div",X,[e[25]||(e[25]=t("label",{for:"coupon-name"},"Coupon Name: ",-1)),a(t("input",{type:"text",id:"coupon-name","onUpdate:modelValue":e[9]||(e[9]=o=>s.newCouponName=o),onBlur:e[10]||(e[10]=o=>p.v$.newCouponName.$touch()),required:""},null,544),[[g,s.newCouponName]]),p.v$.newCouponName.$error?(l(),i("div",Y," Please enter a coupon name. ")):r("",!0)])):r("",!0)]),t("div",Z,[t("div",$,[e[26]||(e[26]=t("label",{for:"coupon-id"}
1,"Discount Amount: ",-1)),a(t("input",{type:"number",id:"coupon-id","onUpdate:modelValue":e[11]||(e[11]=o=>s.selectedCoupon.amount=o),required:""},null,512),[[g,s.selectedCoupon.amount]]),p.v$.selectedCoupon.amount.$error?(l(),i("div",ee," Please input a correct value. Must be numerical and smaller than 99 if percentage is selected ")):r("",!0)]),t("div",te,[e[28]||(e[28]=t("label",{for:"coupon-type"},"Discount Type: ",-1)),a(t("select",{id:"coupon-type","onUpdate:modelValue":e[12]||(e[12]=o=>s.selectedCoupon.type=o)},[...e[27]||(e[27]=[t("option",{value:"flat"},"Flat",-1),t("option",{value:"percentage"},"Percentage",-1)])],512),[[c,s.selectedCoupon.type]])])]),t("div",se,[t("div",oe,[e[29]||(e[29]=t("label",{for:"coupon-plan"},"Subscription Type: ",-1)),s.productId!==""?a((l(),i("select",{key:0,id:"coupon-plan",class:"input",required:"","onUpdate:modelValue":e[13]||(e[13]=o=>s.selectedPlan=o),onChange:e[14]||(e[14]=o=>u.setPlan())},[(l(!0),i(v,null,m(s.plans,o=>(l(),i("option",{value:o.value},h(o.text),9,ne))),256))],544)),[[c,s.selectedPlan]]):r("",!0)]),t("div",le,[e[30]||(e[30]=t("label",{for:"coupon-active",style:{"margin-right":"5px"}},"Active:",-1)),a(t("input",{id:"coupon-active","onUpdate:modelValue":e[15]||(e[15]=o=>s.selectedCoupon.active=o),type:"checkbox"},null,512),[[S,s.selectedCoupon.active]])])]),t("div",ie,[t("div",ue,[t("button",{class:"btn btn-primary save",onClick:e[16]||(e[16]=o=>u.updateCoupon())},h(u.updateButtonText),1)]),t("div",re,[t("button",{class:"btn btn-outline-danger float-right",onClick:e[17]||(e[17]=o=>u.deleteCoupon())},h(u.deleteButtonText),1)])])])):r("",!0)])])],void 0,!0),_:1})}const ce=I(B,[["render",ae],["__scopeId","data-v-1e6ebea2"]]);export{ce 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.