1import{a as S,j as a}from"./index-BhK3kIJk.js";import{r,a as J}from"./vendor-i18n-DQFRXMfG.js";import{u as B,a as I,D as U,c as Y,S as V,v as Z,b as q,s as Q,K as W,P as X}from"./sortable.esm-I1_3cjY_.js";import{A as ee}from"./AdminPagination-Ct-M2AbM.js";import{S as ae}from"./SortableRow-D7nkTAkc.js";import{S as se}from"./SortableDateHeader-DZ8VNKre.js";import{J as te,u as ne,a8 as ie,a9 as re,a3 as le,w as de,a1 as ce,aa as oe,ab as me,V as ue}from"./vendor-ui-CmuPpZw4.js";import"./vendor-react-CDveK0zG.js";import"./vendor-seo-BcU9btEd.js";const he={membership:"Ãyelik",cpd:"SDE",legal:"Hukuki DanıÅma",other:"DiÄer"},f=15;function z(s){if(s==null||s==="")return null;const i=Number(s);if(!isNaN(i)&&/^\d+$/.test(String(s).trim())){const u=new Date(i<1e12?i*1e3:i);if(!isNaN(u.getTime()))return u}const d=String(s);let c=new Date(d);return isNaN(c.getTime())?(c=new Date(d.replace(" ","T")),isNaN(c.getTime())?null:c):c}function ge(s){const i=z(s);return i?i.toLocaleDateString("tr-TR"):s?String(s).slice(0,10):"â"}function pe(s){const i=z(s);return i?i.toLocaleString("tr-TR"):s?String(s):"â"}const ve=()=>{const[s,i]=r.useState([]),[d,c]=r.useState({page:1,pageSize:f,totalItems:0,totalPages:1}),[u,A]=r.useState(""),[h,$]=r.useState(""),[g,M]=r.useState(""),[o,v]=r.useState(null),[C,p]=r.useState(null),[j,D]=r.useState(1),[L,E]=r.useState(!0),[w,N]=r.useState(null),O=B(I(X,{activationConstraint:{distance:5}}),I(W,{coordinateGetter:Q})),[x,G]=r.useState("desc"),K=!h&&(!d||d.totalPages<=1);r.useEffect(()=>{const e=setTimeout(()=>$(u),350);return()=>clearTimeout(e)},[u]),r.useEffect(()=>{D(1)},[h,g,x]);const y=r.useCallback(async()=>{E(!0),N(null);try{const e=new URLSearchParams({page:String(j),pageSize:String(f),sort:"createdAt",order:x});g&&e.set("isRead",g),h&&e.set("search",h);const l=await S(`/admin/messages?${e}`);if(!l.ok)throw new Error(`Sunucu hatası: ${l.status}`);const t=await l.json(),n=t.data??t,b=Array.isArray(n)?n:n.items??n.data??[],_=t.meta??n.meta??{page:j,pageSize:f,totalItems:b.length,totalPages:1};i(b),c(_)}catch(e){N(e instanceof Error?e.message:"Mesajlar yüklenirken bir hata oluÅtu.")}finally{E(!1)}},[j,g,h,x]);r.useEffect(()=>{y()},[y]);const T=s.filter(e=>!e.isRead).length,P=r.useCallback(async(e,l)=>{i(t=>t.map(n=>n.id===e?{...n,isRead:l}:n));try{if(!(await S(`/admin/messages/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({isRead:l})})).ok)throw new Error}catch{i(t=>t.map(n=>n.id===e?{...n,isRead:!l}:n))}},[]),R=e=>{const l=s.find(t=>t.id===e);l&&!l.isRead&&P(e,!0),v(t=>t===e?null:e)},F=async e=>{try{if(!(await S(`/admin/messages/${e}`,{method:"DELETE"})).ok)throw new Error;p(null),o===e&&v(null),i(t=>t.filter(n=>n.id!==e)),c(t=>({...t,totalItems:Math.max(0,t.totalItems-1)}))}catch{N("Mesaj silinirken bir hata oluÅtu."),p(null)}},H=async e=>{const{active:l,over:t}=e;if(!t||l.id===t.id)return;const n=s.findIndex(m=>String(m.id)===l.id),b=s.findIndex(m=>String(m.id)===t.id),_=q(s,n,b).map((m,k)=>({...m,order:k}));i(_);try{await S("/admin/reorder/messages",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(_.map(({id:m,order:k})=>({id:Number(m),order:k})))})}catch{}};return a.jsxs("div",{className:"admin-list-page",children:[a.jsx("div",{className:"admin-list-page__header",children:a.jsxs("div",{children:[a.jsxs("h2",{className:"admin-list-page__title",children:["Gelen Mesajlar",T>0&&a.jsxs("span",{className:"admin-msg-badge",children:[T," okunmadı"]})]}),a.jsxs("p",{className:"admin-list-page__count",children:[d.totalItems," mesaj"]})]})}),w&&a.jsxs("div",{className:"admin-list-page__error",role:"alert",children:[a.jsx(te,{size:16,"aria-hidden":"true"}),w,a.jsx("button",{type:"button",onClick:y,className:"admin-list-page__retry-btn",children:"Yeniden dene"})]}),a.jsxs("div",{className:"admin-list-page__filters",children:[a.jsxs("div",{className:"admin-list-page__search",children:[a.jsx(ne,{size:15,className:"admin-list-page__search-icon","aria-hidden":"true"}),a.jsx("input",{type:"search",className:"admin-list-page__search-input",placeholder:"Ad, e-posta veya konuda ara...",value:u,onChange:e=>A(e.target.value),"aria-label":"Mesaj ara"})]}),a.jsx("div",{className:"admin-list-page__filter-group",children:[{value:"",label:"Tümü"},{value:"false",label:"Okunmadı"},{value:"true",label:"Okundu"}].map(e=>a.jsx("button",{type:"button",className:`admin-list-page__filter-btn${g===e.value?" is-active":""}`,onClick:()=>M(e.value),children:e.label},e.value))})]}),L?a.jsxs("div",{className:"admin-list-page__loading","aria-live":"polite",children:[a.jsx("span",{className:"spinner-border spinner-border-sm",role:"status","aria-hidden":"true"}),"Yükleniyor..."]}):s.length===0?a.jsx("div",{className:"admin-list-page__empty",children:a.jsx("p",{children:"Mesaj bulunamadı."})}):a.jsx("div",{className:"admin-table-wrap",children:a.jsx(U,{sensors:O,collisionDetection:Y,onDragEnd:H,children:a.jsx(V,{items:s.map(e=>String(e.id)),strategy:Z,children:a.jsxs("table",{className:"admin-table admin-msg-table","aria-label":"Gelen mesajlar",children:[a.jsx("thead",{children:a.jsxs("tr",{children:[a.jsx("th",{scope:"col",className:"admin-table__drag-cell","aria-label":"Sürükle"}),a.jsx("th",{scope:"col",style:{width:110},children:"Durum"}),a.jsx("th",{scope:"col",children:"Gönderen"}),a.jsx("th",{scope:"col",children:"Konu"}),a.jsx("th",{scope:"col",children:a.jsx(se,{label:"Tarih",active:!0,dir:x,onClick:()=>G(e=>e==="asc"?"desc":"asc")})}),a.jsx("th",{scope:"col",children:"İÅlemler"})]})}),a.jsx("tbody",{children:s.map(e=>a.jsxs(J.Fragment,{children:[a.jsxs(ae,{id:String(e.id),dragLabel:`${e.name} mesajını sürükle`,disabled:!K,className:[e.isRead?"":"admin-msg-row--unread",o===e.id?"admin-msg-row--open":"",C===e.id?"is-deleting":""].filter(
1Boolean).join(" "),children:[a.jsx("td",{className:"admin-msg__status",children:a.jsxs("button",{type:"button",className:`admin-msg__read-toggle${e.isRead?" is-read":" is-unread"}`,onClick:()=>P(e.id,!e.isRead),title:e.isRead?"Okunmadı olarak iÅaretle":"Okundu olarak iÅaretle","aria-label":e.isRead?"Okunmadı olarak iÅaretle":"Okundu olarak iÅaretle",children:[e.isRead?a.jsx(ie,{size:13,"aria-hidden":"true"}):a.jsx(re,{size:13,"aria-hidden":"true"}),a.jsx("span",{className:"admin-msg__read-label",children:e.isRead?"Okundu":"Okunmadı"})]})}),a.jsx("td",{children:a.jsxs("button",{type:"button",className:"admin-msg__sender-btn",onClick:()=>R(e.id),"aria-expanded":o===e.id,"aria-controls":`msg-detail-${e.id}`,children:[a.jsx("span",{className:"admin-msg__name",children:e.name}),a.jsx("span",{className:"admin-msg__email",children:e.email}),a.jsxs("span",{className:"admin-msg__preview",children:[e.message.slice(0,72),e.message.length>72?"â¦":""]})]})}),a.jsx("td",{children:a.jsx("span",{className:"admin-table__target-chip",children:he[e.subject]??e.subject})}),a.jsx("td",{className:"admin-table__date",style:{whiteSpace:"nowrap"},children:ge(e.createdAt)}),a.jsx("td",{children:C===e.id?a.jsxs("div",{className:"admin-table__confirm",children:[a.jsx("span",{children:"Silinsin mi?"}),a.jsx("button",{type:"button",className:"admin-table__action-btn admin-table__action-btn--danger",onClick:()=>F(e.id),children:"Evet"}),a.jsx("button",{type:"button",className:"admin-table__action-btn",onClick:()=>p(null),children:"İptal"})]}):a.jsxs("div",{className:"admin-table__actions",children:[a.jsx("button",{type:"button",className:"admin-msg__expand-btn",onClick:()=>R(e.id),"aria-expanded":o===e.id,title:o===e.id?"Kapat":"Mesajı oku",children:o===e.id?a.jsx(le,{size:14,"aria-hidden":"true"}):a.jsx(de,{size:14,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:"admin-table__action-btn admin-table__action-btn--danger",title:"Sil","aria-label":`${e.name} mesajını sil`,onClick:()=>p(e.id),children:a.jsx(ce,{size:14,"aria-hidden":"true"})})]})})]}),o===e.id&&a.jsxs("tr",{className:"admin-msg__detail-row",children:[a.jsx("td",{}),a.jsx("td",{}),a.jsx("td",{colSpan:4,id:`msg-detail-${e.id}`,children:a.jsxs("div",{className:"admin-msg__detail",children:[a.jsx("p",{className:"admin-msg__detail-text",children:e.message}),a.jsxs("footer",{className:"admin-msg__detail-meta",children:[a.jsxs("span",{className:"admin-msg__detail-item",children:[a.jsx(oe,{size:12,"aria-hidden":"true"}),a.jsx("a",{href:`mailto:${e.email}`,children:e.email})]}),e.phone&&a.jsxs("span",{className:"admin-msg__detail-item",children:[a.jsx(me,{size:12,"aria-hidden":"true"}),a.jsx("a",{href:`tel:${e.phone}`,children:e.phone})]}),a.jsxs("span",{className:"admin-msg__detail-item",children:[a.jsx(ue,{size:12,"aria-hidden":"true"}),pe(e.createdAt)]})]})]})})]})]},e.id))})]})})})}),d.totalPages>1&&a.jsx(ee,{currentPage:j,totalPages:d.totalPages,totalItems:d.totalItems,pageSize:f,onChange:D})]})};export{ve 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.