PageSourceSearch

https://sanay3i-project.vercel.app/assets/ServicesPage-C_0KP5ia.js

js sanay3i-project.vercel.app collected 2026-10-03 07:40:38 UTC 7,528 bytes, 1 lines download raw bytes

1import{r as c,j as e,ce as F,c as G,F as Q,P as k,cX as U,cH as _,cQ as q,aG as P,y as l}from"./index-P4ZdD-Xo.js";import{a as p}from"./adminServices.api-DZ-yy_NK.js";/* empty css                     */const $=()=>{const[j,z]=c.useState([]),[A,v]=c.useState(!0),[x,E]=c.useState(""),[t,g]=c.useState(1),[d,M]=c.useState(1),[D,b]=c.useState(!1),[u,R]=c.useState("create"),[N,f]=c.useState(null),[r,n]=c.useState({name:"",description:"",price:0,icon:""}),[S,o]=c.useState(null),h=async()=>{v(!0);try{const s=await p.getAllServices({page:t,search:x||void 0}),a=s.data.data?s.data.data:s.data;z(a||[]),M(s.data.last_page||1)}catch{l.error("فشل تحميل قائمة الخدمات")}finally{v(!1)}};c.useEffect(()=>{h()},[t,x]);const y=(s,a=null)=>{R(s),f(a),s==="edit"&&a?(n({name:a.name,description:a.description||"",price:a.price||0,icon:a.icon||""}),o(a.icon?k(a.icon):null)):(n({name:"",description:"",price:0,icon:""}),o(null)),b(!0)},I=s=>{const a=s.target.files?.[0];if(a){n({...r,icon:a});const i=new FileReader;i.onloadend=()=>{o(i.result)},i.readAsDataURL(a)}},m=()=>{b(!1),f(null)},w=async s=>{s.preventDefault();const a=new FormData;a.append("name",r.name),a.append("description",r.description),a.append("price",r.price.toString()),r.icon instanceof File&&a.append("icon",r.icon);try{u==="create"?(await p.createService(a),l.success("تم إضافة الخدمة بنجاح ✅")):N&&(await p.updateService(N.id,a),l.success("تم تحديث الخدمة بنجاح ✅")),m(),h()}catch(i){console.error("Service Save Error:",i);const O=i.response?.data?.message||"حدث خطأ أثناء حفظ البيانات",C=i.response?.data?.errors;C?Object.values(C).flat().forEach(T=>l.error(T)):l.error(O)}},L=async s=>{if(window.confirm("هل أنت متأكد من رغبتك في حذف هذه الخدمة؟"))try{await p.deleteService(s),l.success("تم حذف الخدمة بنجاح"),h()}catch{l.error("حدث خطأ أثناء الحذف")}};return e.jsxs("div",{className:"services-container",children:[e.jsx("header",{className:"services-premium-header",children:e.jsxs("div",{className:"header-glass-content",children:[e.jsxs("div",{className:"title-area",children:[e.jsx("h1",{children:"إدارة الخدمات"}),e.jsx("p",{children:"إضافة وتعديل الخدمات المتوفرة في المنصة"})]}),e.jsx("div",{className:"header-actions-top",children:e.jsxs("button",{className:"add-service-btn",onClick:()=>y("create"),children:[e.jsx(F,{size:20}),e.jsx("span",{children:"إضافة خدمة جديدة"})]})})]})}),e.jsxs("div",{className:"services-controls",children:[e.jsxs("div",{className:"search-wrapper",children:[e.jsx(G,{className:"search-icon",size:20}),e.jsx("input",{type:"text",placeholder:"ابحث عن خدمة...",className:"search-input",value:x,onChange:s=>E(s.target.value)})]}),e.jsx("button",{className:"action-btn",onClick:h,title:"تحديث",children:e.jsx(Q,{size:18})})]}),e.jsxs("div",{className:"services-table-wrapper",children:[A?e.jsx("div",{style:{padding:"2rem",textAlign:"center"},children:"جاري التحميل..."}):e.jsxs("table",{className:"services-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"الأيقونة"}),e.jsx("th",{children:"اسم الخدمة"}),e.jsx("th",{children:"الوصف"}),e.jsx("th",{children:"السعر"}),e.jsx("th",{children:"الصنايعية"}),e.jsx("th",{children:"الإجراءات"})]})}),e.jsx("tbody",{children:j.length>0?j.map(s=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("div",{className:"service-icon-cell",children:s.icon?e.jsx("img",{src:k(s.icon),alt:s.name,className:"service-icon-img"}):e.jsx(U,{size:24})})}),e.jsx("td",{children:e.jsx("div",{className:"service-name",children:s.name})}),e.jsx("td",{children:e.jsx("div",{className:"service-description",children:s.description||"لا يوجد وصف"})}),e.jsx("td",{children:e.jsx("div",{className:"service-price",children:s.price?`${s.price} ج.م`:"غير محدد"})}),e.jsx("td",{children:e.jsxs("div",{className:"service-craftsmen-count",children:[e.jsx("strong",{children:Number(s.craftsmen_count??0).toLocaleStr
1ing("ar-EG")}),e.jsx("span",{children:"صنايعي"})]})}),e.jsxs("td",{className:"actions-cell",children:[e.jsx("button",{className:"action-btn edit",onClick:()=>y("edit",s),children:e.jsx(_,{size:18})}),e.jsx("button",{className:"action-btn delete",onClick:()=>L(s.id),children:e.jsx(q,{size:18})})]})]},s.id)):e.jsx("tr",{children:e.jsx("td",{colSpan:6,style:{textAlign:"center",padding:"2rem"},children:"لا توجد خدمات حالياً"})})})]}),d>1&&e.jsxs("div",{className:"pagination-container",style:{display:"flex",justifyContent:"center",padding:"1.5rem",gap:"1rem",alignItems:"center",borderTop:"1px solid var(--color-border)"},children:[e.jsx("button",{disabled:t===1,onClick:()=>g(s=>s-1),className:"pg-btn",style:{padding:"0.5rem 1rem",border:"1px solid var(--color-border)",borderRadius:6,background:"white",cursor:t===1?"not-allowed":"pointer",opacity:t===1?.5:1},children:"السابق"}),e.jsxs("span",{className:"pg-info",style:{fontSize:"0.9rem",fontWeight:600},children:["صفحة ",t," من ",d]}),e.jsx("button",{disabled:t===d,onClick:()=>g(s=>s+1),className:"pg-btn",style:{padding:"0.5rem 1rem",border:"1px solid var(--color-border)",borderRadius:6,background:"white",cursor:t===d?"not-allowed":"pointer",opacity:t===d?.5:1},children:"التالي"})]})]}),D&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"modal-overlay",onClick:m}),e.jsxs("div",{className:"service-modal",children:[e.jsxs("div",{className:"modal-header",children:[e.jsx("h3",{children:u==="create"?"إضافة خدمة جديدة":"تعديل الخدمة"}),e.jsx("button",{className:"close-btn",onClick:m,children:e.jsx(P,{size:24})})]}),e.jsxs("form",{onSubmit:w,className:"service-form",children:[e.jsxs("div",{className:"form-group-service2",children:[e.jsx("label",{children:"اسم الخدمة"}),e.jsx("input",{type:"text",required:!0,value:r.name,onChange:s=>n({...r,name:s.target.value}),placeholder:"مثال: سباكة، كهرباء..."})]}),e.jsxs("div",{className:"form-group-service2",children:[e.jsx("label",{children:"السعر الأساسي (اختياري)"}),e.jsx("input",{type:"number",value:r.price,onChange:s=>n({...r,price:Number(s.target.value)}),placeholder:"0"})]}),e.jsxs("div",{className:"form-group-service2 full",children:[e.jsx("label",{children:"الوصف"}),e.jsx("textarea",{rows:4,value:r.description,onChange:s=>n({...r,description:s.target.value}),placeholder:"وصف مختصر للخدمة..."})]}),e.jsxs("div",{className:"form-group-service2 full",children:[e.jsx("label",{children:"أيقونة الخدمة (صورة)"}),e.jsxs("div",{className:"icon-upload-wrapper",children:[e.jsx("input",{type:"file",accept:"image/*",onChange:I,id:"icon-upload",className:"file-input-hidden"}),e.jsxs("label",{htmlFor:"icon-upload",className:"custom-file-btn",children:[e.jsx(F,{})," اختر صورة"]}),S&&e.jsxs("div",{className:"icon-preview-container",children:[e.jsx("img",{src:S,alt:"Preview"}),e.jsx("button",{type:"button",className:"remove-preview",onClick:()=>{o(null),n({...r,icon:""})},children:e.jsx(P,{})})]})]})]})]}),e.jsxs("div",{className:"modal-footer",children:[e.jsx("button",{type:"button",className:"cancel-btn",onClick:m,children:"إلغاء"}),e.jsx("button",{type:"submit",className:"submit-btn",onClick:w,children:u==="create"?"إضافة":"حفظ التغييرات"})]})]})]})]})};export{$ 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.