1import{n as ce,r as c,c as k,A as Ae,u as Se,j as z,w as ue,I as Me,G as me,q as Ee,o as Te,d as P,E as Re,m as Ne,D as Pe,z as Z,O as ae,b as ye,a as Oe,U as Ue,R as Ie}from"./index-C3PRlZvS.js";import{i as $e}from"./isSameOrAfter-CaQa_Hin.js";import{L as oe}from"./LeadResource-Dw_1IhlM.js";import{P as Fe}from"./PageHeader-PLupPr9R.js";import{C as Ye}from"./CsvExport-Ds1ml95e.js";import{u as de,M as qe,L as Be,a as We,b as Ge,U as je,c as Ve,d as He,D as Ke,g as ze}from"./LeadDetailPage-CFF3CDoa.js";import{b as Je,r as Qe,p as Xe}from"./file-BsWSiK_q.js";import{L as Ze}from"./LeadsBoards-hi_RsImZ.js";import{D as et}from"./DatePickerCell-CJhnmsN4.js";import"./useClipboard-DdSkSwcW.js";import"./clients-B8Kd_D_A.js";import"./LeadBlacklistResource-CSrDApB2.js";import"./GroupResource-tmrjxvnY.js";import"./IndustryResource-M9XhWYYL.js";import"./PartnerResource-Da6bJ3Yo.js";const tt={__name:"LeadBulkUploadDialog",emits:["close","fetch"],setup(F,{emit:e}){const{showErrorNotificationFromError:a,showInfoNotification:t,showSuccessNotification:l,showWarningNotification:s}=Se(),i=[{divider:!0},{header:"Opportunity"},{key:"lead.name",label:"Opportunity Name"},{key:"lead.message",label:"Inquiry"},{key:"lead.industry",label:"Industry"},{key:"lead.probability",label:"Opportunity Probability"},{key:"lead.temperature",label:"Temperature"},{divider:!0},{header:"Opportunity Client"},{key:"opportunity.name",label:"Client Name"},{key:"opportunity.phone",label:"Client Phone #"},{key:"opportunity.website",label:"Website"},{key:"opportunity.expectedMrr",label:"Expected MRR"},{key:"opportunity.expectedOneTimeFee",label:"Expected One Time Fee"},{key:"opportunity.probability",label:"Client Probability"},{key:"opportunity.expectedCloseDate",label:"Expected Close Date"},{divider:!0},{header:"Opportunity Contact"},{key:"contact.name",label:"Primary Contact Name"},{key:"contact.email",label:"Primary Contact Email"},{key:"contact.phone",label:"Primary Contact Phone"},{key:"contact.notes",label:"Primary Contact Notes"}],r=c(null),M=c(!1),A=c(!1),o=c(""),h=c([]),_=c([]),p=c({}),E=k(()=>_.value.length),O=k(()=>Object.values(p.value).filter(f=>f)),K=k(()=>O.value.includes("lead.name")),j=k(()=>{const f=O.value;return new Set(f).size!==f.length}),V=k(()=>!!r.value&&h.value.length>0&&_.value.length>0&&K.value&&!j.value&&!A.value&&!o.value);function v(){e("close")}function C(){r.value=null,A.value=!1,o.value="",h.value=[],_.value=[],p.value={}}async function J(){if(o.value="",!r.value){C();return}if(!r.value.name.toLowerCase().endsWith(".csv")){o.value="Please upload a .csv file.",C();return}A.value=!0;try{const f=await Qe(r.value),T=Xe(f);if(!T.length){o.value="Empty file.",C();return}const d=T[0].map(R=>(R||"").trim()),b=T.slice(1).filter(R=>R.some(w=>(w||"").trim()!==""));if(!b.length){o.value="No data rows found.",C();return}h.value=d,_.value=b;const Y={};d.forEach((R,w)=>{Y[w]=null}),p.value=Y}catch{o.value="Failed to parse or read the CSV file.",C()}finally{A.value=!1}}function B(f){const T=new Set(Object.entries(p.value).filter(([d,b])=>Number(d)!==f&&b).map(([,d])=>d));return[{key:null,label:"Ignore",disabled:!1},...i.map(d=>({...d,disabled:d.key&&T.has(d.key)}))]}function Q(){const f={};return Object.entries(p.value).forEach(([d,b])=>{b&&(f[Number(d)]=b)}),_.value.map(d=>{const b={lead:{},opportunity:{},contact:{}};return Object.entries(f).forEach(([Y,R])=>{const[w,W]=R.split(".");b[w]&&(b[w][W]=(d[Y]||"").trim())}),b}).filter(d=>d.lead&&d.lead.name)}async function H(){if(o.value="",!V.value){o.value="Please select a CSV, map at least Opportunity Name, and resolve any duplicate mappings.";return}const f=Q();if(!f.length){o.value="No valid rows to import (Opportunity Name is required).";return}M.value=!0;try{const T={leads:f,uploadedAt:new Date().toISOString()},d=await oe.bulkUploadLeads(T);e("fetch");const{newRecords:b=[],duplicates:Y=[]}=d.data||{},R=b.length,w=Y.length,W=[];if(R>0&&W.push(`${R} new ${R>1?"opportunities":"opportunity"} created.`),w>0&&W.push(`${w} existing ${w>1?"opportunities":"opportunity"} skipped.`),W.length>0){l(W.join(" "));const X=[["Opportunity Name","Status"]];R>0&&X.push(...b.map(ee=>[ee.name,"Added"])),w>0&&X.push(...Y.map(ee=>[ee.name,"Skipped"])),Ae(Je(X),`bulk-upload-results-${new Date().toISOString()}.csv`,"text/csv"),t("Upload results downloaded as CSV.")}else s("Import completed but no records were created.");v()}catch(T){a(T)}finally{M.value=!1}}return{__sfc:!0,emit:e,showErrorNotificationFromError:a,showInfoNotification:t,showSuccessNotification:l,showWarningNotification:s,acceptedFields:i,file:r,loading:M,parsing:A,fileValidationError:o,csvHeaders:h,csvRows:_,headerMappings:p,csvRowCount:E,selectedKeys:O,hasNameMapping:K,duplicateSelection:j,canImport:V,closeBulkUploadDialog:v,reset:C,handleFileChange:J,availableOptions:B,buildLeadsFromMapping:Q,uploadBulkFile:H}}};var at=function(){var e=this,a=e._self._c,t=e._self._setupProxy;return a("v-card",[a("v-card-title",[a("span",{staticClass:"headline"},[e._v("Bulk Upload")]),a("v-spacer"),a("v-btn",{attrs:{color:"grey",icon:""},on:{click:t.closeBulkUploadDialog}},[a("v-icon",[e._v("mdi-close")])],1)],1),a("v-card-text",[a("div",{staticClass:"px-3"},[a("div",{staticClass:"flex items-center space-x-3 my-6"},[a("v-file-input",{attrs:{label:"Select A File (.csv)",accept:".csv","prepend-icon":"","prepend-inner-icon":"mdi-file",filled:"","hide-details":""},on:{change:t.handleFileChange},model:{value:t.file,callback:function(l){t.file=l},expression:"file"}}),a("v-btn",{attrs:{outlined:"",color:"error",disabled:!t.file||t.loading},on:{click:t.reset}},[e._v(" Remove File ")])],1),t.parsing?a("v-alert",{attrs:{type:"info",dense:""}}
1,[e._v("Please wait, parsing CSVâ¦")]):e._e(),a("div",[t.fileValidationError?a("v-alert",{staticClass:"w-full max-h-[95%] overflow-y-scroll",attrs:{type:"error"}},[a("div",{domProps:{innerHTML:e._s(t.fileValidationError)}})]):e._e()],1),t.csvHeaders.length?a("div",[a("v-alert",{attrs:{type:"info"}},[a("div",[a("p",[e._v('"Opportunity Name" must be mapped. Other fields are optional.')]),a("p",[e._v("Each field can be mapped only once.")]),a("p",[e._v("Use Ignore for unused columns.")])])]),a("v-alert",{attrs:{type:"info"}},[e._v(" Detected "+e._s(t.csvHeaders.length)+" column(s), "+e._s(t.csvRowCount)+" data row(s). ")]),a("v-simple-table",{staticClass:"my-4"},[a("thead",[a("tr",[a("th",{staticClass:"text-left"},[e._v("CSV Header")]),a("th",{staticClass:"text-left"},[e._v("Map To")])])]),a("tbody",e._l(t.csvHeaders,function(l,s){return a("tr",{key:s},[a("td",[e._v(e._s(l))]),a("td",[a("v-select",{attrs:{items:t.availableOptions(s),"item-text":i=>i.label||i.header,"item-value":i=>i.key,"item-disabled":i=>i.disabled,"hide-details":"",dense:"",filled:""},scopedSlots:e._u([{key:"item",fn:function({item:i}){return[i.header?a("v-list-item-content",[a("v-subheader",[e._v(e._s(i.header))])],1):i.divider?a("v-divider"):a("v-list-item-content",[a("v-list-item-title",[e._v(e._s(i.label))])],1)]}}],null,!0),model:{value:t.headerMappings[s],callback:function(i){e.$set(t.headerMappings,s,i)},expression:"headerMappings[idx]"}})],1)])}),0)]),a("div",{staticClass:"mt-6 flex justify-end space-x-3"},[a("v-btn",{attrs:{loading:t.loading,color:"primary",disabled:!t.canImport||t.loading||t.parsing},on:{click:t.uploadBulkFile}},[e._v(" Import ")])],1)],1):e._e()],1)])],1)},st=[],lt=ce(tt,at,st,!1,null,null);const it=lt.exports,nt={__name:"LeadFilters",props:{users:{type:Array,required:!0},clients:{type:Array,required:!0},serviceGroups:{type:Array,required:!0},leads:{type:Array,required:!0},loading:{type:Boolean,default:!1}},setup(F){const e=F,{statuses:a,probabilities:t,temperatures:l,leadSources:s}=de(),i={clientId:[],opportunityName:"",assigneeId:[],status:["New","Discovery","Demo / Pitch","Decisioning","Contract"],source:[],sentAt:null,expectedCloseDate:null,serviceGroups:[],probability:null,expectedMrr:null,temperature:null},r=c({...i}),M=c(i.expectedMrr),A=k(()=>{var p,E;return((E=(p=e.leads)==null?void 0:p.map(O=>O.name))==null?void 0:E.sort())||[]}),o=k(()=>z.sortBy(z.uniqBy(e.users.concat(e.leads.map(p=>{var E;return{id:p.assigneeId,fullName:((E=p.assignee)==null?void 0:E.fullName)||"Deleted User"}})),"id"),"fullName"));function h(){me.emit("lead-filter",r.value)}function _(){r.value={...i},M.value=i.expectedMrr,h()}return ue(r,()=>{h()},{deep:!0,immediate:!0}),ue(M,z.debounce(p=>{r.value.expectedMrr=p},800)),{__sfc:!0,props:e,statuses:a,probabilities:t,temperatures:l,leadSources:s,defaultFilters:i,filter:r,expectedMrrInput:M,opportunityNames:A,allUsers:o,submit:h,resetFilters:_,DatePickerField:Me}}};var rt=function(){var e=this,a=e._self._c,t=e._self._setupProxy;return a("div",{staticClass:"grid grid-cols-2 md:grid-cols-6 items-center gap-3 p-1"},[a("v-select",{attrs:{items:t.statuses,multiple:"",label:"Sales Cycle",clearable:"",filled:"","hide-details":"",disabled:e.loading},scopedSlots:e._u([{key:"selection",fn:function({item:l,index:s}){return[s<2?a("v-chip",{attrs:{small:""}},[a("span",[e._v(e._s(l))])]):e._e(),s===2?a("span",{staticClass:"grey--text text-caption"},[e._v(" +"+e._s(t.filter.status.length-2)+" other(s) ")]):e._e(
1)]}}]),model:{value:t.filter.status,callback:function(l){e.$set(t.filter,"status",l)},expression:"filter.status"}}),a("v-autocomplete",{attrs:{items:t.allUsers,"item-value":"id","item-text":"fullName",label:"Sales Representative",clearable:"",filled:"",multiple:"","hide-details":"",disabled:e.loading},scopedSlots:e._u([{key:"selection",fn:function({item:l,index:s}){return[s<2?a("v-chip",{attrs:{small:""}},[a("span",[e._v(e._s(l.fullName))])]):e._e(),s===2?a("span",{staticClass:"grey--text text-caption"},[e._v(" +"+e._s(t.filter.assigneeId.length-2)+" others ")]):e._e()]}}]),model:{value:t.filter.assigneeId,callback:function(l){e.$set(t.filter,"assigneeId",l)},expression:"filter.assigneeId"}}),a("v-select",{attrs:{label:"Probability",items:t.probabilities,"item-value":"value","item-text":"text",filled:"","hide-details":"",clearable:"",disabled:e.loading},model:{value:t.filter.probability,callback:function(l){e.$set(t.filter,"probability",l)},expression:"filter.probability"}}),a("v-select",{attrs:{label:"Temperature",items:t.temperatures,"item-value":"value","item-text":"text",filled:"","hide-details":"",clearable:"",disabled:e.loading},model:{value:t.filter.temperature,callback:function(l){e.$set(t.filter,"temperature",l)},expression:"filter.temperature"}}),a(t.DatePickerField,{attrs:{"auto-commit":"",menu:"",value:t.filter.sentAt,"display-format":"MM/DD/YYYY","picker-props":{class:"w-full"},label:"Date Entered","prepend-inner-icon":"event","hide-details":"",filled:"",clearable:"",disabled:e.loading},on:{input:function(l){t.filter.sentAt=l},"click:clear":function(l){t.filter.sentAt=null}}}),a(t.DatePickerField,{attrs:{"auto-commit":"",menu:"",value:t.filter.expectedCloseDate,"display-format":"MM/DD/YYYY","picker-props":{class:"w-full"},label:"Expected Close Date","prepend-inner-icon":"event","hide-details":"",filled:"",clearable:"",disabled:e.loading},on:{input:function(l){t.filter.expectedCloseDate=l},"click:clear":function(l){t.filter.expectedCloseDate=null}}}),a("v-autocomplete",{attrs:{items:e.clients,"item-value":"id","item-text":"name",label:"Client",clearable:"",filled:"",multiple:"","hide-details":"",disabled:e.loading},scopedSlots:e._u([{key:"selection",fn:function({item:l,index:s}){return[s<2?a("v-chip",{attrs:{small:""}},[a("span",[e._v(e._s(l.name))])]):e._e(),s===2?a("span",{staticClass:"grey--text text-caption"},[e._v(" +"+e._s(t.filter.clientId.length-2)+" others ")]):e._e(
1)]}}]),model:{value:t.filter.clientId,callback:function(l){e.$set(t.filter,"clientId",l)},expression:"filter.clientId"}}),a("v-autocomplete",{attrs:{items:t.opportunityNames,filled:"",label:"Opportunity Name",clearable:"","hide-details":"",disabled:e.loading},model:{value:t.filter.opportunityName,callback:function(l){e.$set(t.filter,"opportunityName",l)},expression:"filter.opportunityName"}}),a("v-select",{attrs:{items:t.leadSources,"item-value":"id",label:"Source",clearable:"",filled:"","hide-details":"",multiple:"",disabled:e.loading},scopedSlots:e._u([{key:"selection",fn:function({item:l,index:s}){return[s<2?a("v-chip",{attrs:{small:""}},[a("span",[e._v(e._s(l))])]):e._e(),s===2?a("span",{staticClass:"grey--text text-caption"},[e._v(" +"+e._s(t.filter.source.length-2)+" other(s) ")]):e._e()]}}]),model:{value:t.filter.source,callback:function(l){e.$set(t.filter,"source",l)},expression:"filter.source"}}),a("v-autocomplete",{attrs:{items:e.serviceGroups,"item-value":"id","item-text":"name",label:"Services",clearable:"",filled:"",multiple:"","hide-details":"",disabled:e.loading},scopedSlots:e._u([{key:"selection",fn:function({item:l,index:s}){return[s<2?a("v-chip",{attrs:{small:""}},[a("span",[e._v(e._s(l.name))])]):e._e(),s===2?a("span",{staticClass:"grey--text text-caption"},[e._v(" +"+e._s(t.filter.serviceGroups.length-2)+" other(s) ")]):e._e(
1)]}}]),model:{value:t.filter.serviceGroups,callback:function(l){e.$set(t.filter,"serviceGroups",l)},expression:"filter.serviceGroups"}}),a("v-text-field",{attrs:{label:"Expected MRR (Greater Than)",clearable:"",filled:"","hide-details":"",type:"number",prefix:"$",disabled:e.loading},on:{wheel:function(l){l.preventDefault(),l.stopPropagation()}},model:{value:t.expectedMrrInput,callback:function(l){t.expectedMrrInput=l},expression:"expectedMrrInput"}}),a("v-btn",{attrs:{large:"",outlined:"",color:"secondary"},on:{click:t.resetFilters}},[e._v("Reset Filters")])],1)},ot=[],ct=ce(nt,rt,ot,!1,null,null);const ut=ct.exports,dt={__name:"LeadForm",props:{value:{type:Object,required:!0},users:{type:Array,required:!0},clients:{type:Array,required:!0},serviceGroups:{type:Array,required:!0}},emits:["input","close","fetch"],setup(F,{emit:e}){const a=F,{showErrorNotification:t,showSuccessNotification:l}=Se(),{leadSources:s}=de(),{requiredTextRule:i,requiredArrayRule:r,mustBeNumberRule:M}=Ee(),A=c(null),o=c(null),h=c(!1),_=c(""),p=c([]),E=[{text:"New Client",value:"new"},{text:"Existing Client",value:"existing"}];Te(()=>{const v=a.value;v.id||(v.status="New",v.sentAt=P().format("YYYY-MM-DD")),(!v.opportunities||!Array.isArray(v.opportunities))&&(v.opportunities=[{name:"",website:"",serviceGroupIds:[]}]),v.primaryContact||(v.primaryContact={name:"",email:"",phone:""}),o.value=v}),ue(o,()=>{e("input",o.value)},{deep:!0}),ue(_,()=>{o.value.clientId=null});function O(){e("close")}function K(){var v;(v=A.value)!=null&&v.validate()&&(_.value==="existing"&&(o.value.opportunities.forEach(C=>{var J,B;C.name=((J=C.serviceGroups)==null?void 0:J.name)||"",C.serviceGroupIds=[((B=C.serviceGroups)==null?void 0:B.id)||""]}),o.value.primaryContact={name:o.value.primaryContactObject.fullName||"",email:o.value.primaryContactObject.email||"",phone:o.value.primaryContactObject.phone||""}),oe.createLead(o.value).then(()=>{e("fetch"),l("Opportunity has been created successfully"),O()}).catch(()=>{t()}))}function j(){o.value={...o.value,opportunities:[...o.value.opportunities,{name:"",website:"",serviceGroupIds:[]}]}}function V(){Re.getClientContacts(o.value.clientId).then(v=>{p.value=z.sortBy(v.data.map(C=>C.Contact),"fullName")})}return{__sfc:!0,props:a,emit:e,showErrorNotification:t,showSuccessNotification:l,leadSources:s,requiredTextRule:i,requiredArrayRule:r,mustBeNumberRule:M,form:A,lead:o,isFormValid:h,opportunityType:_,clientContacts:p,options:E,closeDialog:O,save:K,addNewOpportunity:j,getContacts:V,DatePickerField:Me}}};var pt=function(){var e=this,a=e._self._c,t=e._self._setupProxy;return t.lead!==null?a("v-card",[a("v-card-title",{staticClass:"flex justify-between"},[a("span",{staticClass:"headline"},[e._v(e._s(t.lead.id?"Edit":"Create")+" Opportunity")]),a("div",[a("span",{staticClass:"cursor-pointer",on:{click:t.closeDialog}},[a("i",{staticClass:"fas fa-times text-gray-400 hover:text-gray-500"})])])]),a("v-card-text",{staticClass:"h-[calc(100vh-20%)]"},[a("v-form",{ref:"form",attrs:{"lazy-validation":""},model:{value:t.isFormValid,callback:function(l){t.isFormValid=l},expression:"isFormValid"}},[a("div",{staticClass:"p-2"},[a("v-select",{attrs:{filled:"",label:"Is this opportunity for an existing client or a new client?",items:t.options},model:{value:t.opportunityType,callback:function(l){t.opportunityType=l},expression:"opportunityType"}})],1),t.opportunityType?a("div",{staticClass:"px-2"},[t.opportunityType==="existing"?a("v-autocomplete",{attrs:{filled:"",label:"Client",items:e.clients,"item-text":"name","item-value":"id",rules:t.requiredTextRule},on:{input:t.getContacts},model:{value:t.lead.clientId,callback:function(l){e.$set(t.lead,"clientId",l)},expression:"lead.clientId"}}):e._e(),a("div",{staticClass:"flex items-center space-x-3"},[a(t.DatePickerField,{attrs:{"auto-commit":"",menu:"",value:t.lead.sentAt,"display-format":"MM/DD/YYYY",label:"Date","prepend-inner-icon":"event",filled:""},on:{input:function(l){t.lead.sentAt=l}}}),a("v-select",{attrs:{filled:"",label:"Source",items:t.leadSources,required:"",rules:t.requiredTextRule},model:{value:t.lead.source,callback:function(l){e.$set(t.lead,"source",l)},expression:"lead.source"}})],1),t.lead.source==="Referral"?a("v-text-field",{attrs:{filled:"",label:"Referral Source"},model:{value:t.lead.referralSource,callback:function(l){e.$set(t.lead,"referralSource",l)},expression:"lead.referralSource"}}
1):e._e(),a("v-text-field",{attrs:{filled:"",label:"Opportunity Name",rules:t.requiredTextRule,required:"","persistent-hint":""},model:{value:t.lead.name,callback:function(l){e.$set(t.lead,"name",l)},expression:"lead.name"}}),a("v-autocomplete",{attrs:{"item-text":"fullName","item-value":"id",filled:"",label:"Sales Representative",items:e.users,rules:t.requiredTextRule},model:{value:t.lead.assigneeId,callback:function(l){e.$set(t.lead,"assigneeId",l)},expression:"lead.assigneeId"}}),t.opportunityType==="new"?[a("v-divider",{staticClass:"mt-3 mb-6",attrs:{dark:""}}),a("h6",[e._v("Primary Contact")]),a("div",[a("v-text-field",{attrs:{filled:"",label:"Primary Contact Name",rules:t.requiredTextRule,required:""},model:{value:t.lead.primaryContact.name,callback:function(l){e.$set(t.lead.primaryContact,"name",l)},expression:"lead.primaryContact.name"}})],1),a("div",{staticClass:"flex items-center space-x-3"},[a("v-text-field",{attrs:{filled:"",label:"Primary Contact Email",rules:t.requiredTextRule,required:""},model:{value:t.lead.primaryContact.email,callback:function(l){e.$set(t.lead.primaryContact,"email",l)},expression:"lead.primaryContact.email"}}),a("v-text-field",{attrs:{filled:"",label:"Primary Contact Phone"},model:{value:t.lead.primaryContact.phone,callback:function(l){e.$set(t.lead.primaryContact,"phone",l)},expression:"lead.primaryContact.phone"}})],1)]:e._e(),t.opportunityType==="existing"?[a("v-divider",{staticClass:"mt-3 mb-6",attrs:{dark:""}}),a("h6",[e._v("Primary Contact")]),a("div",[a("v-autocomplete",{attrs:{filled:"",label:"Select an existing client contact",items:t.clientContacts,"item-text":l=>`${l.fullName} - ${l.email||l.phone}`,"item-value":"id","return-object":"",rules:t.requiredTextRule,required:"",disabled:!t.lead.clientId},model:{value:t.lead.primaryContactObject,callback:function(l){e.$set(t.lead,"primaryContactObject",l)},expression:"lead.primaryContactObject"}})],1),a("v-divider",{staticClass:"mb-6",attrs:{dark:""}})]:e._e(),t.opportunityType==="new"?[a("v-divider",{staticClass:"mb-6",attrs:{dark:""}}),a("v-textarea",{attrs:{filled:"",label:"Inquiry"},model:{value:t.lead.message,callback:function(l){e.$set(t.lead,"message",l)},expression:"lead.message"}}),a("v-divider",{staticClass:"mb-6",attrs:{dark:""}})]:e._e(),t.opportunityType==="new"?[a("h6",[e._v("Clients")]),a("v-simple-table",{staticClass:"mb-6",scopedSlots:e._u([{key:"default",fn:function(){return[a("thead",[a("tr",[a("th",{staticClass:"text-left"},[e._v("Client Name")]),a("th",{staticClass:"text-left"},[e._v("Website")]),a("th",{staticClass:"text-left"},[e._v("Service(s)")])])]),a("tbody",e._l(t.lead.opportunities,function(l,s){return a("tr",{key:s},[a("td",{staticClass:"!p-0"},[a("v-text-field",{attrs:{filled:"",label:"Client Name",rules:t.requiredTextRule,required:"","hide-details":""},model:{value:l.name,callback:function(i){e.$set(l,"name",i)},expression:"opportunity.name"}})],1),a("td",{staticClass:"!p-0"},[a("v-text-field",{attrs:{filled:"",label:"Website","persistent-hint":"",hint:"Please include http:// or https://","hide-details":""},model:{value:l.website,callback:function(i){e.$set(l,"website",i)},expression:"opportunity.website"}})],1),a("td",{staticClass:"!p-0 flex items-center space-x-2"},[a("v-autocomplete",{attrs:{filled:"",label:"Service(s)",items:e.serviceGroups,"item-text":"name","item-value":"id",rules:t.requiredArrayRule,required:"","hide-details":"",multiple:""},model:{value:l.serviceGroupIds,callback:function(i){e.$set(l,"serviceGroupIds",i)},expression:"opportunity.serviceGroupIds"}}),s!==0?a("v-btn",{attrs:{icon:"",small:"",color:"error"},on:{click:function(i){return t.lead.opportunities.splice(s,1)}}},[a("v-icon",[e._v("mdi-delete")])],1):e._e()],1)])}),0)]},proxy:!0}],null,!1,769664103)}),a("v-btn",{attrs:{small:"",color:"success"},on:{click:t.addNewOpportunity}},[a("v-icon",{attrs:{small:"",left:""}},[e._v("add")]),e._v(" Add New ")],1)]:t.opportunityType==="existing"?[a("h6",[e._v("Services")]),a("v-simple-table",{staticClass:"mb-6",scopedSlots:e._u([{key:"default",fn:function(){return[a("thead",[a("tr",[a("th",{staticClass:"text-left"},[e._v("Service(s)")]),a("th",{staticClass:"text-left"},[e._v("Expected MRR")]),a("th",{staticClass:"text-left"},[e._v("Expected One-Time Fee")])])]),a("tbody",e._l(t.lead.opportunities,function(l,s){return a("tr",{key:s},[a("td",{staticClass:"!p-0"},[a("v-autocomplete",{attrs:{filled:"",label:"Service",items:e.serviceGroups,"item-text":"name","
1item-value":"id","return-object":"",rules:t.requiredTextRule,required:"","hide-details":""},model:{value:l.serviceGroups,callback:function(i){e.$set(l,"serviceGroups",i)},expression:"opportunity.serviceGroups"}})],1),a("td",{staticClass:"!p-0"},[a("v-text-field",{attrs:{filled:"",label:"Expected MRR",type:"number","hide-details":"",rules:t.mustBeNumberRule},on:{wheel:function(i){i.preventDefault(),i.stopPropagation()}},model:{value:l.expectedMrr,callback:function(i){e.$set(l,"expectedMrr",i)},expression:"opportunity.expectedMrr"}})],1),a("td",{staticClass:"!p-0"},[a("v-text-field",{attrs:{filled:"",label:"Expected One Time Fee",type:"number","hide-details":"",rules:t.mustBeNumberRule},on:{wheel:function(i){i.preventDefault(),i.stopPropagation()}},model:{value:l.expectedOneTimeFee,callback:function(i){e.$set(l,"expectedOneTimeFee",i)},expression:"opportunity.expectedOneTimeFee"}})],1)])}),0)]},proxy:!0}],null,!1,1563268310)}),a("v-btn",{attrs:{small:"",color:"success"},on:{click:t.addNewOpportunity}},[a("v-icon",{attrs:{small:"",left:""}},[e._v("add")]),e._v(" Add New Service ")],1)]:e._e()],2):e._e()])],1),a("v-card-actions",{staticClass:"py-6"},[a("v-spacer"),a("v-btn",{attrs:{color:"grey",text:""},on:{click:t.closeDialog}},[e._v("Cancel")]),a("v-btn",{attrs:{color:"primary",disabled:!t.isFormValid},on:{click:t.save}},[e._v("Save")])],1)],1):e._e()},vt=[],ft=ce(dt,pt,vt,!1,null,null);const mt=ft.exports,yt={__name:"LeadsTable",props:["leads","loading","users","serviceGroups"],emits:["fetch"],setup(F,{emit:e}){const a=F,t=Ne(),{statusCanBeChanged:l,statuses:s,updateStatus:i,temperatures:r,updateLead:M,probabilities:A,canAssignUser:o,updateAssignee:h,clientInfoDialog:_,statusUpdateLead:p,clientInfoDialogType:E,resetUpdateStatus:O,pitchDateDialog:K,lostDialog:j,unqualificationReasonDialog:V,archivedToBlacklistDialog:v}=de({emit:e}),{can:C}=Pe(),J=k(()=>C("manage","Clients")),B=c(""),Q=c(!1),H=c(null),f=c(!1),T=c(null),d=c(!1),b=k(()=>[{text:"Opportunity",value:"name",cellClass:"cursor-pointer"},{text:"Sales Representative",value:"assignee.fullName"},{text:"Sales Cycle",value:"status"},{text:"Temperature",value:"temperature"},{text:"Expected Close Date",value:"expectedCloseDate"},{text:"Probability",value:"probability"},{text:"Weighted MRR",value:"weightedMrr"},{text:"Expected MRR",value:"totalExpectedMrr"},{text:"Services",value:"service"},{text:"Source",value:"source"},{text:"Opportunity Date",value:"sentAt"},{text:"Last Updated",value:"lastUpdated"},{text:"Actions",value:"actions",align:"right",sortable:!1}]),Y=k(()=>!B.value||B.value===""?a.leads:a.leads.filter(x=>{var n,y,D,N,g,L,m,I,G,$;const U=B.value.toLowerCase();return((n=x.name)==null?void 0:n.toLowerCase().includes(U))||((y=x.email)==null?void 0:y.toLowerCase().includes(U))||((N=(D=x.primaryContact)==null?void 0:D.name)==null?void 0:N.toLowerCase().includes(U))||((L=(g=x.primaryContact)==null?void 0:g.phone)==null?void 0:L.toLowerCase().includes(U))||((I=(m=x.primaryContact)==null?void 0:m.email)==null?void 0:I.toLowerCase().includes(U))||((G=x.assignee)==null?void 0:G.fullName.toLowerCase().includes(U))||(($=x.Industry)==null?void 0:$.name.toLowerCase().includes(U))}));function R(x){return(s==null?void 0:s.filter(U=>U!==x.status))||[]}function w(x){H.value=x,f.value=!0}function W(){H.value=null,f.value=!1}function X(x,U=!1){if(U){window.open(t.resolve({name:"leads.detail",params:{leadId:x.id}}).href,"_blank");return}T.value=x.id,ye(()=>{d.value=!0})}function ee(){e("fetch")}function pe(x){H.value=x,Q.value=!0}function ve(){H.value=null,Q.value=!1}function fe(){T.value=null,d.value=!1}return{__sfc:!0,props:a,emit:e,router:t,statusCanBeChanged:l,statuses:s,updateStatus:i,temperatures:r,updateLead:M,probabilities:A,canAssignUser:o,updateAssignee:h,clientInfoDialog:_,statusUpdateLead:p,clientInfoDialogType:E,resetUpdateStatus:O,pitchDateDialog:K,lostDialog:j,unqualificationReasonDialog:V,archivedToBlacklistDialog:v,can:C,canManageLeads:J,search:B,mergeLeadsDialog:Q,selectedLead:H,timelineDialog:f,selectedLeadId:T,showLeadDetails:d,headers:b,filteredLeads:Y,statusOptions:R,openTimelineDialog:w,closeTimelineDialog:W,goToLeadDetails:X,fetch:ee,showMergeLeadsDialog:pe,closeMergeLeadsDialog:ve,closeLeadDetails:fe,DatePickerCell:et,formatCurrency:ae,formatDate:Z,getUniqueServices:ze,DemoDialog:Ke,LostDialog:He,MergeLeadsDialog:Ve,UnqualifyDialog:je,LeadClientForm:Ge,LeadTimeline:We,LeadDetailPage:Be,MoveToBlacklistDialog:qe}}};var gt=function(){var l;var e=this,a=e._self._c,t=e._self._setupProxy;return a("div",{staticClass:"p-1"},[a("v-data-table",{staticClass:"elevation-1",attrs:{headers:t.headers,items:t.filteredLeads,loading:e.loading,"items-per-page":30,"footer-props":{itemsPerPageOptions:[10,20,30,50,100]},"sort-by":"sentAt","sort-desc":"","fixed-header":"",height:"calc(100vh - 350px)"},scopedSlots:e._u([{key:"header.weightedMrr",fn:function({header:s}){return[a("div",{staticClass:"flex items-center"},[a("span",[e._v(e._s(s.text))]),a("v-tooltip",{attrs:{bottom:""},scopedSlots:e._u([{key:"activator",fn:function({on:i,attrs:r}){return[a("v-btn",e._g(e._b({staticClass:"ml-2",attrs:{icon:"",small:""}},"v-btn",r,!1),i),[a("v-icon",{attrs:{small:""}},[e._v("mdi-information")])],1)]}}],null,!0)},[a("div",[a("ul",{staticClass:"list-disc"},[a("li",[e._v("Probability = 90% â Rev Exp is 80%")]),a("li",[e._v("Probability = 70% â Rev Exp is 50%")]),a("li",[e._v("Probability = 50% â Rev Exp is 20%")]),a("li",[e._v("Probability = 10% â Rev Exp is 0%")])])])])],1
1)]}},{key:"item.name",fn:function({item:s}){var i;return[a("div",{staticClass:"cursor-pointer",on:{click:[function(r){return r.ctrlKey||r.shiftKey||r.altKey||r.metaKey?null:t.goToLeadDetails(s)},function(r){return r.metaKey?t.goToLeadDetails(s,!0):null}]}},[a("div",{staticClass:"text-blue-600"},[e._v(" "+e._s(s.name)+" ")]),s.client?a("div",{staticClass:"fit"},[a("span",{staticClass:"font-bold text-gray-700"},[e._v("For Existing Client:")]),e._v(" "+e._s(((i=s.client)==null?void 0:i.name)||"N/A")+" ")]):e._e()])]}},{key:"item.status",fn:function({item:s}){return[t.statusCanBeChanged(s)?[t.canManageLeads?a("v-edit-dialog",{ref:`update-status-${s.id}`,scopedSlots:e._u([{key:"input",fn:function(){return[a("div",{staticClass:"p-6"},[a("h6",[e._v("Update Status")]),a("v-select",{staticClass:"min-w-[300px]",attrs:{filled:"",value:s.status,items:t.statusOptions(s)},scopedSlots:e._u([{key:"item",fn:function({item:i}){return[a("div",{staticClass:"w-full",on:{click:function(r){t.updateStatus(s,i),e.$refs[`update-status-${s.id}`].save()}}},[e._v(" "+e._s(i)+" ")])]}}],null,!0)})],1)]},proxy:!0}],null,!0)},[a("span",{staticClass:"fit"},[e._v(e._s(s.status))])]):e._e()]:[e._v(" "+e._s(s.status)+" ")]]}},{key:"item.temperature",fn:function({item:s}){return[[t.canManageLeads?a("v-edit-dialog",{ref:`update-temperature-${s.id}`,scopedSlots:e._u([{key:"input",fn:function(){return[a("div",{staticClass:"p-6"},[a("h6",[e._v("Update Temperature")]),a("v-select",{staticClass:"min-w-[300px]",attrs:{label:"Temperature",items:t.temperatures},on:{change:function(i){t.updateLead(s,"temperature","Temperature"),e.$refs[`update-temperature-${s.id}`].save()}},model:{value:s.temperature,callback:function(i){e.$set(s,"temperature",i)},expression:"item.temperature"}})],1)]},proxy:!0}],null,!0)},[a("span",{staticClass:"fit"},[e._v(e._s(s.temperature||"Not Set"))])]):e._e()]]}},{key:"item.probability",fn:function({item:s}){return[t.canManageLeads?a("v-edit-dialog",{ref:`update-probability-${s.id}`,attrs:{"return-value":s.probability},scopedSlots:e._u([{key:"input",fn:function(){return[a("div",{staticClass:"p-2"},[a("v-select",{attrs:{items:t.probabilities,label:"Probability","item-value":"value","item-text":"text",required:"",clearable:""},model:{value:s.probability,callback:function(i){e.$set(s,"probability",i)},expression:"item.probability"}}),a("div",{staticClass:"flex"},[a("v-spacer"),a("v-btn",{attrs:{small:"",color:"primary"},on:{click:function(i){e.$refs[`update-probability-${s.id}`].save(),t.updateLead(s,"probability","Probability")}}},[e._v(" Save ")])],1)],1)]},proxy:!0}],null,!0)},[a("span",{staticClass:"fit"},[e._v(e._s(s.probability?`${s.probability}%`:"Not set"))])]):e._e()]}},{key:"item.weightedMrr",fn:function({item:s}){return[e._v(" "+e._s(t.formatCurrency(s.weightedMrr))+" ")]}},{key:"item.expectedCloseDate",fn:function({item:s}){return[t.canManageLeads?a(t.DatePickerCell,{attrs:{value:s.expectedCloseDate,"display-format":"LL",placeholder:"Not set","no-title":"",title:"Update Expected Close Date"},on:{input:function(i){s.expectedCloseDate=i},save:function(i){return t.updateLead(s,"expectedCloseDate","Expected Close Date")}},scopedSlots:e._u([{key:"default",fn:function({displayValue:i}){return[a("div",{staticClass:"fit"},[e._v(e._s(i))])]}}],null,!0)}):e._e()]}},{key:"item.service",fn:function({item:s}){return[a("div",{domProps:{innerHTML:e._s(t.getUniqueServices(s.LeadOpportunities,e.serviceGroups).join("<br/>"))}})]}},{key:"item.assignee.fullName",fn:function({item:s}){var i,r;return[t.canAssignUser()?a("v-edit-dialog",{ref:`update-assignee-${s.id}`,attrs:{"return-value":s.assigneeId},scopedSlots:e._u([{key:"input",fn:function(){return[a("div",{staticClass:"p-6"},[a("h6",[e._v("Update Sales Representative")]),a("v-autocomplete",{staticClass:"min-w-[300px]",attrs:{items:e.users,"item-text":"fullName","item-value":"id","single-line":""},model:{value:s.assigneeId,callback:function(M){e.$set(s,"assigneeId",M)},expression:"item.assigneeId"}}),a("div",{staticClass:"flex"},[a("v-spacer"),a("v-btn",{staticClass:"mt-4",attrs:{color:"primary"},on:{click:function(M){t.updateAssignee(s),e.$refs[`update-assignee-${s.id}`].save()}}},[e._v(" Save ")])],1)],1)]},proxy:!0}],null,!0)},[a("span",{staticClass:"fit"},[e._v(e._s(((i=s.assignee)==null?void 0:i.fullName)||"Unassigned"))])]):[e._v(" "+e._s(((r=s.assignee)==null?void 0:r.fullName)||"Unassigned")+" ")]]}},{key:"item.totalExpectedMrr",fn:function({item:s}){return[a("div",{staticClass:"fit"},[e._v(e._s(t.formatCurrency(s.totalExpectedMrr)||0))])]}},{key:"item.sentAt",fn:function({item:s}){return[e._v(" "+e._s(t.formatDate(s.sentAt))+" ")]}},{key:"item.lastUpdated",fn:function({item:s}){return[a("v-btn",{attrs:{text:""},on:{click:function(i){return t.openTimelineDialog(s)}}},[e._v(" "+e._s(t.formatDate(s.lastUpdated))+" ")])]}},{key:"item.source",fn:function({item:s}){return[a("div",{staticClass:"fit"},[e._v(e._s(s.source))])]}},{key:"item.actions",fn:function({item:s}){return[a("div",{staticClass:"flex items-center space-x-1 justify-end"},[a("v-menu",{attrs:{bottom:"",left:""},scopedSlots:e._u([{key:"activator",fn:function({on:i,attrs:r}){return[a("v-btn",e._g(e._b({attrs:{icon:""}},"v-btn",r,!1),i),[a("v-icon",[e._v("mdi-dots-vertical")])],1)]}}],null,!0)},[a("v-list",[t.canManageLeads&&s.status==="Archived"?a("v-list-item",{on:{click:function(i){return i.stopPropagation(),t.updateStatus(s,"Unarchived")}}}
1,[a("v-list-item-title",[e._v("Restore")])],1):e._e(),a("v-list-item",{on:{click:function(i){return i.stopPropagation(),t.goToLeadDetails(s,!0)}}},[a("v-list-item-title",[e._v("View Full Details")]),a("v-list-item-action",[a("v-icon",{attrs:{small:""}},[e._v("mdi-open-in-new")])],1)],1),t.canManageLeads?a("v-list-item",{on:{click:function(i){return i.stopPropagation(),t.showMergeLeadsDialog(s)}}},[a("v-list-item-title",[e._v("Merge Opportunities")])],1):e._e()],1)],1)],1)]}}])}),a("v-dialog",{attrs:{"max-width":"95%",width:"960px",persistent:""},on:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:t.resetUpdateStatus.apply(null,arguments)}},model:{value:t.clientInfoDialog,callback:function(s){t.clientInfoDialog=s},expression:"clientInfoDialog"}},[t.clientInfoDialog&&t.statusUpdateLead?a(t.LeadClientForm,{attrs:{lead:t.statusUpdateLead,type:t.clientInfoDialogType},on:{close:t.resetUpdateStatus,update:t.fetch}}):e._e()],1),a("v-dialog",{attrs:{width:"860","max-width":"95%",persistent:""},on:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:t.resetUpdateStatus.apply(null,arguments)}},model:{value:t.pitchDateDialog,callback:function(s){t.pitchDateDialog=s},expression:"pitchDateDialog"}},[t.pitchDateDialog?a(t.DemoDialog,{attrs:{"lead-to-update":t.statusUpdateLead},on:{close:t.resetUpdateStatus,update:t.fetch}}):e._e()],1),a("v-dialog",{attrs:{width:"720px","max-width":"95%",persistent:""},on:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:t.resetUpdateStatus.apply(null,arguments)}},model:{value:t.lostDialog,callback:function(s){t.lostDialog=s},expression:"lostDialog"}},[t.lostDialog?a(t.LostDialog,{attrs:{"lead-to-update":t.statusUpdateLead},on:{close:t.resetUpdateStatus,update:t.fetch}}):e._e()],1),a("v-dialog",{attrs:{width:"480","max-width":"95%",persistent:""},on:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:t.resetUpdateStatus.apply(null,arguments)}},model:{value:t.unqualificationReasonDialog,callback:function(s){t.unqualificationReasonDialog=s},expression:"unqualificationReasonDialog"}},[t.unqualificationReasonDialog?a(t.UnqualifyDialog,{attrs:{"lead-to-update":t.statusUpdateLead},on:{close:t.resetUpdateStatus,update:t.fetch}}):e._e()],1),a("v-dialog",{attrs:{width:"640","max-width":"95%",persistent:""},on:{keydown:function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"esc",27,s.key,["Esc","Escape"])?null:t.resetUpdateStatus.apply(null,arguments)}},model:{value:t.archivedToBlacklistDialog,callback:function(s){t.archivedToBlacklistDialog=s},expression:"archivedToBlacklistDialog"}},[t.archivedToBlacklistDialog?a(t.MoveToBlacklistDialog,{attrs:{lead:t.statusUpdateLead},on:{close:t.resetUpdateStatus,update:t.fetch}}):e._e()],1),a("v-dialog",{attrs:{width:"95%","max-width":"1200",scrollable:""},model:{value:t.mergeLeadsDialog,callback:function(s){t.mergeLeadsDialog=s},expression:"mergeLeadsDialog"}},[t.selectedLead?a(t.MergeLeadsDialog,{attrs:{lead:t.selectedLead,leads:e.leads},on:{close:t.closeMergeLeadsDialog,fetch:t.fetch}}):e._e()],1),a("v-dialog",{attrs:{width:"95%","max-width":"1200",scrollable:""},model:{value:t.timelineDialog,callback:function(s){t.timelineDialog=s},expression:"timelineDialog"}},[t.selectedLead&&t.timelineDialog?a("v-card",[a("v-card-title",{staticClass:"text-h6"},[e._v(" Timeline for "+e._s((l=t.selectedLead)==null?void 0:l.name)+" "),a("v-spacer"),a("v-btn",{attrs:{icon:""},on:{click:t.closeTimelineDialog}},[a("v-icon",[e._v("mdi-close")])],1)],1),a("v-card-text",{staticClass:"min-h-[calc(100vh-20%)]"},[a(t.LeadTimeline,{attrs:{lead:t.selectedLead,"hide-header":!0,"service-groups":e.serviceGroups}})],1)],1):e._e()],1),a("v-dialog",{attrs:{fullscreen:"",transition:"dialog-bottom-transition","retain-focus":"",persistent:""},model:{value:t.showLeadDetails,callback:function(s){t.showLeadDetails=s},expression:"showLeadDetails"}},[a("v-card",[t.showLeadDetails&&t.selectedLeadId?a(t.LeadDetailPage,{attrs:{"lead-id":t.selectedLeadId},on:{fetch:t.fetch,"close-dialog":t.closeLeadDetails}}
1):e._e()],1)],1)],1)},_t=[],bt=ce(yt,gt,_t,!1,null,null);const ht=bt.exports,Ct={__name:"LeadsPage",setup(F){const{can:e}=Pe(),a=Ne(),t=k(()=>e("manage","Clients"));P.extend($e);const l=c([]),{salesRepresentatives:s,calculateWeightedMrr:i}=de({users:l}),r=c(null),M=c(0),A=c(!1),o=c({}),h=c([]),_=c([]),p=c(!1),E=c({}),O=c([]),K=c([]),j=c(!1),V=c(!1),v=c([]),C=k(()=>h.value.map(n=>{var ge,_e,be,he,Ce,xe,De,ke,we,Le;let y,D="",N="",g="",L="",m="",I="",G="";const $=P(n.sentAt),q=n.LeadActivities.filter(({action:u})=>u==="Status updated"),se=((ge=q.find(({details:u})=>{var S;return((S=u==null?void 0:u.new)==null?void 0:S.status)==="Discovery"}))==null?void 0:ge.createdAt)||null,le=((_e=q.find(({details:u})=>{var S;return["Demo","Pitch Scheduled","Demo / Pitch"].includes((S=u==null?void 0:u.new)==null?void 0:S.status)}))==null?void 0:_e.createdAt)||null,ie=((be=q.find(({details:u})=>{var S;return["Decisioning","Pitched","Assessment"].includes((S=u==null?void 0:u.new)==null?void 0:S.status)}))==null?void 0:be.createdAt)||null,te=((he=q.find(({details:u})=>{var S;return["Contract","Contracting"].includes((S=u==null?void 0:u.new)==null?void 0:S.status)}))==null?void 0:he.createdAt)||null,ne=((Ce=q.find(({details:u})=>{var S;return["Closed - Won","Won"].includes((S=u==null?void 0:u.new)==null?void 0:S.status)}))==null?void 0:Ce.createdAt)||null,re=((xe=q.find(({details:u})=>{var S;return["Closed - Lost","Lost"].includes((S=u==null?void 0:u.new)==null?void 0:S.status)}))==null?void 0:xe.createdAt)||null;return n.status==="Closed - Won"?(y="Won",ne&&(D=P(ne).diff($,"day"))):n.status==="Closed - Lost"?(y="Lost",re&&(D=P(re).diff($,"day"))):y="Open",se&&(N=P(se).diff($,"day")),se&&le&&(g=P(le).diff(se,"day")),le&&ie&&(L=P(ie).diff(le,"day")),ie&&te&&(m=P(te).diff(ie,"day")),te&&ne&&(I=P(ne).diff(te,"day")),te&&re&&(G=P(re).diff(te,"day")),{...n,assignee:((De=n.assignee)==null?void 0:De.fullName)||"Unassigned",sendAt:P(n.sentAt).format("MM/DD/YYYY"),primaryContactName:((ke=n.primaryContact)==null?void 0:ke.name)||"",primaryContactEmail:((we=n.primaryContact)==null?void 0:we.email)||"",primaryContactPhone:((Le=n.primaryContact)==null?void 0:Le.phone)||"",phone:n.phone||"",website:n.website||"",referralSource:n.referralSource||"",message:n.message?n.message.replace(/['"]+/g,""):"",totalExpectedMrr:ae(z.sumBy(n.LeadOpportunities.filter(u=>u.status==="Active"),"expectedMrr")),weightedMrr:ae(i(n)),numberOfOpportunities:n.LeadOpportunities.length,opportunities:n.LeadOpportunities.map(u=>`${u.name} (${ae(u.expectedMrr||0)})`).join(`, 2`),wonOrLost:y,daysToCloseWonLost:D??"N/A",statusNew:$.format("MM/DD/YYYY"),statusDiscovery:Z(se,"MM/DD/YYYY",!0,""),statusDemo:Z(le,"MM/DD/YYYY",!0,""),statusDecisioning:Z(ie,"MM/DD/YYYY",!0,""),statusContract:Z(te,"MM/DD/YYYY",!0,""),statusClosedWon:Z(ne,"MM/DD/YYYY",!0,""),statusClosedLost:Z(re,"MM/DD/YYYY",!0,""),daysFromNewToDiscovery:N,daysFromDiscoveryToDemo:g,daysFromDemoToDecisioning:L,daysFromDecisioningToContract:m,daysFromContractToWon:I,daysFromContractToLost:G}})),J=k(()=>"Opportunities"),B=k(()=>({id:{title:"ID"},source:{title:"Source"},sendAt:{title:"Date"},status:{title:"Status"},name:{title:"Opportunity"},assignee:{title:"Assigned To"},primaryContactName:{title:"Primary Contact"},primaryContactEmail:{title:"Primary Contact Email"},primaryContactPhone:{title:"Primary Contact Phone"},referralSource:{title:"Referral Source"},message:{title:"Inquiry"},totalExpectedMrr:{title:"Total Expected MRR"},weightedMrr:{title:"Weighted MRR"},numberOfOpportunities:{title:"Number of Client/Services"},opportunities:{title:"Clients/Services"},wonOrLost:{title:"Won/Lost"},daysToCloseWonLost:{title:"Days to Close-Won/Lost"},statusNew:{title:"Status - New"},daysFromNewToDiscovery:{title:"Days from New to Discovery"},statusDiscovery:{title:"Status - Discovery"},daysFromDiscoveryToDemo:{title:"Days from Discovery to Demo"},statusDemo:{title:"Status - Demo / Pitch"},daysFromDemoToDecisioning:{title:"Days from Demo to Decisioning"},statusDecisioning:{title:"Status - Decisioning"},daysFromDecisioningToContract:{title:"Days from Decisioning to Contract"}
2,statusContract:{title:"Status - Contract"},daysFromContractToWon:{title:"Days from Contract to Won"},statusClosedWon:{title:"Status - Closed - Won"},daysFromContractToLost:{title:"Days from Contract to Lost"},statusClosedLost:{title:"Status - Closed - Lost"}})),Q=k(()=>({name:{title:"Opportunity"},closedWonDate:{title:"Closed - Won Date"},primaryContactName:{title:"Primary Contact"},primaryContactEmail:{title:"Primary Contact Email"},primaryContactPhone:{title:"Primary Contact Phone"},totalExpectedMrr:{title:"Total Expected MRR"}})),H=k(()=>{var N;let n=0;const D=(((N=_.value)==null?void 0:N.filter(g=>["Won","Closed - Won"].includes(g.status)))||[]).reduce((g,L)=>{var I;const m=(I=L.LeadActivities)==null?void 0:I.find(G=>{var $,q;return G.action==="Status updated"&&["Won","Closed - Won"].includes((q=($=G.details)==null?void 0:$.new)==null?void 0:q.status)});return m?(n+=1,g+P(m.createdAt).diff(P(L.sentAt),"day")):g},0);return n===0?0:Math.floor(D/n)}),f=k(()=>{var N;let n=0;const D=(((N=_.value)==null?void 0:N.filter(g=>["Lost","Closed - Lost"].includes(g.status)))||[]).reduce((g,L)=>{var I;const m=(I=L.LeadActivities)==null?void 0:I.find(G=>{var $,q;return G.action==="Status updated"&&["Lost","Closed - Lost"].includes((q=($=G.details)==null?void 0:$.new)==null?void 0:q.status)});return m?(n+=1,g+P(m.createdAt).diff(P(L.sentAt),"day")):g},0);return n===0?0:Math.floor(D/n)}),T=k(()=>{const n=[],y=z.sumBy(h.value,"totalExpectedMrr"),D=z.sumBy(h.value,N=>i(N));return n.push({title:"MRR in Pipeline",value:ae(y)}),n.push({title:"MRR in Pipeline (Annualized)",value:ae(y*12)}),n.push({title:"Avg. Time to Close-Won",value:`${H.value} Days`}),n.push({title:"Avg. Time to Close-Lost",value:`${f.value} Days`}),n.push({title:"Weighted MRR Pipeline",value:ae(D)}),n});async function d(){p.value=!0,await oe.getLeads(E.value).then(n=>{h.value=n.data.map(y=>{const D=z.sortBy(y.LeadActivities,"createdAt").reverse();return{...y,weightedMrr:i(y),lastUpdated:D.length?D[0].createdAt:null}})}),p.value=!1}async function b(){await Ue.getUsersList({userTypeId:1}).then(n=>{l.value=n.data})}async function Y(){K.value=await Ie.getServiceGroupList().then(n=>n.data)}async function R(){O.value=await Re.getClientList({withFields:["id","name","slug","activatedAt","canceledAt"]}).then(n=>n.data)}async function w(){V.value=!0;const n={status:["Closed - Won","Closed - Lost"]};await oe.getLeads(n).then(y=>{_.value=y.data}).finally(()=>{V.value=!1})}function W(){me.on("lead-filter",n=>{E.value={...n},ye(()=>{d()})})}function X(){o.value={}}function ee(){X(),A.value=!0}function pe(){d(),w()}function ve(n){a.push({name:"leads.detail",params:{leadId:n.id}})}function fe(){j.value=!0}function x(){j.value=!1}async function U(){var N;const n={status:"Closed - Won"},y=await oe.getLeads(n).then(g=>g.data),D=[];y.forEach(g=>{g.LeadOpportunities.forEach(L=>{if(L.clientId){const m=g.LeadContacts.find(({isPrimary:I})=>I);D.push({name:L.name,closedWonDate:L.client?Z(L.client.createdAt):"N/A",primaryContactName:(m==null?void 0:m.name)||"N/A",primaryContactEmail:(m==null?void 0:m.email)||"N/A",primaryContactPhone:(m==null?void 0:m.ph
2one)||"N/A",totalExpectedMrr:L.expectedMrr||0})}})}),v.value=z.sortBy(D,"name"),await ye(),(N=r.value)==null||N.download()}return W(),Te(async()=>{p.value=!0,await Promise.allSettled([b(),Y(),R(),w()])}),Oe(()=>{me.off("lead-filter")}),{__sfc:!0,can:e,router:a,canManage:t,users:l,salesRepresentatives:s,calculateWeightedMrr:i,clientsDownload:r,view:M,createDialog:A,newLead:o,leads:h,allLeads:_,loading:p,filters:E,clients:O,serviceGroups:K,bulkUploadDialog:j,loadingMetrics:V,leadClientsData:v,csvRows:C,csvTitle:J,csvLabels:B,leadClientsLabels:Q,averageTimeToCloseWon:H,averageTimeToCloseLost:f,metrics:T,fetchLeads:d,fetchUsers:b,fetchServiceGroups:Y,fetchClients:R,getMetricsData:w,registerEvents:W,resetNewLead:X,openCreateDialog:ee,refreshData:pe,goToLeadDetails:ve,openBulkUploadDialog:fe,closeBulkUploadDialog:x,downloadClients:U,PageHeader:Fe,CsvExport:Ye,LeadBulkUploadDialog:it,LeadFilters:ut,LeadForm:mt,LeadsBoards:Ze,LeadsTable:ht}}};var xt=function(){var e=this,a=e._self._c,t=e._self._setupProxy;return a("div",[a(t.PageHeader,{scopedSlots:e._u([{key:"right",fn:function(){return[t.csvRows.length>0?a(t.CsvExport,{attrs:{"json-data":t.csvRows,labels:t.csvLabels,"csv-title":t.csvTitle}},[a("div",[a("v-btn",[a("v-icon",{attrs:{left:""}},[e._v("download")]),e._v(" Download ")],1)],1)]):e._e(),a("v-btn",{attrs:{outlined:""},on:{click:t.downloadClients}},[a("v-icon",{attrs:{left:""}},[e._v("download")]),e._v(" Download Clients ")],1),t.canManage?a("v-btn",{on:{click:t.openBulkUploadDialog}},[a("v-icon",{attrs:{left:""}},[e._v("cloud_upload")]),e._v(" Bulk Upload ")],1):e._e(),a("v-btn",{attrs:{to:{name:"reporting.lead_report"},color:"secondary"}},[a("v-icon",{attrs:{left:""}},[e._v("mdi-chart-bar")]),e._v(" View Report ")],1),t.canManage?a("v-btn",{attrs:{color:"success"},on:{click:t.openCreateDialog}},[a("v-icon",{attrs:{left:""}},[e._v("mdi-plus")]),e._v(" New Opportunity ")],1):e._e(),a("v-tooltip",{attrs:{bottom:""},scopedSlots:e._u([{key:"activator",fn:function({on:l}){return[a("v-btn",e._g({attrs:{icon:""},on:{click:t.refreshData}},l),[a("v-icon",[e._v("refresh")])],1)]}}])},[a("span",[e._v("Refresh Data")])])]},proxy:!0}])},[e._v(" Opportunities "),a("v-btn-toggle",{staticClass:"mx-2",attrs:{mandatory:""},model:{value:t.view,callback:function(l){t.view=l},expression:"view"}},[a("v-btn",{attrs:{height:"38px"}},[a("v-icon",[e._v("list")]),e._v(" List View ")],1),a("v-btn",{attrs:{height:"38px"}},[a("v-icon",[e._v("dashboard")]),e._v(" Board View ")],1)],1)],1),a("v-divider"),t.metrics.length?a("div",[a("div",{staticClass:"w-full flex flex-row flex-wrap p-6 gap-3"},e._l(t.metrics,function(l,s){return a("div",{key:s},[a("div",{key:l.title,staticClass:"bg-white shadow flex flex-col justify-between border border-solid border-gray-300 p-4 h-36 w-96 lg:w-64"},[a("div",{staticClass:"text-lg font-light text-gray-900",domProps:{innerHTML:e._s(l.title)}}),a("div",{staticClass:"h-full flex flex-col justify-end"},[t.loadingMetrics?a("span",[a("v-skeleton-loader",{attrs:{type:"list-item-two-line"}})],1):a("span",{staticClass:"text-xl font-bold"},[e._v(" "+e._s(l.value)+" ")])])])])}),0)]):e._e(),t.view===0?a("div",{staticClass:"p-6"},[a(t.LeadFilters,{attrs:{users:t.salesRepresentatives(),clients:t.clients,"service-groups":t.serviceGroups,leads:t.leads,loading:t.loading}}),a(t.LeadsTable,{staticClass:"mt-3",attrs:{users:t.salesRepresentatives(),leads:t.leads,"service-groups":t.serviceGroups,loading:t.loading},on:{fetch:t.fetchLeads}})],1):e._e(),t.view===1?a("div",{staticClass:"p-6"},[a(t.LeadsBoards,{attrs:{leads:t.leads,users:t.users},on:{fetch:t.fetchLeads,select:t.goToLeadDetails}})],1):e._e(),a("v-dialog",{attrs:{width:"90%","max-width":"1024",persistent:"",scrollable:""}
2,on:{keydown:function(l){if(!l.type.indexOf("key")&&e._k(l.keyCode,"esc",27,l.key,["Esc","Escape"]))return null;t.createDialog=!1}},model:{value:t.createDialog,callback:function(l){t.createDialog=l},expression:"createDialog"}},[t.createDialog?a(t.LeadForm,{attrs:{users:t.salesRepresentatives(),clients:t.clients,"service-groups":t.serviceGroups},on:{close:function(l){t.createDialog=!1},fetch:t.fetchLeads},model:{value:t.newLead,callback:function(l){t.newLead=l},expression:"newLead"}}):e._e()],1),a("v-dialog",{attrs:{width:"95%","max-width":"860",persistent:""},model:{value:t.bulkUploadDialog,callback:function(l){t.bulkUploadDialog=l},expression:"bulkUploadDialog"}},[t.bulkUploadDialog?a(t.LeadBulkUploadDialog,{on:{close:t.closeBulkUploadDialog,fetch:t.fetchLeads}}):e._e()],1),a(t.CsvExport,{ref:"clientsDownload",attrs:{"json-data":t.leadClientsData,"csv-title":"clients",labels:t.leadClientsLabels}},[a("v-btn",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}]},[e._v("Download")])],1)],1)},Dt=[],kt=ce(Ct,xt,Dt,!1,null,null);const Yt=kt.exports;export{Yt 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.