| 1 |
"use strict";(globalThis.webpackChunkbooktics=globalThis.webpackChunkbooktics||[]).push([[2159],{2159:(e,t,r)=>{r.r(t),r.d(t,{default:()=>p});var a=r(51609),i=r(47143),c=r(86087),o=r(47767),s=r(22564),l=r(93524),n=r(46714),d=r(40309),g=r(93521),u=r(73896),m=r(3038),y=r(27723);const p=()=>{const{isMobile:e}=(0,l.U)(),t=(0,o.Zp)(),{createService:r}=(0,m.A)(),[n]=s.Form.useForm(),{setCategoryState:p}=(0,i.useDispatch)(d.category),{isFiltering:b}=(0,i.useSelect)(e=>e(d.services).getServicesState(),[]);return(0,c.useEffect)(()=>{p({categoryIds:[]})},[]),(0,a.createElement)(s.ResponsiveContainer,null,(0,a.createElement)(s.Flex,{justify:"center"},(0,a.createElement)(s.AdvancedCard,{width:e?"360px":"758px",title:(0,a.createElement)(v,null)},(0,a.createElement)(s.Form,{layout:"vertical",form:n,onFinish:r},(0,a.createElement)(s.Row,{gutter:[20]},(0,a.createElement)(u.A,null),(0,a.createElement)(s.Col,{xs:24,md:12},(0,a.createElement)(s.ImgUpload,{label:(0,y.__)("Service Image","booktics"),name:"image",handleChange:e=>n.setFieldsValue({image:e})}))),(0,a.createElement)(s.Flex,{gap:8,justify:"flex-end"},(0,a.createElement)(s.SecondaryOutlineButton,{text:(0,y.__)("Back","booktics"),onClick:()=>t("/services")}),(0,a.createElement)(s.PrimaryButton,{htmlType:"submit",text:(0,y.__)("Save & Next","booktics"),loading:b}))))),(0,a.createElement)(g.A,{form:n}))},v=()=>(0,a.createElement)(s.Flex,{gap:16,align:"center"},(0,a.createElement)(n.CreateServiceTitleIcon,null),(0,a.createElement)("div",null,(0,a.createElement)(s.Title,{level:4,text:(0,y.__)("Create your new Service","booktics"),color:"#36364D"}),(0,a.createElement)(s.Description,{text:(0,y.__)("Customize every service detail to match your business needs.","booktics"),color:"#525266"})))},3038:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(47143),i=r(47767),c=r(40309),o=r(11534),s=r(56580),l=r(88802);const n=function(){const e=(0,a.useSelect)(e=>e(c.services).getServicesState(),[]),{selectedServices:t}=(0,a.useSelect)(e=>e(c.team).getTeamState(),[]),{setServicesState:r}=(0,a.useDispatch)(c.services),{setTeamState:n}=(0,a.useDispatch)(c.team),d=(0,s.useAdminLicense)(),{searchQuery:g,serviceList:u=[],total:m,singleService:y,selectedTeamMembers:p,selectedExtraServices:v=[],schedule:b,selectedLocations:S}=e,f=(0,i.Zp)(),{id:h}=(0,i.g)(),E=async(e={})=>{e?.resetFilter&&(e={search:"",category_id:"",team_member_id:""});const t={...g,...e};r({isFiltering:!0});try{const e=await(o.A?.service?.allServices(t));e?.success&&r({serviceList:e?.data?.items,total:e?.data?.total,searchQuery:t})}catch(e){console.error("Error fetching services:",e)}finally{return r({isFiltering:!1}),{complete:!0}}};return{createService:async(e,a=!0)=>{try{r({isFiltering:!0});const i=await(o.A?.service?.createService(e));i?.success&&(r({serviceList:[i?.data,...u||[]],total:m+1}),a?f(`/services/update/${i?.data.id}`):(r({visibleCreateServiceModal:!1}),n({selectedServices:[i.data.id,...t]})))}catch(e){console.error("Error creating service:",e)}finally{r({isFiltering:!1})}},updateService:async(e,t="deactive",a=!1)=>{if(a||r({loadingServiceId:!0}),e?.custom_field){let t=Array.isArray(e?.custom_field?.fields)?e?.custom_field?.fields?.map(e=>"global"===e?.from?e:{...e,from:"service"}):void 0;e.custom_field={...e?.custom_field,fields:t}}try{const a={...y,...e,status:t,extra_services:v,team_member:p,schedule:e.enable_custom_schedule?b:{},show_end_time:Number(e.show_end_time)||!1};delete a.extra_service_details,d||(delete a.extra_services,delete a.custom_field);const i=await o.A.service.updateService(h,a);if(i?.success){const e=u?.map(e=>e?.id===i?.data?.id?i?.data:e);r({serviceList:e}),r({loadingServiceId:!1})}return i}catch(e){console.error("Error updating service:",e)}finally{r({loadingServiceId:!1})}},updateStatus:async({id:e,...t})=>{try{delete t.extra_service_details;const r=await(o.A?.service?.updateService(e,t));if(r?.success){const e=(0,a.select)(c.services).getServicesState("serviceList"),t=e?.map(e=>e.id===r.data.id?r.data:e);(0,a.dispatch)(c.services).setServicesState({serviceList:t})}return r}catch(e){console.error("Error updating status:",e)}finally{(0,a.dispatch)(c.services).setServicesState({loadingServiceId:null})}},getServices:E,deleteSingleService:async e=>{try{const t=await(o.A?.service?.deleteSingleService(e));if(t?.success){const{serviceList:t,total:r}=(0,a.select)(c.services).getServicesState();(0,a.dispatch)(c.services).setServicesState({serviceList:t?.filter(t=>t.id!==e),total:r-1})}return t}catch(e){console.error("Error deleting service:",e)}},bulkDeleteService:async(e=[])=>{try{const t=await(o.A?.service?.bulkDeleteService({ids:e}));if(t?.success&&(r({serviceList:u.filter(t=>!e.includes(t.id))}),e.length<m)){const{paged:e="",per_page:t=""}=g;E({paged:e,per_page:t})}}catch(e){console.error("Error bulk deleting services:",e)}finally{return{complete:!0}}},duplicateService:async e=>{try{r({isFiltering:!0});const t=await(o.A?.service?.cloneService(e));if(t?.success){const a=u.findIndex(t=>t.id===e);if(-1===a)throw new Error("Service not found for duplication.");const i=[...u.slice(0,a+1),t.data,...u.slice(a+1)];r({serviceList:i,total:m+1})}}catch(e){console.error("Error duplicating service:",e)}finally{r({isFiltering:!1})}},getSingleService:async()=>{try{const e=await o.A.service.singleService(h);e.success&&r({singleService:{...e?.data,custom_field:{...e?.data?.custom_field,fields:e?.data?.custom_field?.fields?.length?e?.data?.custom_field?.fields:l.defaultFields}}})}catch(e){console.log(e)}},onPaginationChange:(e,t)=>{E({paged:e,per_page:t})}}}},13529:(e,t,r)=>{r.d(t,{A:()=>l});var a=r(51609),i=r(47143),c=r(22564),o=r(40309),s=r(27723);const l=({isEditMode:e,initialValues:t})=>{const{categoryList:r=[]}=(0,i.useSelect)(e=>e(o.category).getCategoryState(),[]),l=e?r.filter(e=>e.name!==t?.name):r;return(0,a.createElement)(a.Fragment,null,(0,a.createElement)(c.Col,{xs:24,md:12},(0,a.createElement)(c.TextInput,{name:"name",label:(0,s.__)("Category Title","booktics")})),(0,a.createElement)(c.Col,{xs:24,md:12},(0,a.createElement)(c.FormItem,{name:"parent",label:(0,s.__)("Parent Category","booktics"),tooltip:(0,s.__)("Organize services in order by linking sub categories to a main category.","booktics")},(0,a.createElement)(c.SelectInput,{options:Array.isArray(l)?l?.map(e=>({label:e.name,value:e.id})):[]}))),(0,a.createElement)(c.Col,{xs:24},(0,a.createElement)(c.FormItem,{name:"description",label:(0,s.__)("Short Description","booktics")},(0,a.createElement)(c.TextArea,null))))}},73896:(e,t,r)=>{r.d(t,{A:()=>v});var a=r(51609),i=r(47143),c=r(86087),o=r(22564),s=r(40309),l=r(90803),n=r(95937),d=r(46714),g=r(79836),u=r(27723);const{EditOutlined:m}=window?.booktics?.libraryIcons||{},y=()=>{const[e,t]=(0,c.useState)(!1),{copy:r,copied:l}=(0,n.A)(),{singleService:y}=(0,i.useSelect)(e=>e(s.services).getServicesState(),[]);return(0,c.useEffect)(()=>{l&&window.wp?.hooks.doAction("notification",{type:"success",message:"Linked copied"})},[l]),(0,a.createElement)(o.Col,{xs:24},(0,a.createElement)(g.i5,{align:"center",justify:"space-between",gap:"5px"},(0,a.createElement)(g.Wb,{name:"link",disabled:!e,addonAfter:(0,a.createElement)(o.Button,{icon:(0,a.createElement)(m,null),type:"link",text:(0,u.__)("Edit link","booktics"),onClick:()=>t(!0)})}),(0,a.createElement)(o.Button,{icon:(0,a.createElement)(d.ServiceCopyLinkIcon,null),size:"large",onClick:()=>{r(y.link)}})))},{PlusOutlined:p}=window?.booktics?.libraryIcons||{},v=({isEdit:e=!1})=>{const{getCategories:t}=(0,l.A)(),{setCategoryState:r}=(0,i.useDispatch)(s.category),{categoryList:n,categoryIds:d}=(0,i.useSelect)(e=>e(s.category).getCategoryState(),[]);if((0,c.useEffect)(()=>{n||t({resetFilter:!0})},[]),!n)return(0,a.createElement)(o.RowSkeleton,null);const m=()=>{r({visibleModal:!0})};return(0,a.createElement)(a.Fragment,null,(0,a.createElement)(o.Col,{xs:24},(0,a.createElement)(o.TextInput,{label:(0,u.__)("Service Title","booktics"),name:"title",placeholder:(0,u.__)("Enter Service Title","booktics"),required:!0})),e&&(0,a.createElement)(y,null),(0,a.createElement)(o.Col,{xs:24},(0,a.createElement)(o.FormItem,{label:(0,u.__)("Short Descriptions","booktics"),name:"description"},(0,a.createElement)(o.TextArea,{placeholder:(0,u.__)("Enter Short Descriptions","booktics")}))),(0,a.createElement)(o.Col,{xs:24},(0,a.createElement)(o.FormItem,{name:"categories",label:(0,u.__)("Category","booktics")},(0,a.createElement)(o.SelectInput,{placeholder:(0,u.__)("Select category","booktics"),mode:"multiple",maxTagCount:"responsive",value:d,onChange:e=>r({categoryIds:e}),optionFilterProp:"label",popupRender:e=>(0,a.createElement)(a.Fragment,null,e,(0,a.createElement)(g.Es,{block:!0,size:"medium",type:"text",text:(0,u.__)("Add New Category","booktics"),icon:(0,a.createElement)(p,null),onClick:m})),options:Array.isArray(n)?n.map(e=>({label:e.name,value:e.id})):[]}))))}},79836:(e,t,r)=>{r.d(t,{Ch:()=>f,Es:()=>p,Kz:()=>h,QB:()=>g,Wb:()=>l,Xd:()=>v,Yz:()=>n,ee:()=>d,ff:()=>S,i5:()=>s,pj:()=>m,rG:()=>y,sI:()=>u});var a=r(59e3),i=r(22564),c=r(2812);const{Dropdown:o}=window?.booktics?.library||{},s=(0,a.A)(i.Flex)` |
| 69 |
`},90803:(e,t,r)=>{r.d(t,{A:()=>s});var a=r(47143),i=r(47767),c=r(11534),o=r(40309);const s=()=>{const{setCategoryState:e}=(0,a.useDispatch)(o?.category),{id:t}=(0,i.g)(),r=(0,i.Zp)(),{categoryList:s=[],categoryIds:l,total:n,selectedServices:d,searchQuery:g}=(0,a.useSelect)(o?.category).getCategoryState();return{getCategories:async(t={})=>{t?.resetFilter&&(t={search:"",paged:"",per_page:""});const r={...g,...t};try{const t=await c.A.category.allCategories(r);t.success&&e({categoryList:t?.data?.items,total:t?.data?.total,searchQuery:r})}catch(e){console.error("Error fetching services:",e)}finally{return e({isFiltering:!1}),{complete:!0}}},addCategory:async(t,a=!0)=>{const i={...t,services:d};try{e({editLoading:!0});const t=await c.A.category.createCategory(i);t.success&&e({categoryList:[t?.data,...s],total:n+1,visibleModal:!1,categoryIds:[...l,t.data.id]}),e({editLoading:!1,visibleModal:!1}),a&&r("/services/category")}catch(t){console.log(t),e({editLoading:!1,visibleModal:!1})}finally{e({editLoading:!1,visibleModal:!1})}},getSingleCategory:async()=>{try{const r=await c.A.category.singleCategory(t);r.success&&e({singleCategory:{...r?.data}})}catch(e){console.log(e)}},editCategory:async a=>{const i={...a,services:d,category_id:t};try{e({editLoading:!0});const a=await c.A.category.updateCategory(t,i);if(a.success){const t=s?.map(e=>e?.id===a?.data?.id?a?.data:e);e({categoryList:t}),r("/services/category")}e({editLoading:!1})}catch(t){console.log(t),e({editLoading:!1})}finally{e({editLoading:!1})}},categoryBulkDelete:async(t=[])=>{try{if((await c.A.category.bulkDeleteCategory({ids:t})).success){const r=s.filter(e=>!t.includes(e.id));e({categoryList:r})}}catch(e){console.log(e)}},duplicateCategory:async t=>{try{e({isFiltering:!0});const r=await(c.A?.category?.cloneCategory(t));if(r?.success){const a=[...s],i=a.findIndex(e=>e.id===t);-1!==i?a.splice(i+1,0,r.data):a.push(r.data),e({categoryList:a,total:a.length})}}catch(e){console.error("Error duplicating category:",e)}finally{e({isFiltering:!1})}},deleteCategory:async t=>{try{if((await c.A.category.deleteSingleCategory(t)).success){const r=s.filter(e=>e.id!==t);e({categoryList:r,total:n-1})}}catch(e){console.log(e)}}}}},93521:(e,t,r)=>{r.d(t,{A:()=>m});var a=r(51609),i=r(47143),c=r(86087),o=r(60742),s=r(22564),l=r(93524),n=r(40309),d=r(13529),g=r(90803),u=r(27723);const m=React.memo(e=>{const{isMobile:t}=(0,l.U)(),{addCategory:r}=(0,g.A)(),{visibleModal:m,editLoading:y,categoryIds:p}=(0,i.useSelect)(e=>e(n.category).getCategoryState(),[]),{setCategoryState:v}=(0,i.useDispatch)(n.category),[b]=o.A.useForm(),S=()=>{v({visibleModal:!1}),b.resetFields()};return(0,c.useEffect)(()=>{e.form.setFieldValue("categories",p)},[p]),(0,a.createElement)(s.Modal,{open:m,title:(0,u.__)("Create New Category","booktics"),width:t?350:684,onClose:S,onCancel:S,footer:(0,a.createElement)(s.Flex,{gap:8,justify:"flex-end"},(0,a.createElement)(s.SecondaryButton,{text:(0,u.__)("Close","booktics"),onClick:S}),(0,a.createElement)(s.PrimaryButton,{text:(0,u.__)("Save","booktics"),onClick:()=>b.submit(),loading:y}))},(0,a.createElement)(o.A,{layout:"vertical",form:b,onFinish:e=>{r(e,!1),b.resetFields()}},(0,a.createElement)(d.A,null)))})}}]); |