1import{V as T,m as S,u as B,s as N,W as k,t as x,j as e,L as q,a4 as C,B as u,r as j,D as w,h as z,i as A,k as D,a5 as E,g as $}from"./index-CC7LeppY.js";import{d as G,c as M}from"./instructor-admin.functions-3Mdil7Ar.js";import{C as O,a as Q}from"./card-CZnJ2TeO.js";import{B as P}from"./badge-CSoMkE9d.js";import{I as c}from"./input-CP1rm5Jz.js";import{L as i}from"./label-BDrGmM36.js";import{C as F}from"./checkbox-BeyvdgSY.js";import{A as V,h as U,a as H,b as R,c as J,d as W,e as X,f as Y,g as Z}from"./alert-dialog-D-z88r8w.js";import{i as ee}from"./image-url-Bb3SltRr.js";import{L as b}from"./loader-circle-DNIotRoX.js";import{C as se}from"./car-BfkvNnzw.js";import{C as ae}from"./chevron-right-C3jhp7DR.js";import{T as re}from"./trash-2-CT18mOkT.js";import{C as te}from"./check-sFveOP9a.js";import{C as ie}from"./copy-Dr81kPgO.js";import{P as ne}from"./plus-R0wRMqAv.js";const le=["LatvieÅ¡u","Krievu","Angļu"];function ce({onCreated:p}){const y=S(M),[v,h]=j.useState(!1),[m,o]=j.useState(!1),[r,n]=j.useState(null),[f,d]=j.useState(!1),[s,t]=j.useState({email:"",name:"",phone:"",city:"",start_address:"",car_make:"",car_model:"",car_year:"",car_plate:"",car_transmission:"ManuÄlÄ",fuel_type:"BenzÄ«ns",languages:["LatvieÅ¡u"],is_examiner:!1,license_number:"",license_expiry_date:""}),l=k({mutationFn:async()=>await y({data:{email:s.email.trim().toLowerCase(),name:s.name.trim(),phone:s.phone.trim()||null,city:s.city.trim()||null,start_address:s.start_address.trim()||null,car_make:s.car_make.trim()||null,car_model:s.car_model.trim()||null,car_year:s.car_year?Number(s.car_year):null,car_plate:s.car_plate.trim().toUpperCase()||null,car_transmission:s.car_transmission,fuel_type:s.fuel_type,languages:s.languages.length>0?s.languages:["LatvieÅ¡u"],is_examiner:s.is_examiner,license_number:s.license_number.trim(),license_expiry_date:s.license_expiry_date}}),onSuccess:a=>{x.success("Instruktora konts izveidots"),n({email:a.email,password:a.password}),h(!1),o(!0),p()},onError:a=>x.error(a.message)}),g=()=>{t({email:"",name:"",phone:"",city:"",start_address:"",car_make:"",car_model:"",car_year:"",car_plate:"",car_transmission:"ManuÄlÄ",fuel_type:"BenzÄ«ns",languages:["LatvieÅ¡u"],is_examiner:!1,license_number:"",license_expiry_date:""}),n(null),d(!1)},_=async()=>{r&&(await navigator.clipboard.writeText(`E-pasts: ${r.email} 2Parole: ${r.password}`),d(!0),x.success("NokopÄts starpliktuvÄ"),setTimeout(()=>d(!1),2e3))};return e.jsxs(e.Fragment,{children:[e.jsx(w,{open:m,onOpenChange:a=>{o(a),a||(n(null),d(!1))},children:e.jsxs(z,{className:"max-w-lg",children:[e.jsx(A,{children:e.jsx(D,{children:"Konts izveidots"})}),r&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"SaglabÄ Å¡os datus â paroli vÄlÄk vairs nevarÄs apskatÄ«t. Nodod tos instruktoram, lai viÅÅ¡ var pieslÄgties un paroli nomainÄ«t savÄ profilÄ."}),e.jsxs("div",{className:"rounded-lg border bg-muted/30 p-4 space-y-2 text-sm font-mono",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"E-pasts:"})," ",r.email]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Parole:"})," ",r.password]})]}),e.jsxs(u,{onClick:_,variant:"outline",className:"w-full",children:[f?e.jsx(te,{className:"w-4 h-4 mr-2"}):e.jsx(ie,{className:"w-4 h-4 mr-2"}),"KopÄt datus"]}),e.jsx(E,{children:e.jsx(u,{onClick:()=>o(!1),children:"AizvÄrt"})})]})]})}),e.jsxs(w,{open:v,onOpenChange:a=>{h(a),a||g()},children:[e.jsx($,{asChild:!0,children:e.jsxs(u,{className:"bg-gradient-primary hover:opacity-90",children:[e.jsx(ne,{className:"w-4 h-4 mr-1"})," Izveidot instruktoru"]})}),e.jsxs(z,{className:"max-w-lg max-h-[90vh] overflow-y-auto",children:[e.jsx(A,{children:e.jsx(D,{children:"Jauns instruktors"})}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid sm:grid-cols-2 gap-3",children:[e.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[e.jsx(i,{children:"VÄrds, uzvÄrds *"}),e.jsx(c,{value:s.name,onChange:a=>t({...s,name:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[e.jsx(i,{children:"E-pasts *"}),e.jsx(c,{type:"email",value:s.email,onChange:a=>t({...s,email:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"Telefons"}),e.jsx(c,{value:s.phone,onChange:a=>t({...s,phone:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"PilsÄta"}),e.jsx(c,{value:s.city,onChange:a=>t({...s,city:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[e.jsx(i,{children:"SÄkuma adrese"}),e.jsx(c,{value:s.start_address,onChange:a=>t({...s,start_address:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"Auto marka"}),e.jsx(c,{value:s.car_make,onChange:a=>t({...s,car_make:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"Modelis"}),e.jsx(c,{value:s.car_model,onChange:a=>t({...s,car_model:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"Gads"}),e.jsx(c,{type:"number",value:s.car_year,onChange:a=>t({...s,car_year:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"NumurzÄ«me"}),e.jsx(c,{value:s.car_plate,onChange:a=>t({...s,car_plate:a.target.value.toUpperCase()})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"KÄrba"}),e.jsxs("select",{className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",value:s.car_transmission,onChange:a=>t({...s,car_transmission:a.target.value}),children:[e.jsx("option",{children:"ManuÄlÄ"}),e.jsx("option",{children:"AutomÄts"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"Degviela"}),e.jsxs("select",{className:"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",value:s.fuel_type,onCh
2ange:a=>t({...s,fuel_type:a.target.value}),children:[e.jsx("option",{children:"BenzÄ«ns"}),e.jsx("option",{children:"DÄ«zelis"}),e.jsx("option",{children:"Elektro"})]})]}),e.jsxs("div",{className:"space-y-2 sm:col-span-2",children:[e.jsx(i,{children:"Valodas"}),e.jsx("div",{className:"flex flex-wrap gap-4",children:le.map(a=>{const I=s.languages.includes(a);return e.jsxs("label",{className:"flex items-center gap-2 text-sm cursor-pointer",children:[e.jsx(F,{checked:I,onCheckedChange:L=>{t({...s,languages:L===!0?[...s.languages,a]:s.languages.filter(K=>K!==a)})}}),a]},a)})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"Instruktora apliecÄ«bas Nr. *"}),e.jsx(c,{value:s.license_number,onChange:a=>t({...s,license_number:a.target.value})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(i,{children:"ApliecÄ«bas derÄ«ga lÄ«dz *"}),e.jsx(c,{type:"date",value:s.license_expiry_date,onChange:a=>t({...s,license_expiry_date:a.target.value})})]}),e.jsxs("label",{className:"flex items-center gap-2 text-sm cursor-pointer sm:col-span-2",children:[e.jsx(F,{checked:s.is_examiner,onCheckedChange:a=>t({...s,is_examiner:a===!0})}),"ArÄ« eksaminators"]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"SistÄma automÄtiski uzÄ£enerÄs paroli un parÄdÄ«s to nÄkamajÄ solÄ«. Bildes vÄlÄk pievieno admins atsevišķi."}),e.jsxs(E,{children:[e.jsx(u,{variant:"outline",onClick:()=>h(!1),children:"Atcelt"}),e.jsxs(u,{onClick:()=>l.mutate(),disabled:l.isPending||!s.name.trim()||!s.email.trim()||!s.license_number.trim()||!s.license_expiry_date,children:[l.isPending&&e.jsx(b,{className:"w-4 h-4 mr-2 animate-spin"}),"Izveidot kontu"]})]})]})]})]})]})}function we(){const p=T(),y=S(G),{data:v,isLoading:h}=B({queryKey:["admin-instructors-list"],queryFn:async()=>{const{data:r,error:n}=await N.from("instructors").select("id,name,photo_url,active,is_examiner,is_instructor,city,car_make,car_model,phone,user_id,created_at").order("created_at",{ascending:!1});if(n)throw n;const f=(r??[]).map(t=>t.id),d=[];if(f.length)for(let l=0;;l+=1e3){const{data:g,error:_}=await N.from("time_slots").select("instructor_id, status, price").in("instructor_id",f).range(l,l+1e3-1);if(_)throw _;if(d.push(...g??[]),!g||g.length<1e3)break}const s=new Map;for(const t of d??[]){const l=s.get(t.instructor_id)??{booked:0,available:0,revenue:0};t.status==="booked"||t.status==="completed"?(l.booked++,l.revenue+=Number(t.price)||0):t.status==="available"&&l.available++,s.set(t.instructor_id,l)}return(r??[]).map(t=>({...t,stats:s.get(t.id)??{booked:0,available:0,revenue:0}}))}}),m=k({mutationFn:async r=>{const{error:n}=await N.from("instructors").update(r.patch).eq("id",r.id);if(n)throw n},onSuccess:()=>p.invalidateQueries({queryKey:["admin-instructors-list"]}),onError:r=>x.error(r.message)}),o=k({mutationFn:async r=>await y({data:{id:r}}),onSuccess:()=>{x.success("Instruktors dzÄsts"),p.invalidateQueries({queryKey:["admin-instructors-list"]})},onError:r=>x.error(r.message)});return e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-start justify-between gap-3 flex-wrap",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold tracking-tight",children:"Instruktori"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"Klikšķini uz instruktora, lai redzÄtu kalendÄru un statistiku."})]}),e.jsx(ce,{onCreated:()=>p.invalidateQueries({queryKey:["admin-instructors-list"]})})]}),h?e.jsx("div",{className:"grid place-items-center py-20",children:e.jsx(b,{className:"w-6 h-6 animate-spin text-muted-foreground"})}):e.jsx(O,{className:"mt-6",children:e.jsx(Q,{className:"p-0",children:e.jsxs("div",{className:"divide-y divide-border",children:[(v??[]).map(r=>e.jsxs("div",{className:"px-4 py-3 space-y-3",children:[e.jsxs(q,{to:"/admin/instructors/$id",params:{id:r.id},className:"flex items-center gap-3 -mx-2 px-2 py-1 rounded-md hover:bg-muted/50 transition",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-muted overflow-hidden grid place-items-center shrink-0",children:r.photo_url?e.jsx("img",{src:ee(r.photo_url,80),alt:r.name,className:"w-full h-full object-cover",loading:"lazy"}):e.jsx(se,{className:"w-5 h-5 text-muted-foreground"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"font-medium text-sm flex items-center gap-2 flex-wrap",children:[r.name,!r.active&&e.jsx(P,{variant:"outline",className:"text-xs",children:"deaktivizÄts"}),r.is_examiner&&e.jsx(P,{className:"text-xs bg-amber-500/15 text-amber-700 hover:bg-amber-500/15",children:"Eksaminators"})]}),e.jsxs("div",{className:"text-xs text-muted-foreground truncate",children:[r.city??"â"," · ",r.car_make??""," ",r.car_model??""]})]}),e.jsxs("div",{className:"hidden sm:flex flex-col items-end text-xs gap-0.5",children:[e.jsxs("span",{className:"text-muted-foreground",children:[r.stats.booked," not. · â¬",r.stats.revenue.toFixed(0)]}),e.jsxs("span",{className:"text-muted-foreground",children:[r.stats.available," brÄ«vi"]})]}),e.jsx(ae,{className:"w-4 h-4 text-muted-foreground"})]}),e.jsxs("div",{className:"flex flex-wrap gap-4 pl-12 pt-1 items-center",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(C,{id:`inst-${r.id}`,checked:r.is_instructor,disabled:m.isPending,onCheckedChange:n=>m.mutate({id:r.id,patch:{is_instructor:n}})}),e.jsx(i,{htmlFor:`inst-${r.id}`,className:"text-xs cursor-pointer",children:"Instruktors"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(C,{id:`exam-${r.id}`,checked:r.is_examiner,disabled:m.isPending,onCheckedChange:n=>m.mutate({id:r.id,patch:{is_examiner:n}})}),e.jsx(i,{htmlFor:`exam-${r.id}`,className:"text-xs cursor-pointer",children:"Eksaminators"})]}),e.jsxs(V,{children:[e.jsx(U,{asChild:!0,children:e.jsxs(u,{variant:"ghost",size:"sm",className:"text-destructive hover:text-destructive h-auto px-2 py-1",children:[e.jsx(re,{className:"w-3.5 h-3.5 mr-1"})," DzÄst"]})}
2),e.jsxs(H,{children:[e.jsxs(R,{children:[e.jsx(J,{children:"DzÄst instruktoru?"}),e.jsx(W,{children:"Å Ä« darbÄ«ba ir neatgriezeniska. Visi instruktora dati, tostarp nodarbÄ«bu vÄsture, rekvizÄ«ti un konts tiks dzÄsti. DzÄÅ¡ana ir iespÄjama tikai, ja instruktoram nav aktÄ«vu vai pabeigtu nodarbÄ«bu."})]}),e.jsxs(X,{children:[e.jsx(Y,{children:"Atcelt"}),e.jsxs(Z,{className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",onClick:()=>o.mutate(r.id),disabled:o.isPending,children:[o.isPending&&e.jsx(b,{className:"w-4 h-4 mr-2 animate-spin"}),"DzÄst"]})]})]})]})]})]},r.id)),(v??[]).length===0&&e.jsx("div",{className:"py-10 text-center text-sm text-muted-foreground",children:"VÄl nav instruktoru."})]})})})]})}export{we as component};
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.