1import{r,a6 as d,j as e,t as f,w as N,x as S,z as b,v as C,B as o,R as v,X as w,a9 as F,n as z}from"./index-CcMLSBG6.js";import{T as U,a as B,b as _,c as I}from"./tabs-3XcCUx4u.js";import{I as u}from"./input-6C8gsjbZ.js";import{L as m}from"./label-6YVF-Fk-.js";import{S as R}from"./switch-DimzQKXP.js";import{A as M}from"./AdminLayout-BvLDTXmd.js";import{S as K}from"./separator-CI5RXlzM.js";import{C as O}from"./calendar-70KlfpAC.js";import{T as P}from"./triangle-alert-B1Ayw7eC.js";import"./video-CeYomunc.js";import"./chart-no-axes-column-D2swLHl6.js";import"./ticket-CZJGnvk2.js";import"./bell-BY-kgHnA.js";function re(){const[V,A]=r.useState(null),[E,L]=r.useState(!1),[x,j]=r.useState([]),[T,g]=r.useState(!0),[t,c]=r.useState({}),[l,y]=r.useState({calendarId:"",apiKey:"",clientId:"",autoSync:!0,reminderHours:24});r.useEffect(()=>{D()},[]);const D=async()=>{try{g(!0);const s=await d.User.me();if(A(s),s.role==="admin"){L(!0);const a=await d.Advisor.list();j(a||[]);const n={};a.forEach(h=>{n[h.id]={lastSync:h.google_calendar_last_sync||null,status:h.google_calendar_connected?"connected":"disconnected"}}),c(n)}else try{const a=await d.Advisor.filter({email:s.email});if(a&&a.length>0){const n=a[0];j([n]),c({[n.id]:{lastSync:n.google_calendar_last_sync||null,status:n.google_calendar_connected?"connected":"disconnected"}}),n.google_calendar_settings&&y(n.google_calendar_settings)}}catch(a){console.error("Error loading advisor data:",a)}}catch(s){console.error("Error loading initial data:",s)}finally{g(!1)}},p=async s=>{try{c(a=>({...a,[s]:{...a[s],status:"syncing"}})),setTimeout(()=>{c(a=>({...a,[s]:{lastSync:new Date().toISOString(),status:"connected"}}))},2e3)}catch(a){console.error("Error syncing calendar:",a),c(n=>({...n,[s]:{...n[s],status:"error"}}))}},G=async s=>{try{c(a=>({...a,[s]:{lastSync:null,status:"disconnected"}}))}catch(a){console.error("Error disconnecting calendar:",a)}},i=(s,a)=>{y(n=>({...n,[s]:a}))},k=async()=>{try{if(!E&&x.length===1){const s=x[0];await d.Advisor.update(s.id,{google_calendar_settings:l,google_calendar_connected:t[s.id].status==="connected"})}}catch(s){console.error("Error saving settings:",s)}},H=(s,a)=>s==="connected"?e.jsxs("div",{className:"flex items-center text-green-600",children:[e.jsx(z,{className:"h-4 w-4 mr-1"}),e.jsx("span",{children:"××××ר"}),a&&e.jsxs("span",{className:"text-xs text-gray-500 mr-2",children:["×¡× ×ר×× ××ר××: ",new Date(a).toLocaleString("he-IL")]})]}):s==="disconnected"?e.jsxs("div",{className:"flex items-center text-gray-500",children:[e.jsx(w,{className:"h-4 w-4 mr-1"}),e.jsx("span",{children:"×× ××××ר"})]}):s==="syncing"?e.jsxs("div",{className:"flex items-center text-blue-600",children:[e.jsx(v,{className:"h-4 w-4 mr-1 animate-spin"}),e.jsx("span",{children:"××¡× ×ר×..."})]}):s==="error"?e.jsxs("div",{className:"flex items-center text-red-600",children:[e.jsx(P,{className:"h-4 w-4 mr-1"}),e.jsx("span",{children:"ש×××× ××¡× ×ר××"})]}):null;return e.jsx(M,{currentPage:"ManageGoogleCalendar",children:e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"flex justify-between items-center",children:e.jsx("h1",{className:"text-3xl font-bold",children:"× ×××× ×¡× ×ר×× ×××× Google"})}),e.jsxs(U,{defaultValue:"sync",children:[e.jsxs(B,{className:"mb-4",children:[e.jsx(_,{value:"sync",children:"×¡× ×ר×× ×××× ××"}),e.jsx(_,{value:"settings",children:"×××ר×ת"})]}),e.jsx(I,{value:"sync",children:e.jsxs(f,{children:[e.jsxs(N,{children:[e.jsx(S,{children:"×¡× ×ר×× ×××× × ××עצ××"}),e.jsx(b,{children:"××××ר ××××× Google ×©× ×××עצ×× ××פשר ×¡× ×ר×× ××××××× ×©× ×¤××ש×ת ××××¢××¥"})]}),e.jsx(C,{children:T?e.jsxs("div",{className:"text-center py-12",children:[e.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500 mx-auto mb-4"}),e.jsx("p",{children:"×××¢× × ×ª×× ××..."})]}):e.jsx("div",{className:"space-y-4",children:x.map(s=>{var a,n;return e.jsxs("div",{className:"p-4 border rounded-lg",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-medium",children:s.full_name}),e.jsx("p",{className:"text-sm text-gray-500",children:s.email})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[t[s.id]&&H(t[s.id].status,t[
1s.id].lastSync),((a=t[s.id])==null?void 0:a.status)==="connected"?e.jsxs(e.Fragment,{children:[e.jsxs(o,{variant:"outline",size:"sm",onClick:()=>p(s.id),children:[e.jsx(v,{className:"h-4 w-4 mr-1"}),"×¡× ××¨× ×¢×ש××"]}),e.jsxs(o,{variant:"outline",size:"sm",onClick:()=>G(s.id),children:[e.jsx(w,{className:"h-4 w-4 mr-1"}),"× ×ª×§"]})]}):e.jsxs(o,{className:"bg-blue-600 hover:bg-blue-700",size:"sm",onClick:()=>p(s.id),children:[e.jsx(O,{className:"h-4 w-4 mr-1"}),"××ר ×××××"]})]})]}),((n=t[s.id])==null?void 0:n.status)==="connected"&&e.jsxs("div",{className:"mt-4 pt-4 border-t",children:[e.jsx("h4",{className:"text-sm font-medium mb-2",children:"פע×××ת ×××× ××ר×× ×"}),e.jsxs("div",{className:"text-sm text-gray-500",children:[e.jsxs("p",{children:["×¡× ×ר×× ××ר××: ",t[s.id].lastSync?new Date(t[s.id].lastSync).toLocaleString("he-IL"):"×× ××××"]}),e.jsx("p",{children:"פ××ש×ת ×ס×× ××¨× ×ת: 15"})," "]})]})]},s.id)})})})]})}),e.jsx(I,{value:"settings",children:e.jsxs(f,{children:[e.jsxs(N,{children:[e.jsx(S,{children:"×××ר×ת ×¡× ×ר×× ×××× Google"}),e.jsx(b,{children:"×××ר ×ת פר×× ×××××ר ××××× Google ××××ר×ת ×¡× ×ר××"})]}),e.jsx(C,{children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"calendarId",children:"×××× ×××× (Calendar ID)"}),e.jsx(u,{id:"calendarId",value:l.calendarId,onChange:s=>i("calendarId",s.target.value),placeholder:"primary ×× ×ת××ת ×××××× ×©× ×××××"}),e.jsx("p",{className:"text-xs text-gray-500",children:"×××¨× ××× ×× ×ת××ת ××××××× ×©× ××¢× ××××× ×× 'primary' ××××× ×ר×רת ×××××"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"clientId",children:"Client ID"}),e.jsx(u,{id:"clientId",value:l.clientId,onChange:s=>i("clientId",s.target.value),placeholder:"×××× ××§×× ×-Google Cloud Console"})]}),e.jsx(K,{className:"my-4"}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-medium",children:"×××ר×ת ×¡× ×ר××"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(m,{children:"×¡× ×ר×× ×××××××"}),e.jsx("p",{className:"text-sm text-gray-500",children:"×¡× ×ר×× ××××××× ×©× ××××× ××× ×©×¢×"})]}),e.jsx(R,{checked:l.autoSync,onCheckedChange:s=>i("autoSync",s)})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{htmlFor:"reminderHours",children:"ת×××רת ×פ×××©× (שע×ת ×ר×ש)"}),e.jsx(u,{id:"reminderHours",type:"number",value:l.reminderHours,onChange:s=>i("reminderHours",Number(s.target.value)),min:"1",max:"72"})]})]})]})}),e.jsx(F,{className:"flex justify-end",children:e.jsx(o,{onClick:k,className:"bg-blue-600 hover:bg-blue-700",children:"ש××ר ×××ר×ת"})})]})})]})," "]})})}export{re 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.