import{L as I,C as S}from"./index-124eb047.js";import{I as L}from"./index-4b46c3db.js";import{M as G}from"./Multiselect-89305a7f.js";import{P as N}from"./index-8cbf5e02.js";import{_ as E,c as x,w as v,r as _,o as i,d as s,e as y,t as p,b as u,k as C,I as T,M as F,j as m,F as P,m as k,K as O,L as z}from"./index-be2d4151.js";import{F as B}from"./default-f38ac8a4.js";import"./vue-cleave.min-19d21cac.js";import{I as H}from"./index-f10fdf98.js";import{q as A}from"./vue-tailwind-datepicker-e4a05e05.js";import{L as U}from"./Loading-c46365ec.js";import{C as j}from"./CustomerService-c9a6a6b3.js";import{R as Q}from"./ReportService-0c8b90bd.js";import W from"./html2canvas.esm-e0a7d97b.js";import{C as q,E as R}from"./jspdf.plugin.autotable-04776228.js";/* empty css */import{l as K}from"./lodash-cc03f756.js";import"./logo-black-d3c46f69.js";import"./logo-white-e1b05cf3.js";import"./transition-4fc77ecd.js";const Z={components:{Layout:I,Card:S,Icon:L,Multiselect:G,Pagination:N,FormGroup:B,InputGroup:H,VueTailwindDatePicker:A,Loading:U},data(){return{breadcrumbs:[{text:"Home",href:"/"},{text:"Customer Reports",active:!0}],pageTitle:"Customer Reports",state:{isCreated:!1,isLoading:!1,showReport:!1},currentPage:1,itemsPerPage:10,searchQuery:null,serverOptions:{page:1,rowsPerPage:10,sortBy:"firstname",sortType:"asc"},reportType:"table",selectedField:"region_name",selectedChartType:"bar",chartTitle:"Customer Reports",chartInstance:null,chartContainer:null,regions:[],provinces:[],cities:[],genders:[],filters:{region:"",province:"",city:"",gender:"",rangeDate:this.getCurrentMonthDateRange()},formatter:{date:"YYYY-MM-DD",month:"MMMM"},tableHeaders:["First Name","Middle Name","Last Name","Email","Mobile No.","Gender","Birthdate","Region","Province","City","Barangay","Address","Booking Details"],totalItems:0,customers:[],currentDateTime:moment().format("MM/DD/YYYY")}},watch:{searchQuery:K.debounce(function(){this.fetchRecords()},800),filters:{handler(){this.fetchRecords()},deep:!0},reportType:{handler(){this.fetchRecords()},deep:!0}},computed:{paginatedData(){const t=(this.currentPage-1)*this.itemsPerPage;return this.customers.slice(t,t+this.itemsPerPage)}},methods:{async fetchRecords(){this.state.isLoading=!0,this.currentPage=1;try{const t=await Q.fetchCustomers({...this.filters,reportType:this.reportType,selectedField:this.selectedField,keyword:this.searchQuery,page:this.serverOptions.page,per_page:this.serverOptions.rowsPerPage,sortBy:this.serverOptions.sortBy,sortType:this.serverOptions.sortType});this.customers=t.data.customers,this.reportType==="chart"&&this.customers.length>0?this.$nextTick(()=>{this.generateChart()}):this.chartInstance&&this.chartInstance.destroy()}catch(t){console.error("Error fetching report:",t)}this.state.isLoading=!1,this.state.isCreated=!0,this.state.showReport=!0},async fetchOptions(){try{const t=await j.fetchFieldsData();this.regions=t.data.regions.map(r=>({value:r.region_code,label:r.name})),this.provinces=t.data.provinces.map(r=>({value:r.province_code,label:r.name})),this.cities=t.data.cities.map(r=>({value:r.city_code,label:r.name})),this.genders=t.data.genders}catch(t){console.error("Error fetching options:",t)}},updatePage(t){this.currentPage=t},generateChart(){const t={},r=[];this.customers.forEach(l=>{const c=l[this.selectedField],h=l[this.getOtherCategory()];t[h]||(t[h]={}),t[h][c]||(t[h][c]=0,r.includes(c)||r.push(c)),t[h][c]++});const a=Object.keys(t).map(l=>({label:l,data:r.map(c=>t[l][c]||0),backgroundColor:this.getRandomColor(),borderColor:"#000",borderWidth:1}));this.chartInstance&&this.chartInstance.destroy();const g=this.formatDateRange(this.filters.rangeDate[0],this.filters.rangeDate[1]);let e="";switch(this.selectedField){case"region_name":e="Region";break;case"province_name":e="Province";break;case"city_name":e="City";break;case"gender":e="Gender";break;default:e="";break}const n=this.$refs.chartRef.getContext("2d");this.chartInstance=new q(n,{type:"bar",data:{labels:r,datasets:a},options:{responsive:!0,plugins:{title:{display:!0,text:`Customer Count Grouped by ${e}`,padding:{top:10,bottom:10},font:{size:24,family:"Helvetica Neue"}},subtitle:{display:!0,text:`For the period ${g}`,padding:{top:-10,bottom:10},font:{size:20,style:"italic",family:"Helvetica Neue"}},legend:{display:!0,position:"top"}},scales:{y:{beginAtZero:!0}}}})},getOtherCategory(){return this.selectedField==="region_name"||this.selectedField==="province_name"||this.selectedField==="city_name"?"gender":"region_name"},getRandomColor(){const t="0123456789ABCDEF";let r="#";for(let a=0;a<6;a++)r+=t[Math.floor(Math.random()*16)];return r},exportTableToPDF(){const t=new R("l","mm","a4"),r=t.internal.pageSize,a=r.width||r.getWidth(),g=r.height||r.getHeight(),e=this.formatDateRange(this.filters.rangeDate[0],this.filters.rangeDate[1]),n="Customer List",l=`For the period ${e}`;t.setFontSize(14).text(n,a/2,15,{align:"center"}),t.setFontSize(10).text(l,a/2,20,{align:"center"});const c=25,h=[this.tableHeaders],b=this.customers.map(d=>[d.firstname,d.middlename,d.lastname,d.email,d.mobile,d.gender,d.birthday,d.region_name,d.province_name,d.city_name,d.barangay_name,d.address,d.isActive==1?"ACTIVE":"INACTIVE"]);t.autoTable({head:h,body:b,startY:c,margin:{top:5,right:5,bottom:10,left:5},headStyles:{cellPadding:1},bodyStyles:{halign:"left",valign:"top",fontSize:8,cellPadding:{top:2,right:1,bottom:2,left:1}},didDrawPage:function(d){const w=t.internal.getNumberOfPages();t.setFontSize(8).text(`Generated on: ${new Date().toLocaleDateString()}`,5,g-5),t.setFontSize(8).text("",a/2,g-5,{align:"center"}),t.setFontSize(8).text(`Page ${d.pageNumber} of ${w}`,a-5,g-5,{align:"right"})}}),t.save(`${n} - ${l}.pdf`)},async exportChartToPDF(){const t=this.$refs.chartContainer;if(t){const a=(await W(t)).toDataURL("image/png"),g=new R,e=g.getImageProperties(a),n=g.internal.pageSize.getWidth(),l=e.height*n/e.width;g.addImage(a,"PNG",10,10,n-15,l),g.save(`${this.chartTitle}.pdf`)}},getCurrentMonthDateRange(){const t=new Date,r=moment(new Date(t.getFullYear(),t.getMonth(),1)).format("YYYY-MM-DD"),a=moment(new Date(t.getFullYear(),t.getMonth()+1,0)).format("YYYY-MM-DD");return[r,a]},convertDate(t,r){let a=r??"MMM D, YYYY hh:mma (ddd)";return moment(t).format(a)},formatDateRange(t,r){const a=new Date(t),g=new Date(r),e=a.getDate(),n=g.getDate(),l=a.toLocaleString("default",{month:"long"}),c=g.toLocaleString("default",{month:"long"}),h=a.getFullYear(),b=g.getFullYear();return h===b?l===c?`${l} ${e}-${n}, ${h}`:`${l} ${e} to ${c} ${n}, ${h}`:`${l} ${e}, ${h} to ${c} ${n}, ${b}`}},created(){this.fetchOptions(),this.fetchRecords()}},f=t=>(O("data-v-6ac0d0c4"),t=t(),z(),t),J={class:"text-sm"},X={class:"rounded-t bg-[url('@/assets/images/background/car-service-01.jpg')] bg-cover bg-[center] mih-h-24 pr-8"},$={class:"grid grid-cols-2"},ee={class:"p-8"},te={class:"bg-white bg-opacity-[0.5] rounded grid lg:grid-cols-1 p-2"},re={class:"flex gap-2 px-2"},se={class:"h-12 w-12 flex flex-col items-center justify-center rounded-full bg-white text-2xl mb-2 drop-shadow"},oe={class:"text-3xl font-sans text-primary-800 py-1 drop-shadow"},ne=f(()=>s("div",{class:"bg-slate-200 slant-container w-full h-full flex justify-end p-8"},[s("div")],-1)),ae={key:0,class:"p-4 card-auto space-y-5"},ie={class:"flex gap-2"},le={class:"w-[200px]"},ce=f(()=>s("label",{class:"p-0 ltr:inline-block rtl:block input-label"},"Report Type:",-1)),de={class:"multiselect"},pe=f(()=>s("option",{value:"table"},"Table List",-1)),he=f(()=>s("option",{value:"chart"},"Graphical (Chart)",-1)),ge=[pe,he],ue={key:0,class:"w-[200px]"},me=f(()=>s("label",{class:"p-0 ltr:inline-block rtl:block input-label",for:"dataset"},"Select Dataset:",-1)),fe={class:"multiselect"},_e=f(()=>s("option",{value:"region_name"},"Region",-1)),ye=f(()=>s("option",{value:"province_name"},"Province",-1)),be=f(()=>s("option",{value:"city_name"},"City",-1)),ve=f(()=>s("option",{value:"gender"},"Gender",-1)),De=[_e,ye,be,ve],xe={class:"grid grid-cols-2 mt-3"},we={class:"flex"},Ce={class:""},Pe={class:"text-lg"},ke=f(()=>s("button",{type:"submit",class:"text-white bg-primary-800 p-2 rounded ml-2 hover:bg-primary-700"}," Generate Report ",-1)),Te={key:0,class:"flex"},Fe={key:0,style:{"overflow-x":"auto"}},Re={id:"reportTableDetailed",style:{"overflow-x":"auto"}},Me={class:"dark:text-white"},Ye={key:0,class:"text-center text-xl"},Ve=["colspan"],Ie={key:0,class:"flex-none"},Se={key:1,ref:"chartContainer"},Le={id:"reportChart",ref:"chartRef"};function Ge(t,r,a,g,e,n){const l=_("Icon"),c=_("Multiselect"),h=_("FormGroup"),b=_("VueTailwindDatePicker"),d=_("InputGroup"),w=_("Pagination"),M=_("Loading"),Y=_("Card"),V=_("Layout");return i(),x(V,{breadcrumbs:e.breadcrumbs},{default:v(()=>[s("div",J,[y(Y,{bodyClass:"p-0 w-full"},{default:v(()=>[s("div",X,[s("div",$,[s("div",ee,[s("div",te,[s("div",re,[s("div",se,[y(l,{icon:"ri:survey-line",class:"text-4xl text-primary-700"})]),s("div",oe,p(e.pageTitle),1)])])]),ne])]),e.state.isCreated?(i(),u("div",ae,[s("form",{onSubmit:r[11]||(r[11]=C((...o)=>n.fetchRecords&&n.fetchRecords(...o),["prevent"]))},[s("div",ie,[s("div",le,[ce,s("div",de,[T(s("select",{"onUpdate:modelValue":r[0]||(r[0]=o=>e.reportType=o),class:"multiselect-wrapper rounded p-2 text-base"},ge,512),[[F,e.reportType]])])]),e.reportType=="chart"?(i(),u("div",ue,[me,s("div",fe,[T(s("select",{"onUpdate:modelValue":r[1]||(r[1]=o=>e.selectedField=o),onChange:r[2]||(r[2]=(...o)=>n.fetchRecords&&n.fetchRecords(...o)),class:"multiselect-wrapper rounded p-2 text-base"},De,544),[[F,e.selectedField]])])])):m("",!0),e.regions.length?(i(),x(h,{key:1,label:"Region:",formClass:"w-[200px]"},{default:v(()=>[y(c,{placeholder:"All Regions",modelValue:e.filters.region,"onUpdate:modelValue":r[3]||(r[3]=o=>e.filters.region=o),"close-on-select":!0,searchable:!0,name:"region",options:e.regions,class:""},null,8,["modelValue","options"])]),_:1})):m("",!0),e.cities.length?(i(),x(h,{key:2,label:"City:",formClass:"w-[200px]"},{default:v(()=>[y(c,{placeholder:"All Cities",modelValue:e.filters.city,"onUpdate:modelValue":r[4]||(r[4]=o=>e.filters.city=o),"close-on-select":!0,searchable:!0,name:"city",options:e.cities,class:"flex-0 mr-6 md:w-[320px] w-[260px] break-words"},null,8,["modelValue","options"])]),_:1})):m("",!0),e.genders.length?(i(),x(h,{key:3,label:"Gender:",formClass:"w-[200px]"},{default:v(()=>[y(c,{placeholder:"All Genders",modelValue:e.filters.gender,"onUpdate:modelValue":r[5]||(r[5]=o=>e.filters.gender=o),"close-on-select":!0,searchable:!0,name:"gender",options:e.genders,class:""},null,8,["modelValue","options"])]),_:1})):m("",!0)]),s("div",xe,[s("div",we,[s("div",Ce,[y(b,{modelValue:e.filters.rangeDate,"onUpdate:modelValue":r[7]||(r[7]=o=>e.filters.rangeDate=o),formatter:e.formatter,onChange:n.fetchRecords},{default:v(()=>[s("div",{class:"date-btn inline-flex btn btn-md whitespace-nowrap space-x-2 rtl:space-x-reverse cursor-pointer text-white bg-slate-800 dark:bg-slate-400 dark:text-slate-800 btn-md h-min text-sm font-normal",onClick:r[6]||(r[6]=(...o)=>t.clear&&t.clear(...o))},[s("span",Pe,[y(l,{icon:"heroicons:calendar"})]),s("span",null,p(e.filters.rangeDate[0]==n.convertDate(new Date,"YYYY-MM-DD")&&e.filters.rangeDate[1]==n.convertDate(new Date,"YYYY-MM-DD")?"Today":n.formatDateRange(e.filters.rangeDate[0],e.filters.rangeDate[1])),1)])]),_:1},8,["modelValue","formatter","onChange"])]),ke,e.reportType==="table"&&e.customers.length>0?(i(),u("button",{key:0,onClick:r[8]||(r[8]=C((...o)=>n.exportTableToPDF&&n.exportTableToPDF(...o),["prevent"])),class:"text-white bg-warning-500 p-2 rounded ml-2 hover:bg-warning-600"}," Export Table to PDF ")):m("",!0),e.reportType==="chart"&&e.customers.length>0?(i(),u("button",{key:1,onClick:r[9]||(r[9]=C((...o)=>n.exportChartToPDF&&n.exportChartToPDF(...o),["prevent"])),class:"text-white bg-warning-500 p-2 rounded ml-2 hover:bg-warning-600"}," Export Chart to PDF ")):m("",!0)]),e.reportType==="table"?(i(),u("div",Te,[y(d,{modelValue:e.searchQuery,"onUpdate:modelValue":r[10]||(r[10]=o=>e.searchQuery=o),class:"w-full focus:border-cyan-500",placeholder:"Search Customer Name, Email, etc.",type:"text",prependIcon:"heroicons-outline:search",merged:""},null,8,["modelValue"])])):m("",!0)])],32),e.reportType==="table"?(i(),u("div",Fe,[s("table",Re,[s("thead",null,[s("tr",null,[(i(!0),u(P,null,k(e.tableHeaders,(o,D)=>(i(),u("th",{key:D},p(o),1))),128))])]),s("tbody",Me,[e.customers.length==0?(i(),u("tr",Ye,[s("td",{colspan:e.tableHeaders.length},"No Data",8,Ve)])):m("",!0),(i(!0),u(P,null,k(n.paginatedData,o=>(i(),u("tr",{key:o.id},[s("td",null,p(o.firstname),1),s("td",null,p(o.middlename),1),s("td",null,p(o.lastname),1),s("td",null,p(o.email),1),s("td",null,p(o.mobile),1),s("td",null,p(o.gender),1),s("td",null,p(o.birthday),1),s("td",null,p(o.region_name),1),s("td",null,p(o.province_name),1),s("td",null,p(o.city_name),1),s("td",null,p(o.barangay_name),1),s("td",null,p(o.address),1),s("td",null,[(i(!0),u(P,null,k(o.bookings,D=>(i(),u("div",{key:D.id,class:"w-48"},[s("div",null,p(D.booking_time),1),s("div",null,p(D.car_plate),1)]))),128))])]))),128))])]),e.customers.length?(i(),u("div",Ie,[y(w,{class:"py-6",current:e.currentPage,total:e.customers.length,"per-page":e.itemsPerPage,pageRange:[10,20,30],onPageChanged:n.updatePage,enableSelect:""},null,8,["current","total","per-page","onPageChanged"])])):m("",!0)])):(i(),u("div",Se,[s("canvas",Le,null,512)],512)),e.state.isLoading?(i(),x(M,{key:2,text:"Generating reports..."})):m("",!0)])):m("",!0)]),_:1})])]),_:1},8,["breadcrumbs"])}const rt=E(Z,[["render",Ge],["__scopeId","data-v-6ac0d0c4"]]);export{rt as default};