1import{a1 as le,r as p,c6 as re,x as R,w as ne,e as n,n as o,g as e,A as E,j as v,E as B,k as q,v as J,ab as Q,B as ie,F as A,D as I,t as l,R as F,Y as de,l as W,c as me,y as ce,f as r,Z as ue,al as xe}from"./MScFIUOs.js";import{_ as pe}from"./CZbjpouF.js";import{S as be}from"./CgpT6q-G.js";import"./CyJKPqL7.js";import"./DWyQW1Ja.js";/* empty css */import"./Cxh4yMQg.js";import"./x_rD_Ya3.js";import"./CR_ltcx7.js";/* empty css */const _e=ue(pe),ge={class:"main-wrapper min-h-screen bg-gray-200"},ye={key:0,class:"mb-10 bg-gray-200 py-10 md:mb-14 md:py-0"},ve={class:"mx-2 max-w-screen-xl sm:mx-auto"},he={class:"md:flex"},fe={class:"w-full shrink-0 px-2 py-6 md:w-48 md:px-2 md:py-10"},ke={class:"relative w-full pb-8 md:mx-5 md:mb-14 md:w-[calc(100%-258px)] md:py-10 xl:mx-8"},we={class:"rounded-xl bg-white p-4 shadow-sm md:p-6"},De={class:"flex flex-wrap items-start justify-between gap-4"},Te={class:"flex flex-wrap items-end gap-2"},Ce={class:"text-xs font-medium text-slate-600"},Re={class:"text-xs font-medium text-slate-600"},Be=["disabled"],Ae={class:"mt-4 flex flex-wrap gap-2 border-t border-slate-100 pt-4"},Fe=["disabled","onClick"],Se={key:0,class:"rounded-full bg-violet-50 px-3 py-1.5 text-xs font-medium text-violet-700"},Ne={key:0,class:"mt-4 rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700"},Ge={class:"font-semibold"},Ue={key:0,class:"mt-1"},$e={key:1,class:"mt-4 flex min-h-48 items-center justify-center rounded-xl bg-white text-slate-500"},ze={class:"mt-4 grid gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6 py-0"},Ee={class:"text-xs text-slate-500"},Ie={class:"mt-1 text-xl font-semibold text-slate-800"},je={class:"mt-1 text-xs text-slate-400"},Me={class:"mt-4 rounded-xl bg-white p-4 shadow-sm md:p-5"},Oe={class:"flex flex-wrap items-center justify-between gap-2"},Pe={class:"mt-4 grid gap-3 sm:grid-cols-2 lg:grid-cols-4"},Ve={class:"rounded-lg bg-slate-50 p-3"},Le={class:"text-2xl font-semibold text-slate-800"},Ze={class:"rounded-lg bg-emerald-50 p-3"},Ke={class:"text-2xl font-semibold text-emerald-800"},Ye={class:"rounded-lg bg-amber-50 p-3"},He={class:"text-2xl font-semibold text-amber-800"},qe={class:"rounded-lg bg-rose-50 p-3"},Je={class:"text-2xl font-semibold text-rose-800"},Qe={class:"mt-4 overflow-hidden rounded-xl bg-white shadow-sm py-0"},We={class:"flex flex-wrap items-center justify-between gap-2 border-b border-slate-100 p-4"},Xe={class:"mb-0 mt-1 text-xs text-slate-500"},et={class:"overflow-x-auto"},tt={class:"min-w-full text-left text-sm"},st={class:"divide-y divide-slate-100"},at={class:"px-4 py-3"},ot={class:"font-medium text-slate-800"},lt={class:"text-xs text-slate-400"},rt={class:"px-3 py-3"},nt={class:"px-3 py-3 text-right"},it={class:"px-3 py-3 text-right"},dt={class:"px-3 py-3 text-right"},mt={class:"px-3 py-3 text-right"},ct={class:"px-3 py-3 text-right font-medium"},ut={class:"px-3 py-3 text-right"},xt={key:0},pt={key:1,class:"flex min-h-screen items-center justify-center"},Rt={__name:"google-ads",setup(bt){const S=le(),j=me(),g=p(!1),b=p(null),x=p(null),_=p(""),k=p([]),M=p(""),w=re("admin_google_ads_date_range",{maxAge:60*60*24*365,sameSite:"lax"}),N=t=>new Intl.DateTimeFormat("en-CA",{timeZone:"Europe/Istanbul",year:"numeric",month:"2-digit",day:"2-digit"}).format(t),O=new Date,G=new Date(O);G.setDate(G.getDate()-29);const P=t=>/^\d{4}-\d{2}-\d{2}$/.test(String(t||"")),D=w.value&&typeof w.value=="object"?w.value:{},i=p(P(D.dateFrom)?D.dateFrom:N(G)),d=p(P(D.dateTo)?D.dateTo:N(O)),h=(t,s)=>{const m=new Date(`${t}T12:00:00Z`);return m.setUTCDate(m.getUTCDate()+s),m.toISOString().slice(0,10)},X=()=>N(new Date),V=()=>{const t=X(),m=new Date(`${t}T12:00:00Z`).getUTCDay()||7;return{today:{from:t,to:t},yesterday:{from:h(t,-1),to:h(t,-1)},this_week:{from:h(t,-(m-1)),to:t},last_week:{from:h(t,-6),to:t},this_month:{from:`${t.slice(0,7)}-01`,to:t},last_month:{from:h(t,-29),to:t}}},ee=[{key:"today",label:"Bugün"},{key:"yesterday",label:"Dün"},{key:"this_week",label:"Bu hafta"},{key:"last_week",label:"Son 1 hafta"},{key:"this_month",label:"Bu ay"},{key:"last_month",label:"Son 1 ay"}],U=R(()=>{var t,s;return((t=S.value)==null?void 0:t.U_Admin)==="on"||String(((s=S.value)==null?void 0:s.U_Role)||"").toLowerCase()==="master"}),L=R(()=>{const t=V();return Object.keys(t).find(s=>t[s].from===i.value&&t[s].to===d.value)||""}),Z=R(()=>{var t;return(t=x.value)!=null&&t.total?x.value.ready/x.value.total*100:0}),te=R(()=>{var s;const t=((s=b.value)==null?void 0:s.summary)||{};return[{label:"Gösterim",value:T(t.total_impressions),help:"Reklam gösterimleri",border:"border-sky-500"},{label:"Tıklama",value:T(t.total_clicks),help:`Ort. TBM ${y(t.avg_cpc)}`,border:"border-indigo-500"},{label:"CTR",value:K(t.avg_ctr),help:"Tıklama oranı",border:"border-violet-500"},{label:"Harcama",value:y(t.total_cost),help:"Seçilen dönem",border:"border-amber-500"},{label:"DönüÅüm",value:z(t.total_conversions),help:t.cost_per_conversion==null?"Maliyet hesaplanamadı":`BaÅına ${y(t.cost_per_conversion)}`,border:"border-emerald-500"},{label:"DönüÅüm deÄeri",value:y(t.total_conversion_value),help:"Google Ads deÄeri",border:"border-teal-500"}]}
1),$=async()=>{var t,s,m,C;if(!(!U.value||!i.value||!d.value)){if(i.value>d.value){_.value="BaÅlangıç tarihi bitiÅ tarihinden sonra olamaz.";return}g.value=!0,_.value="",k.value=[],w.value={dateFrom:i.value,dateTo:d.value};try{const u={withCredentials:!0,headers:(t=de())==null?void 0:t.value},[c,f]=await Promise.allSettled([W.get(`${j.public.apiBase}/ads/dashboard`,{...u,params:{date_from:i.value,date_to:d.value}}),W.get(`${j.public.apiBase}/ads/conversion-readiness`,{...u,params:{date_from:i.value,date_to:d.value}})]);if(c.status==="rejected")throw c.reason;b.value=c.value.data,x.value=f.status==="fulfilled"?f.value.data:null}catch(u){b.value=null,x.value=null;const c=((s=u.response)==null?void 0:s.data)||{};k.value=Array.isArray(c.missing)?c.missing:[],((m=u.response)==null?void 0:m.status)===401?_.value="Oturum doÄrulanamadı. Yeniden giriÅ yapın.":((C=u.response)==null?void 0:C.status)===403?_.value="Bu raporu görüntülemek için yönetici yetkisi gerekli.":_.value=c.message||"Google Ads raporu yüklenemedi.",console.error("Google Ads dashboard error",c||u)}finally{g.value=!1}}},se=async t=>{const s=V()[t];s&&(i.value=s.from,d.value=s.to,await xe(),$())},T=t=>new Intl.NumberFormat("tr-TR",{maximumFractionDigits:0}).format(Number(t||0)),z=t=>new Intl.NumberFormat("tr-TR",{maximumFractionDigits:2}).format(Number(t||0)),y=t=>new Intl.NumberFormat("tr-TR",{style:"currency",currency:"TRY",maximumFractionDigits:2}).format(Number(t||0)),K=t=>`%${new Intl.NumberFormat("tr-TR",{maximumFractionDigits:2}).format(Number(t||0)*100)}`,Y=t=>t?new Intl.DateTimeFormat("tr-TR").format(new Date(`${t}T00:00:00`)):"-",ae=t=>({ENABLED:"Aktif",PAUSED:"Duraklatıldı",REMOVED:"Kaldırıldı"})[String(t||"").toUpperCase()]||t||"-",oe=t=>String(t||"").toUpperCase()==="ENABLED"?"bg-emerald-100 text-emerald-700":"bg-slate-100 text-slate-600";return ne(()=>{var t;return(t=S.value)==null?void 0:t.id},t=>{t&&U.value&&M.value!==t&&(M.value=t,$())},{immediate:!0}),(t,s)=>{var u,c,f,H;const m=ce("font-awesome-icon"),C=_e;return r(),n("div",ge,[o(U)?(r(),n("div",ye,[e("div",ve,[e("div",he,[e("div",fe,[E(be,{part:"googleAds"})]),e("main",ke,[e("section",we,[e("div",De,[s[6]||(s[6]=e("div",null,[e("h1",{class:"mb-0 text-xl font-semibold leading-6 text-slate-800"},"Google Reklamları"),e("p",{class:"mb-0 mt-1 text-sm text-slate-500"},"Google Ads performansı ve CRM dönüÅüm hazırlıÄı")],-1)),e("div",Te,[e("label",Ce,[s[2]||(s[2]=B("BaÅlangıç ")),q(e("input",{"onUpdate:modelValue":s[0]||(s[0]=a=>Q(i)?i.value=a:null),type:"date",class:"mt-1 block h-10 rounded-md border border-slate-300 px-3 text-sm"},null,512),[[J,o(i)]])]),e("label",Re,[s[3]||(s[3]=B("BitiÅ ")),q(e("input",{"onUpdate:modelValue":s[1]||(s[1]=a=>Q(d)?d.value=a:null),type:"date",class:"mt-1 block h-10 rounded-md border border-slate-300 px-3 text-sm"},null,512),[[J,o(d)]])]),e("button",{type:"button",class:"h-10 rounded-md bg-sky-600 px-4 text-sm font-medium text-white hover:bg-sky-700 disabled:opacity-60",disabled:o(g),onClick:$},[o(g)?(r(),ie(m,{key:0,icon:"fa-solid fa-spinner",class:"mr-2 animate-spin"})):v("",!0),s[4]||(s[4]=B("Güncelle "))],8,Be),s[5]||(s[5]=e("a",{href:"https://ads.google.com/aw/campaigns",target:"_blank",rel:"noopener noreferrer",class:"flex h-10 items-center rounded-md border border-slate-300 px-3 text-sm text-slate-600 hover:bg-slate-50"},"Google Ads'i aç",-1))])]),e("div",Ae,[(r(),n(A,null,I(ee,a=>e("button",{key:a.key,type:"button",class:F(["rounded-full border px-3 py-1.5 text-xs font-medium transition-colors disabled:opacity-60",o(L)===a.key?"border-sky-600 bg-sky-600 text-white":"border-slate-300 bg-white text-slate-600 hover:border-sky-400 hover:text-sky-700"]),disabled:o(g),onClick:_t=>se(a.key)},l(a.label),11,Fe)),64)),o(L)?v("",!0):(r(),n("span",Se,"Ãzel tarih aralıÄı")),s[7]||(s[7]=e("span",{class:"ml-auto self-center text-xs text-slate-400"},"Seçiminiz bu cihazda saklanır",-1))])]),o(_)?(r(),n("div",Ne,[e("div",Ge,l(o(_)),1),o(k).length?(r(),n("div",Ue,"Eksik sunucu ayarları: "+l(o(k).join(", ")),1)):v("",!0)])):v("",!0),o(g)?(r(),n("div",$e,[E(m,{icon:"fa-solid fa-spinner",class:"mr-2 animate-spin"}),s[8]||(s[8]=B(" Reklam verileri yükleniyor... "))])):o(b)?(r(),n(A,{key:2},[e("section",ze,[(r(!0),n(A,null,I(o(te),a=>(r(),n("article",{key:a.label,class:F(["rounded-xl border-l-4 bg-white p-4 shadow-sm",a.border])},[e("div",Ee,l(a.label),1),e("div",Ie,l(a.value),1),e("div",je,l(a.help),1)],2))),128))]),e("section",Me,[e("div",Oe,[s[9]||(s[9]=e("div",null,[e("h2",{class:"mb-0 text-lg font-semibold text-slate-800"},"CRM dönüÅüm hazırlıÄı"),e("p",{class:"mb-0 mt-1 text-xs text-slate-500"},"Seçilen dönemde Google tıklama kimliÄi ve reklam izni bulunan sonuçlar.")],-1)),e("span",{class:F(["rounded-full px-3 py-1 text-xs font-semibold",o(Z)>=70?"bg-emerald-100 text-emerald-700":"bg-amber-100 text-amber-700"])},"%"+l(z(o(Z)))+" hazır",3)]),e("div",Pe,[e("article",Ve,[s[10]||(s[10]=e("div",{class:"text-xs text-slate-500"},"Toplam sonuç",-1)),e("div",Le,l(((u=o(x))==null?void 0:u.total)||0),1)]),e("article",Ze,[s[11]||(s[11]=e("div",{class:"text-xs text-emerald-700"},"Aktarıma hazır",-1)),e("div",Ke,l(((c=o(x))==null?void 0:c.ready)||0),1)]),e("article",Ye,[s[12]||(s[12]=e("div",{class:"text-xs text-amber-700"},"Google tıklama kimliÄi yok",-1)),e("div",He,l(((f=o(x))==null?void 0:f.missingGoogleClickId)||0),1)]),e("article",qe,[s[13]||(s[13]=e("div",{class:"text-xs text-rose-700"},"Reklam izni yok",-1)),e("div",Je,l(((H=o(x))==null?void 0:H.missingConsent)||0),1)])])]),e("section",Qe,[e("div",We,[e("div",null,[s[14]||(s[14]=e("h2",{class:"mb-0 text-lg font-semibold text-slate-800"},"Kampanya performansı",-1)),e("p",Xe,l(Y(o(i)))+" â "+l(Y(o(d)))+" · "+l(o(b).count)+"
1kampanya",1)])]),e("div",et,[e("table",tt,[s[16]||(s[16]=e("thead",{class:"bg-slate-50 text-xs uppercase text-slate-500"},[e("tr",null,[e("th",{class:"px-4 py-3"},"Kampanya"),e("th",{class:"px-3 py-3"},"Durum"),e("th",{class:"px-3 py-3 text-right"},"Gösterim"),e("th",{class:"px-3 py-3 text-right"},"Tıklama"),e("th",{class:"px-3 py-3 text-right"},"CTR"),e("th",{class:"px-3 py-3 text-right"},"Maliyet"),e("th",{class:"px-3 py-3 text-right"},"DönüÅüm"),e("th",{class:"px-3 py-3 text-right"},"DönüÅüm maliyeti")])],-1)),e("tbody",st,[(r(!0),n(A,null,I(o(b).campaigns,a=>(r(),n("tr",{key:a.campaign_id,class:"hover:bg-slate-50"},[e("td",at,[e("div",ot,l(a.campaign_name||"-"),1),e("div",lt,l(a.channel)+" · "+l(a.campaign_id),1)]),e("td",rt,[e("span",{class:F(["rounded-full px-2 py-1 text-xs",oe(a.status)])},l(ae(a.status)),3)]),e("td",nt,l(T(a.impressions)),1),e("td",it,l(T(a.clicks)),1),e("td",dt,l(K(a.ctr)),1),e("td",mt,l(y(a.total_cost)),1),e("td",ct,l(z(a.conversions)),1),e("td",ut,l(a.cost_per_conversion==null?"-":y(a.cost_per_conversion)),1)]))),128)),o(b).campaigns.length?v("",!0):(r(),n("tr",xt,s[15]||(s[15]=[e("td",{colspan:"8",class:"px-4 py-10 text-center text-slate-500"},"Bu tarih aralıÄında kampanya hareketi bulunamadı.",-1)])))])])])])],64)):v("",!0)])])])])):(r(),n("div",pt,[E(C)]))])}}};export{Rt 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.