import"./index-4b46c3db.js";import{_ as x,c as a,w as m,r as o,o as n,j as f,d as c,k as C,e as r}from"./index-be2d4151.js";import"./InfoButton.vue_vue_type_style_index_0_scoped_635db2d1_lang-ea4dfeb4.js";import{C as M}from"./CloseButton-91fa6b44.js";import{S as F}from"./SubmitButton-1d5ea630.js";import{U as S}from"./UpdateButton-331adda6.js";import{F as E}from"./index-5f541e4d.js";import{F as V}from"./default-f38ac8a4.js";import{T as k}from"./index-9c004d68.js";import{L as q}from"./Loading-c46365ec.js";import{B as O}from"./BrandService-b147be33.js";import{M as g}from"./ModelService-da301f16.js";import{M as R}from"./Multiselect-89305a7f.js";import{c as I,b as L,a as w,V as U}from"./array-9fca5ec5.js";import"./transition-4fc77ecd.js";import"./vue-cleave.min-19d21cac.js";const N={components:{FormModal:E,FormGroup:V,TextInput:k,SubmitButton:F,UpdateButton:S,CloseButton:M,Loading:q,Multiselect:R},data(){return{brandOptions:[],form:{brand_id:"",name:"",description:""},errors:{},state:{isEdit:!1,isSaving:!1,isLoading:!1}}},methods:{async fetchBrands(){await O.fetchRecords().then(e=>{e.status==200&&(this.brandOptions=e.data.data.map(t=>({value:t.id,label:t.name})))}).catch(e=>{console.log(e)})},loadRecord(e){this.resetForm(),this.state.isEdit=!0;let t=Object.assign({},e);this.form=t},closeModal(){this.state.showModal=!1},resetForm(){this.state.isEdit=!1,this.form={brand_id:"",name:"",description:""}},reload(){this.$emit("reload")},async saveRecord(){if(this.state.isSaving=!0,!this.state.isEdit)this.state.isSaving=!1,await g.create(this.form).then(e=>{e.status==201&&(this.$swal.fire({title:"Great!",text:"Record successfully saved.",icon:"success",timer:2e3}),this.state.showModal=!1,this.resetForm(),this.reload())}).catch(e=>{console.log(e),e.response.status==422?this.$swal.fire({title:"Ooops! something is wrong.",text:e.response.data.message,icon:"warning"}):this.$swal.fire({title:"Ooops! something is wrong.",text:"Please contact system administrator",icon:"error",timer:2e3})});else{const e=this.form.id;await g.update(e,this.form).then(t=>{console.log("response.status",t.status),t.status==200?(this.$swal.fire({title:"Great!",text:"Record successfully updated.",icon:"success",timer:2e3}),this.state.showModal=!1):(this.$swal.fire({title:"Ooops! something is wrong.",text:"Please contact system administrator",icon:"error",timer:2e3}),this.state.showModal=!1)}).catch(t=>{console.log(t),t.response.status==422?this.$swal.fire({title:"Ooops! something is wrong.",text:t.response.data.message,icon:"warning"}):this.$swal.fire({title:"Ooops! something is wrong.",text:"Please contact system administrator",icon:"error",timer:2e3})}).finally(()=>{this.state.isSaving=!1,this.reload()})}},async submitForm(){try{await I().shape({brand_id:L().required("Brand field is required").positive().integer(),name:w().required("Name field is required"),description:w().required("Description field is required")}).validate(this.form,{abortEarly:!1}),this.$swal.fire({title:"Are you sure you want to "+(this.state.isEdit?"update":"save")+" this record?",text:"",icon:"question",showCancelButton:!0,confirmButtonColor:"#34c38f",cancelButtonColor:"#f46a6a",confirmButtonText:"Yes",cancelButtonText:"No"}).then(t=>{t.value&&this.saveRecord()})}catch(e){if(e instanceof U){const t={};e.inner.forEach(d=>{t[d.path]=d.message}),this.errors=t}this.state.isSaving=!1}}},Validating(e){console.log(e)},mounted(){this.fetchBrands()}},T={class:"lg:p-2"},G={class:"relative"},j={class:"flex gap-1 justify-end"};function D(e,t,d,P,s,l){const u=o("Loading"),b=o("Multiselect"),p=o("FormGroup"),h=o("TextInput"),_=o("SubmitButton"),v=o("UpdateButton"),y=o("CloseButton"),B=o("FormModal");return n(),a(B,{title:s.state.isEdit?"Edit Model":"Create Model",active:s.state.showModal,onSubmit:e.confirmSubmit,onClose:l.closeModal,themeClass:s.state.isEdit?"bg-primary-600":"bg-primary-800",sizeClass:"lg:w-1/2"},{default:m(()=>[s.state.isEdit&&s.state.isLoading?(n(),a(u,{key:0,text:"Fetching record"})):f("",!0),c("div",T,[c("form",{onSubmit:t[3]||(t[3]=C((...i)=>e.confirmSubmit&&e.confirmSubmit(...i),["prevent"])),class:"space-y-4"},[s.state.isEdit&&s.state.isLoading?(n(),a(u,{key:0,text:"Fetching record"})):f("",!0),s.state.isSaving?(n(),a(u,{key:1,text:"Saving record"})):f("",!0),r(p,{label:"Brand",isRequired:!0},{default:m(()=>[c("div",G,[r(b,{modelValue:s.form.brand_id,"onUpdate:modelValue":t[0]||(t[0]=i=>s.form.brand_id=i),"close-on-select":!0,searchable:!0,id:"company_id",options:s.brandOptions},null,8,["modelValue","options"])])]),_:1}),r(p,{label:"Name",isRequired:!0},{default:m(()=>[r(h,{type:"text",placeholder:"Input name ",modelValue:s.form.name,"onUpdate:modelValue":t[1]||(t[1]=i=>s.form.name=i),error:s.errors.name,classInput:"h-[48px]"},null,8,["modelValue","error"])]),_:1}),r(p,{label:"Description",isRequired:!0},{default:m(()=>[r(h,{type:"text",placeholder:"Input description ",modelValue:s.form.description,"onUpdate:modelValue":t[2]||(t[2]=i=>s.form.description=i),error:s.errors.description,classInput:"h-[48px]"},null,8,["modelValue","error"])]),_:1}),c("div",j,[s.state.isEdit?(n(),a(v,{key:1,onClick:l.submitForm},null,8,["onClick"])):(n(),a(_,{key:0,onClick:l.submitForm},null,8,["onClick"])),r(y,{onClick:l.closeModal},null,8,["onClick"])])],32)])]),_:1},8,["title","active","onSubmit","onClose","themeClass"])}const rt=x(N,[["render",D]]);export{rt as default};