import{t as e}from"./axios-DHQprbt3.js";import{E as t,M as n,O as r,c as i,ct as a,d as o,h as s,i as c,l,m as u,t as d,u as f,w as p}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as m,c as h,i as g,r as _}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{n as v}from"./strings-DzAmoxIw.js";import{t as y}from"./vue-multiselect.esm-ClUY7h_I.js";import{t as b}from"./AddImageDialog-BrHIwua1.js";var x={name:`EventForm`,components:{Multiselect:y,AddImageDialog:b},props:{event:{type:Object,required:!0,default:()=>({})},institutions:{type:Array,required:!0,default:()=>[]},eventPlaces:{type:Array,required:!0,default:()=>[]},contactPersons:{type:Array,required:!0,default:()=>[]}},data(){return{eventData:{...this.event},selectedEventType:null,selectedInstitution:this.event.institution||null,selectedEventPlace:this.event.eventPlace||null,selectedContactPersons:this.event.contactPersons||[],eventTypes:[],dateMode:`date`,weekdays:[{name:`Montag`,value:1},{name:`Dienstag`,value:2},{name:`Mittwoch`,value:3},{name:`Donnerstag`,value:4},{name:`Freitag`,value:5},{name:`Samstag`,value:6},{name:`Sonntag`,value:7}],localInstitutions:[...this.institutions],localEventPlaces:[...this.eventPlaces],localContactPersons:[...this.contactPersons],onHomepage:!1,assignedImage:null,imageFilename:``,bulkDates:``}},watch:{event(e){this.eventData={...e},this.selectedEventType=this.eventTypes.find(t=>t.id===e.eventTypeId)||null,this.selectedInstitution=e.institution||null,this.selectedEventPlace=e.eventPlace||null,this.selectedContactPersons=e.contactPersons||[],this.onHomepage=e.alsoOnHomepage==1,this.assignedImage=e.relatedImage||null,this.assignedImage&&this.fetchImageFilename(),this.determineDateMode()},institutions(e){this.localInstitutions=[...e]},eventPlaces(e){this.localEventPlaces=[...e]},contactPersons(e){this.localContactPersons=[...e]}},async created(){try{this.eventTypes=(await e.get(`/event-types`)).data,this.selectedEventType=this.eventTypes.find(e=>e.id===this.event.eventTypeId)||null}catch(e){console.error(`Failed to fetch event types:`,e)}this.determineDateMode()},computed:{getImagePath(){return this.imageFilename?`/images/uploads/${this.imageFilename}`:``}},methods:{formatTime:v,async saveEvent(){try{let t={...this.eventData,eventTypeId:this.selectedEventType?this.selectedEventType.id:null,institution_id:this.selectedInstitution?this.selectedInstitution.id:null,event_place_id:this.selectedEventPlace?this.selectedEventPlace.id:null,contactPersonIds:this.selectedContactPersons.map(e=>e.id),dayOfWeek:this.eventData.dayOfWeek?this.eventData.dayOfWeek.value??-1:-1,relatedImage:this.assignedImage,alsoOnHomepage:+!!this.onHomepage};if(this.dateMode===`bulk`&&this.bulkDates){let n=this.bulkDates.split(/,|\n/).map(e=>e.trim()).filter(e=>e.length>0),r=[],i=[],a=e=>e.toString().padStart(2,`0`);for(let e of n){let t=e.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/);if(t){let n=parseInt(t[1],10),o=parseInt(t[2],10),s=parseInt(t[3],10);if(o>=1&&o<=12&&n>=1&&n<=31){r.push(`${s}-${a(o)}-${a(n)}`);continue}else{i.push(e);continue}}/^\d{4}-\d{2}-\d{2}$/.test(e)?r.push(e):i.push(e)}if(r.length===0){alert(`Keine gültigen Datumsangaben erkannt. Erlaubt: TT.MM.JJJJ oder JJJJ-MM-TT`);return}i.length>0&&(console.warn(`Ungültige Datumsangaben ignoriert:`,i),alert(`Folgende Einträge wurden ignoriert: `+i.join(`, `)));let o=[];for(let n of r){let r={...t,date:n},i=await e.post(`/events`,r);o.push(i.data)}this.$emit(`saved`,o)}else{let n;n=this.eventData.id?await e.put(`/events/${this.eventData.id}`,t):await e.post(`/events`,t),this.$emit(`saved`,n.data)}}catch(e){console.error(`Failed to save event:`,e)}},determineDateMode(){this.eventData.date&&this.eventData.dayOfWeek?this.dateMode=`interval`:this.eventData.date?this.dateMode=`date`:this.eventData.dayOfWeek?this.dateMode=`weekday`:this.dateMode=`date`},async fetchImageFilename(){try{this.imageFilename=(await e.get(`/image/`+this.assignedImage)).data.filename}catch(e){console.error(`Bild konnte nicht geladen werden:`,e)}},openAddImageDialog(){this.$refs.addImageDialog.openAddImageDialog()},async setImage(t){this.assignedImage=t;try{this.imageFilename=(await e.get(`/image/`+t)).data.filename}catch(e){console.error(`Bild konnte nicht geladen werden:`,e),this.imageFilename=``}},removeImage(){this.assignedImage=null,this.imageFilename=``},focusFirstField(){this.$nextTick(()=>{let e=document.getElementById(`name`);e&&e.focus()})}}},S={class:`event-form`},C={key:0},w={key:1},T={key:2},E={colspan:`2`},D={key:0},O=[`src`],k={key:1};function A(e,t,a,l,d,v){let y=r(`multiselect`),b=r(`AddImageDialog`);return p(),o(c,null,[i(`div`,S,[t[33]||=i(`h2`,null,`Veranstaltung Formular`,-1),i(`form`,{onSubmit:t[15]||=h((...e)=>v.saveEvent&&v.saveEvent(...e),[`prevent`])},[i(`table`,null,[i(`tbody`,null,[i(`tr`,null,[t[16]||=i(`td`,null,[i(`label`,{for:`name`},`Name:`)],-1),i(`td`,null,[n(i(`input`,{type:`text`,id:`name`,"onUpdate:modelValue":t[0]||=e=>d.eventData.name=e,required:``},null,512),[[m,d.eventData.name]])])]),i(`tr`,null,[t[17]||=i(`td`,null,[i(`label`,{for:`eventType`},`Typ:`)],-1),i(`td`,null,[s(y,{modelValue:d.selectedEventType,"onUpdate:modelValue":t[1]||=e=>d.selectedEventType=e,options:d.eventTypes,label:`caption`,"track-by":`id`,placeholder:`Typ wählen`},null,8,[`modelValue`,`options`])])]),i(`tr`,null,[t[19]||=i(`td`,null,[i(`label`,{for:`dateMode`},`Datum-Modus:`)],-1),i(`td`,null,[n(i(`select`,{"onUpdate:modelValue":t[2]||=e=>d.dateMode=e},[...t[18]||=[i(`option`,{value:`date`},`Datum`,-1),i(`option`,{value:`weekday`},`Wochentag`,-1),i(`option`,{value:`interval`},`Intervall`,-1),i(`option`,{value:`bulk`},`Bulk-Datum`,-1)]],512),[[g,d.dateMode]])])]),d.dateMode===`date`||d.dateMode===`interval`?(p(),o(`tr`,C,[t[20]||=i(`td`,null,[i(`label`,{for:`date`},`Datum:`)],-1),i(`td`,null,[n(i(`input`,{type:`date`,id:`date`,"onUpdate:modelValue":t[3]||=e=>d.eventData.date=e},null,512),[[m,d.eventData.date]])])])):f(``,!0),d.dateMode===`bulk`?(p(),o(`tr`,w,[t[22]||=i(`td`,null,[i(`label`,{for:`bulkDates`},`Bulk-Daten:`)],-1),i(`td`,null,[n(i(`textarea`,{id:`bulkDates`,"onUpdate:modelValue":t[4]||=e=>d.bulkDates=e,placeholder:`Mehrere Daten, z.B. 27.03.2025,03.04.2025 oder je Zeile ein Datum`},null,512),[[m,d.bulkDates]]),t[21]||=i(`div`,{style:{"font-size":`0.9em`,color:`#888`}},`Format: TT.MM.JJJJ (optional weiterhin JJJJ-MM-TT). Trennen mit Komma oder Zeilenumbruch.`,-1)])])):f(``,!0),d.dateMode===`weekday`||d.dateMode===`interval`?(p(),o(`tr`,T,[t[23]||=i(`td`,null,[i(`label`,{for:`dayOfWeek`},`Wochentag:`)],-1),i(`td`,null,[s(y,{modelValue:d.eventData.dayOfWeek,"onUpdate:modelValue":t[5]||=e=>d.eventData.dayOfWeek=e,options:d.weekdays,label:`name`,"track-by":`value`,placeholder:`Wochentag wählen`},null,8,[`modelValue`,`options`])])])):f(``,!0),i(`tr`,null,[t[24]||=i(`td`,null,[i(`label`,{for:`time`},`Uhrzeit:`)],-1),i(`td`,null,[n(i(`input`,{type:`time`,id:`time`,"onUpdate:modelValue":t[6]||=e=>d.eventData.time=e},null,512),[[m,d.eventData.time]])])]),i(`tr`,null,[t[25]||=i(`td`,null,[i(`label`,{for:`endTime`},`Ende-Uhrzeit:`)],-1),i(`td`,null,[n(i(`input`,{type:`time`,id:`endTime`,"onUpdate:modelValue":t[7]||=e=>d.eventData.endTime=e},null,512),[[m,d.eventData.endTime]])])]),i(`tr`,null,[t[26]||=i(`td`,null,[i(`label`,{for:`description`},`Beschreibung:`)],-1),i(`td`,null,[n(i(`textarea`,{id:`description`,"onUpdate:modelValue":t[8]||=e=>d.eventData.description=e,class:`descriptionedit`},null,512),[[m,d.eventData.description]])])]),i(`tr`,null,[t[27]||=i(`td`,null,[i(`label`,{for:`institution`},`Institution:`)],-1),i(`td`,null,[s(y,{modelValue:d.selectedInstitution,"onUpdate:modelValue":t[9]||=e=>d.selectedInstitution=e,options:d.localInstitutions,label:`name`,"track-by":`id`,placeholder:`Institution wählen`},null,8,[`modelValue`,`options`])])]),i(`tr`,null,[t[28]||=i(`td`,null,[i(`label`,{for:`eventPlace`},`Veranstaltungsort:`)],-1),i(`td`,null,[s(y,{modelValue:d.selectedEventPlace,"onUpdate:modelValue":t[10]||=e=>d.selectedEventPlace=e,options:d.localEventPlaces,label:`name`,"track-by":`id`,placeholder:`Veranstaltungsort wählen`},null,8,[`modelValue`,`options`])])]),i(`tr`,null,[t[29]||=i(`td`,null,[i(`label`,{for:`contactPersons`},`Kontaktpersonen:`)],-1),i(`td`,null,[s(y,{modelValue:d.selectedContactPersons,"onUpdate:modelValue":t[11]||=e=>d.selectedContactPersons=e,options:d.localContactPersons,multiple:!0,label:`name`,"track-by":`id`,placeholder:`Kontaktpersonen wählen`},null,8,[`modelValue`,`options`])])]),i(`tr`,null,[i(`td`,E,[i(`label`,null,[n(i(`input`,{type:`checkbox`,"onUpdate:modelValue":t[12]||=e=>d.onHomepage=e},null,512),[[_,d.onHomepage]]),t[30]||=u(`Auf der Startseite anzeigen`,-1)])])]),i(`tr`,null,[t[31]||=i(`td`,null,`Zugewiesenes Bild:`,-1),i(`td`,null,[d.assignedImage!=null&&d.imageFilename?(p(),o(`div`,D,[i(`img`,{src:v.getImagePath,class:`preview-image`},null,8,O),i(`button`,{onClick:t[13]||=(...e)=>v.removeImage&&v.removeImage(...e),type:`button`},`Bild entfernen`)])):(p(),o(`div`,k,[i(`button`,{type:`button`,onClick:t[14]||=(...e)=>v.openAddImageDialog&&v.openAddImageDialog(...e)},`Bild auswählen`)]))])]),t[32]||=i(`tr`,null,[i(`td`,{colspan:`2`},[i(`button`,{type:`submit`},`Speichern`)])],-1)])])],32)]),s(b,{ref:`addImageDialog`,onConfirm:v.setImage},null,8,[`onConfirm`])],64)}var j={components:{EventForm:d(x,[[`render`,A],[`__scopeId`,`data-v-35261561`]])},data(){return{events:[],institutions:[],eventPlaces:[],contactPersons:[],eventTypes:[],selectedEvent:null,showForm:!1,searchQuery:``,showPastEvents:!1}},computed:{filteredEvents(){let e=this.events;if(!this.showPastEvents){let t=new Date;t.setHours(0,0,0,0),e=e.filter(e=>{if(e.dayOfWeek!==null&&e.dayOfWeek!==void 0&&!e.date)return!0;if(e.date){let n=new Date(e.date);return n.setHours(0,0,0,0),n>=t}return!0})}if(this.searchQuery.trim()){let t=this.searchQuery.toLowerCase();e=e.filter(e=>{let n=e.name?e.name.toLowerCase():``,r=e.description?e.description.toLowerCase():``,i=this.getEventTypeCaption(e.eventTypeId).toLowerCase();return n.includes(t)||r.includes(t)||i.includes(t)})}return e}},async created(){await this.fetchData()},methods:{formatTime:v,async fetchData(){try{let[t,n,r,i,a]=await Promise.all([e.get(`/events`),e.get(`/institutions`),e.get(`/event-places`),e.get(`/contact-persons`),e.get(`/event-types`)]);this.events=t.data,this.institutions=n.data,this.eventPlaces=r.data,this.contactPersons=i.data,this.eventTypes=a.data}catch(e){console.error(`Fehler beim Abrufen der Daten:`,e)}},createEvent(){this.selectedEvent={},this.showForm=!0,this.scrollToFormAndFocus()},editEvent(e){this.selectedEvent={...e},this.showForm=!0,this.scrollToFormAndFocus()},scrollToFormAndFocus(){this.$nextTick(()=>{window.scrollTo({top:0,behavior:`smooth`}),this.$refs.eventForm&&this.$refs.eventForm.focusFirstField()})},async deleteEvent(t){try{await e.delete(`/events/${t}`),this.fetchData()}catch(e){console.error(`Fehler beim Löschen der Veranstaltung:`,e)}},handleEventSaved(){this.showForm=!1,this.fetchData()},handleEventCancelled(){this.showForm=!1},getEventTypeCaption(e){let t=this.eventTypes.find(t=>t.id===e);return t?t.caption:`Unbekannt`},getWeekdayName(e){return[`Sonntag`,`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`][e]}}},M={class:`event-management`},N={class:`filter-section`},P={class:`checkbox-label`},F={key:0},I=[`onClick`],L=[`onClick`];function R(e,s,d,h,g,v){let y=r(`EventForm`);return p(),o(`div`,M,[s[5]||=i(`h2`,null,`Veranstaltungen`,-1),i(`button`,{onClick:s[0]||=(...e)=>v.createEvent&&v.createEvent(...e)},`Neue Veranstaltung`),g.showForm?(p(),l(y,{key:0,ref:`eventForm`,event:g.selectedEvent,institutions:g.institutions,eventPlaces:g.eventPlaces,contactPersons:g.contactPersons,onSaved:v.handleEventSaved,onCancelled:v.handleEventCancelled},null,8,[`event`,`institutions`,`eventPlaces`,`contactPersons`,`onSaved`,`onCancelled`])):f(``,!0),i(`div`,N,[n(i(`input`,{"onUpdate:modelValue":s[1]||=e=>g.searchQuery=e,type:`text`,placeholder:`Suche nach Name, Typ, Beschreibung...`,class:`search-input`},null,512),[[m,g.searchQuery]]),i(`label`,P,[n(i(`input`,{"onUpdate:modelValue":s[2]||=e=>g.showPastEvents=e,type:`checkbox`},null,512),[[_,g.showPastEvents]]),s[3]||=u(` Vergangene Events anzeigen `,-1)])]),i(`table`,null,[s[4]||=i(`thead`,null,[i(`tr`,null,[i(`th`,null,`Name`),i(`th`,null,`Typ`),i(`th`,null,`Datum`),i(`th`,null,`Uhrzeit`),i(`th`,null,`Wochentag`),i(`th`,null,`Beschreibung`),i(`th`,null,`Aktionen`)])],-1),i(`tbody`,null,[(p(!0),o(c,null,t(v.filteredEvents,e=>(p(),o(`tr`,{key:e.id},[i(`td`,null,a(e.name),1),i(`td`,null,a(v.getEventTypeCaption(e.eventTypeId)),1),i(`td`,null,a(e.date),1),i(`td`,null,[u(a(v.formatTime(e.time)),1),e.endTime?(p(),o(`span`,F,` - `+a(v.formatTime(e.endTime)),1)):f(``,!0)]),i(`td`,null,a(v.getWeekdayName(e.dayOfWeek)),1),i(`td`,null,a(e.description),1),i(`td`,null,[i(`button`,{onClick:t=>v.editEvent(e)},`Bearbeiten`,8,I),i(`button`,{onClick:t=>v.deleteEvent(e.id)},`Löschen`,8,L)])]))),128))])])])}var z=d(j,[[`render`,R],[`__scopeId`,`data-v-5a61b018`]]);export{z as default}; //# sourceMappingURL=EventManagement-CvK_tsnH.js.map