import{d as R,u as X,q as Y,m as g,c as a,a as e,y as T,e as r,n as k,p as j,t as n,b as c,v as _,s as A,F as x,x as f,A as q,w as ee,r as d,k as N,o as l}from"./index-DFiGttzi.js";const te={class:"space-y-6"},ie={class:"flex items-center justify-between"},se={class:"flex gap-2 border-b dark:border-gray-700"},ae={key:0,class:"bg-red-500 text-white text-xs px-2 py-0.5 rounded-full"},le={key:0,class:"text-center py-12"},ne={key:1,class:"space-y-4"},oe={class:"card"},re={class:"grid grid-cols-1 md:grid-cols-4 gap-4"},de=["value"],ue=["value"],ce={key:0,class:"card text-center py-12 text-gray-500"},pe={key:1,class:"grid gap-4"},ve={class:"flex items-start justify-between"},xe={class:"flex items-start gap-4"},fe={class:"text-3xl"},me={class:"font-semibold text-gray-900 dark:text-white"},ye={class:"text-sm text-gray-500"},ge={class:"flex flex-wrap gap-2 mt-2"},_e={key:0,class:"text-xs text-gray-500"},be={key:1,class:"text-xs text-gray-500"},ke={key:2,class:"text-xs text-gray-500"},he={key:0,class:"flex gap-2"},we=["onClick"],Qe=["onClick"],Ce={key:2,class:"space-y-6"},Ue={key:0,class:"space-y-4"},Ae={class:"text-lg font-semibold text-red-600 flex items-center gap-2"},Se={class:"grid gap-3"},Ve={class:"flex items-center justify-between"},Me={class:"flex items-center gap-3"},Le={class:"text-2xl"},$e={class:"font-medium"},Te={class:"text-sm text-gray-600 dark:text-gray-400"},Ne={class:"text-right"},Be={class:"text-sm text-gray-500"},De={key:1,class:"space-y-4"},Fe={class:"text-lg font-semibold text-yellow-600 flex items-center gap-2"},ze={class:"grid gap-3"},je={class:"flex items-center justify-between"},Ee={class:"flex items-center gap-3"},Ke={class:"text-2xl"},Oe={class:"font-medium"},Ge={class:"text-sm text-gray-600 dark:text-gray-400"},Ie={class:"text-right"},He={class:"text-sm font-medium text-yellow-600"},Pe={class:"text-sm text-gray-500"},We={key:2,class:"card text-center py-12"},Ze={key:3,class:"card"},Je={key:4,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/50"},Re={class:"bg-white dark:bg-gray-800 rounded-lg shadow-xl w-full max-w-lg mx-4 max-h-[90vh] overflow-y-auto"},Xe={class:"p-6"},Ye={class:"text-xl font-semibold mb-4"},qe={key:0},et=["value"],tt={key:1},it={class:"grid grid-cols-1 gap-2 max-h-48 overflow-y-auto border dark:border-gray-600 rounded-lg p-2"},st={class:"text-xs font-medium text-gray-500 sticky top-0 bg-white dark:bg-gray-800 py-1"},at=["onClick"],lt={key:0,class:"text-sm text-blue-600 mt-1"},nt={class:"grid grid-cols-2 gap-4"},ot={class:"flex gap-3 pt-4"},rt=["disabled"],pt=R({__name:"QualificationsView",setup(dt){const S=X(),B=d(!0),D=d([]),m=d({system:[],custom:[],categories:[]}),u=d({expired:[],expiring_soon:[]}),V=d([]),h=d(""),w=d(""),Q=d(""),C=d(""),b=d(!1),y=d(null),o=d({user_id:"",qualification_type_id:"",org_qualification_type_id:"",issued_date:"",expiry_date:"",issuer:"",certificate_number:"",level:"",notes:""}),U=d(!1),v=d("list");Y(async()=>{await Promise.all([E(),M(),L(),K()]),B.value=!1});async function E(){try{const s=await g.get("/qualifications/types");m.value=s}catch(s){console.error("Failed to load types:",s)}}async function M(){try{D.value=await g.get("/qualifications")}catch(s){console.error("Failed to load qualifications:",s)}}async function L(){try{u.value=await g.get("/qualifications/expiring?days=30")}catch(s){console.error("Failed to load expiring:",s)}}async function K(){try{V.value=await g.get("/users")}catch(s){console.error("Failed to load users:",s)}}const F=N(()=>{let s=[...D.value];if(h.value&&(s=s.filter(t=>t.user_id===h.value)),w.value&&(s=s.filter(t=>t.category===w.value)),Q.value&&(s=s.filter(t=>t.expiry_status===Q.value)),C.value){const t=C.value.toLowerCase();s=s.filter(i=>i.qualification_name.toLowerCase().includes(t)||i.first_name.toLowerCase().includes(t)||i.last_name.toLowerCase().includes(t))}return s}),O=N(()=>[...m.value.system,...m.value.custom]);function G(){y.value=null,o.value={user_id:"",qualification_type_id:"",org_qualification_type_id:"",issued_date:"",expiry_date:"",issuer:"",certificate_number:"",level:"",notes:""},b.value=!0}function I(s){y.value=s,o.value={user_id:s.user_id,qualification_type_id:"",org_qualification_type_id:"",issued_date:s.issued_date||"",expiry_date:s.expiry_date||"",issuer:s.issuer||"",certificate_number:s.certificate_number||"",level:s.level||"",notes:""},b.value=!0}async function H(){if(!(!o.value.user_id||!o.value.qualification_type_id&&!o.value.org_qualification_type_id)){U.value=!0;try{y.value?await g.put(`/qualifications/${y.value.id}`,o.value):await g.post("/qualifications",o.value),b.value=!1,await M(),await L()}catch(s){console.error("Failed to save:",s)}finally{U.value=!1}}}async function P(s){if(confirm("Qualifikation wirklich löschen?"))try{await g.delete(`/qualifications/${s}`),await M(),await L()}catch(t){console.error("Failed to delete:",t)}}function W(s){switch(s){case"valid":return"bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200";case"expiring_soon":return"bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200";case"expired":return"bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200";case"no_expiry":return"bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200";default:return"bg-gray-100 text-gray-800"}}function Z(s){switch(s){case"valid":return"Gültig";case"expiring_soon":return"Läuft ab";case"expired":return"Abgelaufen";case"no_expiry":return"Unbefristet";default:return s}}function $(s){return s?new Date(s).toLocaleDateString("de-DE"):"-"}function J(s){s.source==="system"?(o.value.qualification_type_id=s.id,o.value.org_qualification_type_id=""):(o.value.org_qualification_type_id=s.id,o.value.qualification_type_id="")}const z=N(()=>{const s=o.value.qualification_type_id||o.value.org_qualification_type_id;if(!s)return"";const t=O.value.find(i=>i.id===s);return t?`${t.icon} ${t.name}`:""});return(s,t)=>(l(),a("div",te,[e("div",ie,[t[15]||(t[15]=e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"🎓 Qualifikationen",-1)),T(S).canManageUsers?(l(),a("button",{key:0,onClick:G,class:"btn btn-primary"}," ➕ Qualifikation hinzufügen ")):r("",!0)]),e("div",se,[e("button",{onClick:t[0]||(t[0]=i=>v.value="list"),class:k(["px-4 py-2 font-medium border-b-2 transition-colors",v.value==="list"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," 📋 Übersicht ",2),e("button",{onClick:t[1]||(t[1]=i=>v.value="expiring"),class:k(["px-4 py-2 font-medium border-b-2 transition-colors flex items-center gap-2",v.value==="expiring"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])},[t[16]||(t[16]=j(" ⚠️ Ablaufend ",-1)),u.value.expired.length+u.value.expiring_soon.length>0?(l(),a("span",ae,n(u.value.expired.length+u.value.expiring_soon.length),1)):r("",!0)],2),T(S).canManageUsers?(l(),a("button",{key:0,onClick:t[2]||(t[2]=i=>v.value="matrix"),class:k(["px-4 py-2 font-medium border-b-2 transition-colors",v.value==="matrix"?"border-blue-500 text-blue-600":"border-transparent text-gray-500 hover:text-gray-700"])}," 📊 Matrix ",2)):r("",!0)]),B.value?(l(),a("div",le,[...t[17]||(t[17]=[e("div",{class:"animate-spin text-4xl"},"⏳",-1),e("p",{class:"mt-2 text-gray-500"},"Lade Qualifikationen...",-1)])])):v.value==="list"?(l(),a("div",ne,[e("div",oe,[e("div",re,[e("div",null,[t[18]||(t[18]=e("label",{class:"block text-sm font-medium mb-1"},"🔍 Suche",-1)),c(e("input",{"onUpdate:modelValue":t[3]||(t[3]=i=>C.value=i),type:"text",class:"input",placeholder:"Name oder Qualifikation..."},null,512),[[_,C.value]])]),e("div",null,[t[20]||(t[20]=e("label",{class:"block text-sm font-medium mb-1"},"👤 Mitarbeiter",-1)),c(e("select",{"onUpdate:modelValue":t[4]||(t[4]=i=>h.value=i),class:"input"},[t[19]||(t[19]=e("option",{value:""},"Alle",-1)),(l(!0),a(x,null,f(V.value,i=>(l(),a("option",{key:i.id,value:i.id},n(i.first_name)+" "+n(i.last_name),9,de))),128))],512),[[A,h.value]])]),e("div",null,[t[22]||(t[22]=e("label",{class:"block text-sm font-medium mb-1"},"📂 Kategorie",-1)),c(e("select",{"onUpdate:modelValue":t[5]||(t[5]=i=>w.value=i),class:"input"},[t[21]||(t[21]=e("option",{value:""},"Alle",-1)),(l(!0),a(x,null,f(m.value.categories,i=>(l(),a("option",{key:i.key,value:i.key},n(i.icon)+" "+n(i.name),9,ue))),128))],512),[[A,w.value]])]),e("div",null,[t[24]||(t[24]=e("label",{class:"block text-sm font-medium mb-1"},"📊 Status",-1)),c(e("select",{"onUpdate:modelValue":t[6]||(t[6]=i=>Q.value=i),class:"input"},[...t[23]||(t[23]=[q('',5)])],512),[[A,Q.value]])])])]),F.value.length===0?(l(),a("div",ce," Keine Qualifikationen gefunden ")):(l(),a("div",pe,[(l(!0),a(x,null,f(F.value,i=>(l(),a("div",{key:i.id,class:"card hover:shadow-md transition-shadow"},[e("div",ve,[e("div",xe,[e("div",fe,n(i.icon),1),e("div",null,[e("h3",me,n(i.qualification_name),1),e("p",ye,n(i.first_name)+" "+n(i.last_name),1),e("div",ge,[e("span",{class:k(["px-2 py-0.5 rounded text-xs font-medium",W(i.expiry_status)])},n(Z(i.expiry_status)),3),i.expiry_date?(l(),a("span",_e," 📅 "+n($(i.expiry_date)),1)):r("",!0),i.issuer?(l(),a("span",be," 🏢 "+n(i.issuer),1)):r("",!0),i.certificate_number?(l(),a("span",ke," #"+n(i.certificate_number),1)):r("",!0)])])]),T(S).canManageUsers?(l(),a("div",he,[e("button",{onClick:p=>I(i),class:"p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded"}," ✏️ ",8,we),e("button",{onClick:p=>P(i.id),class:"p-2 hover:bg-red-100 dark:hover:bg-red-900 rounded text-red-600"}," 🗑️ ",8,Qe)])):r("",!0)])]))),128))]))])):v.value==="expiring"?(l(),a("div",Ce,[u.value.expired.length>0?(l(),a("div",Ue,[e("h2",Ae," ❌ Abgelaufen ("+n(u.value.expired.length)+") ",1),e("div",Se,[(l(!0),a(x,null,f(u.value.expired,i=>(l(),a("div",{key:i.id,class:"card border-l-4 border-red-500 bg-red-50 dark:bg-red-900/20"},[e("div",Ve,[e("div",Me,[e("span",Le,n(i.icon),1),e("div",null,[e("p",$e,n(i.qualification_name),1),e("p",Te,n(i.first_name)+" "+n(i.last_name),1)])]),e("div",Ne,[t[25]||(t[25]=e("p",{class:"text-sm font-medium text-red-600"},"Abgelaufen",-1)),e("p",Be,n($(i.expiry_date)),1)])])]))),128))])])):r("",!0),u.value.expiring_soon.length>0?(l(),a("div",De,[e("h2",Fe," ⚠️ Läuft bald ab ("+n(u.value.expiring_soon.length)+") ",1),e("div",ze,[(l(!0),a(x,null,f(u.value.expiring_soon,i=>(l(),a("div",{key:i.id,class:"card border-l-4 border-yellow-500 bg-yellow-50 dark:bg-yellow-900/20"},[e("div",je,[e("div",Ee,[e("span",Ke,n(i.icon),1),e("div",null,[e("p",Oe,n(i.qualification_name),1),e("p",Ge,n(i.first_name)+" "+n(i.last_name),1)])]),e("div",Ie,[e("p",He," Noch "+n(i.days_until_expiry)+" Tage ",1),e("p",Pe,n($(i.expiry_date)),1)])])]))),128))])])):r("",!0),u.value.expired.length===0&&u.value.expiring_soon.length===0?(l(),a("div",We,[...t[26]||(t[26]=[e("div",{class:"text-4xl mb-4"},"✅",-1),e("p",{class:"text-lg font-medium text-green-600"},"Alles in Ordnung!",-1),e("p",{class:"text-gray-500"},"Keine ablaufenden Qualifikationen in den nächsten 30 Tagen.",-1)])])):r("",!0)])):v.value==="matrix"?(l(),a("div",Ze,[...t[27]||(t[27]=[e("p",{class:"text-gray-500 text-center py-12"},[j(" 📊 Qualifikations-Matrix wird geladen..."),e("br"),e("span",{class:"text-sm"},"Übersicht: Welcher Mitarbeiter hat welche Qualifikation")],-1)])])):r("",!0),b.value?(l(),a("div",Je,[e("div",Re,[e("div",Xe,[e("h2",Ye,n(y.value?"✏️ Qualifikation bearbeiten":"➕ Neue Qualifikation"),1),e("form",{onSubmit:ee(H,["prevent"]),class:"space-y-4"},[y.value?r("",!0):(l(),a("div",qe,[t[29]||(t[29]=e("label",{class:"block text-sm font-medium mb-1"},"Mitarbeiter *",-1)),c(e("select",{"onUpdate:modelValue":t[7]||(t[7]=i=>o.value.user_id=i),class:"input",required:""},[t[28]||(t[28]=e("option",{value:""},"Bitte wählen...",-1)),(l(!0),a(x,null,f(V.value,i=>(l(),a("option",{key:i.id,value:i.id},n(i.first_name)+" "+n(i.last_name),9,et))),128))],512),[[A,o.value.user_id]])])),y.value?r("",!0):(l(),a("div",tt,[t[30]||(t[30]=e("label",{class:"block text-sm font-medium mb-1"},"Qualifikation *",-1)),e("div",it,[(l(!0),a(x,null,f(m.value.categories,i=>(l(),a("div",{key:i.key,class:"space-y-1"},[e("p",st,n(i.icon)+" "+n(i.name),1),(l(!0),a(x,null,f([...m.value.system,...m.value.custom].filter(p=>p.category===i.key),p=>(l(),a("button",{key:p.id,type:"button",onClick:ut=>J(p),class:k(["w-full text-left px-3 py-2 rounded text-sm transition-colors",o.value.qualification_type_id===p.id||o.value.org_qualification_type_id===p.id?"bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200":"hover:bg-gray-100 dark:hover:bg-gray-700"])},n(p.icon)+" "+n(p.name),11,at))),128))]))),128))]),z.value?(l(),a("p",lt," Ausgewählt: "+n(z.value),1)):r("",!0)])),e("div",nt,[e("div",null,[t[31]||(t[31]=e("label",{class:"block text-sm font-medium mb-1"},"Ausstellungsdatum",-1)),c(e("input",{"onUpdate:modelValue":t[8]||(t[8]=i=>o.value.issued_date=i),type:"date",class:"input"},null,512),[[_,o.value.issued_date]])]),e("div",null,[t[32]||(t[32]=e("label",{class:"block text-sm font-medium mb-1"},"Ablaufdatum",-1)),c(e("input",{"onUpdate:modelValue":t[9]||(t[9]=i=>o.value.expiry_date=i),type:"date",class:"input"},null,512),[[_,o.value.expiry_date]])])]),e("div",null,[t[33]||(t[33]=e("label",{class:"block text-sm font-medium mb-1"},"Ausstellende Stelle",-1)),c(e("input",{"onUpdate:modelValue":t[10]||(t[10]=i=>o.value.issuer=i),type:"text",class:"input",placeholder:"z.B. IHK Berlin"},null,512),[[_,o.value.issuer]])]),e("div",null,[t[34]||(t[34]=e("label",{class:"block text-sm font-medium mb-1"},"Zertifikatsnummer",-1)),c(e("input",{"onUpdate:modelValue":t[11]||(t[11]=i=>o.value.certificate_number=i),type:"text",class:"input",placeholder:"Optional"},null,512),[[_,o.value.certificate_number]])]),e("div",null,[t[35]||(t[35]=e("label",{class:"block text-sm font-medium mb-1"},"Stufe/Level",-1)),c(e("input",{"onUpdate:modelValue":t[12]||(t[12]=i=>o.value.level=i),type:"text",class:"input",placeholder:"z.B. B2 (für Sprachen)"},null,512),[[_,o.value.level]])]),e("div",null,[t[36]||(t[36]=e("label",{class:"block text-sm font-medium mb-1"},"Notizen",-1)),c(e("textarea",{"onUpdate:modelValue":t[13]||(t[13]=i=>o.value.notes=i),class:"input",rows:"2",placeholder:"Optional"},null,512),[[_,o.value.notes]])]),e("div",ot,[e("button",{type:"button",onClick:t[14]||(t[14]=i=>b.value=!1),class:"btn flex-1"}," Abbrechen "),e("button",{type:"submit",disabled:U.value,class:"btn btn-primary flex-1"},n(U.value?"Speichern...":"Speichern"),9,rt)])],32)])])])):r("",!0)]))}});export{pt as default};