2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
import{E as e,M as t,c as n,ct as r,d as i,i as a,t as o,u as s,w as c}from"./_plugin-vue_export-helper-Conii5fq.js";import{r as l}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{r as u}from"./router-DAjmIAVU.js";var d={name:`NewsletterImportManagement`,data(){return{newsletterPdfFile:null,isNewsletterImporting:!1,newsletterImportResult:null,selectedEventEntries:[],selectedWorshipEntries:[]}},created(){let e=localStorage.getItem(`newsletter_import_last_result`);if(e)try{this.newsletterImportResult=JSON.parse(e)}catch(e){console.error(`Konnte zwischengespeicherte Vorschau nicht lesen:`,e)}},methods:{parseDateAndTime(e){let t=String(e||``),n=t.match(/\b(\d{1,2})\.(\d{1,2})\.(\d{4})\b/),r=t.match(/\b(\d{1,2})\.(\d{1,2})\.\b/),i=t.match(/\b(\d{1,2})[:.](\d{2})(?:\s*uhr)?\b/i),a=``,o=``;if(n){let e=String(n[1]).padStart(2,`0`),t=String(n[2]).padStart(2,`0`);a=`${n[3]}-${t}-${e}`}else if(r){let e=new Date().getFullYear(),t=String(r[1]).padStart(2,`0`);a=`${e}-${String(r[2]).padStart(2,`0`)}-${t}`}return i&&(o=`${String(i[1]).padStart(2,`0`)}:${String(i[2]).padStart(2,`0`)}`),{isoDate:a,time:o}},inferWorshipFields(e){let t=String(e||``),n=t.split(`|`).map(e=>e.trim()).filter(Boolean),r=this.parseDateAndTime(t),i=t.match(/gestaltung:\s*([^|]+)/i),a=t.match(/kollekte:\s*([^|]+)/i),o=this.extractTitle(t),s=null;return/bonames/i.test(t)?s=1:/kalbach/i.test(t)?s=11:/b[üu]gel/i.test(t)?s=12:/nieder-erlenbach/i.test(t)?s=13:/nieder-eschbach/i.test(t)?s=14:/harheim/i.test(t)&&(s=15),{date:r.isoDate,time:r.time,title:o,organizer:i?i[1].trim():``,collection:a?a[1].trim():``,eventPlaceId:s,sourceText:n.join(` | `)}},inferEventMapping(e,t){let n=String(e||``).toLowerCase(),r=38;/miriamtreff/.test(n)?r=16:/frauenfr[üu]hst[üu]ck/.test(n)?r=25:/m[aä]nnerpalaver/.test(n)?r=15:/kinderkirche/.test(n)||/kinder kirche/.test(n)?r=4:/kigosabo|kindergottesdienst/.test(n)?r=5:/jungschar/.test(n)?r=6:/konfirmationsunterricht/.test(n)?r=3:/vorkonfirmandenkurs|vorkonfis/.test(n)?r=39:/vocal ensemble/.test(n)?r=17:/konzert/.test(n)?r=40:/vortrag/.test(n)?r=42:/weihnachtsmarkt/.test(n)?r=43:/kirchekunterbunt|kirche kunterbunt/.test(n)?r=41:t===`Besondere Gottesdienste`&&(r=1);let i=null;return/gemeindehaus bonames/.test(n)?i=7:/gemeindehaus kalbach/.test(n)?i=2:/gemeindehaus harheim/.test(n)?i=27:/gemeindehaus nieder-?erlenbach/.test(n)?i=13:/gemeindehaus nieder-?eschbach/.test(n)?i=14:/gemeindehaus am b[üu]gel/.test(n)?i=12:/gemeindehaus/.test(n)&&/bonames/.test(n)?i=7:/jugendkeller bonames/.test(n)?i=8:/kita sternenzelt/.test(n)?i=6:/crutzenhof|kalbach/.test(n)?i=2:/am b[üu]gel/.test(n)?i=12:/bonames/.test(n)?i=1:/nieder-erlenbach/.test(n)?i=13:/nieder-eschbach/.test(n)?i=14:/harheim/.test(n)?i=15:/gemeindesaal harheim/.test(n)?i=27:/im sauern/.test(n)?i=28:/wunderkiste/.test(n)&&(i=16),{eventTypeId:r,event_place_id:i}},extractTitle(e){let t=String(e||``).trim().split(`|`).map(e=>e.trim()).filter(Boolean);return t.length===0?`Import aus Gemeindebrief`:t.find(e=>!/\d{1,2}\.\d{1,2}\./.test(e)&&!/\d{1,2}[:.]\d{2}\s*uhr/i.test(e))||t[0]},transferToWorshipForm(e){let t={...this.inferWorshipFields(e)};localStorage.setItem(`newsletter_import_worship_draft`,JSON.stringify(t)),this.$router.push(`/admin/worships`)},transferToEventForm(e,t){let n=this.parseDateAndTime(e),r=this.inferEventMapping(e,t),i={name:this.extractTitle(e),description:``,date:n.isoDate,time:n.time,category:t,eventTypeId:r.eventTypeId,event_place_id:r.event_place_id};localStorage.setItem(`newsletter_import_event_draft`,JSON.stringify(i)),this.$router.push(`/admin/events`)},transferSelectedToWorshipBulk(){if(this.selectedWorshipEntries.length===0)return;let e=this.selectedWorshipEntries.map(e=>({...this.inferWorshipFields(e),dayName:``,sacristanService:``,organPlaying:``,approved:!1}));localStorage.setItem(`newsletter_import_worship_bulk_draft`,JSON.stringify(e)),this.$router.push(`/admin/worships`)},transferSelectedToEventBulk(){if(this.selectedEventEntries.length===0)return;let e=this.selectedEventEntries.map(e=>{let t=this.parseDateAndTime(e);if(!t.isoDate)return``;let[n,r,i]=t.isoDate.split(`-`);return`${i}.${r}.${n}`}).filter(Boolean).join(`, `),t=this.selectedEventEntries[0]||``,n={name:this.extractTitle(t),description:``,dateMode:`bulk`,bulkDates:e,...this.inferEventMapping(t,`Regelmäßige Termine`)};localStorage.setItem(`newsletter_import_event_draft`,JSON.stringify(n)),this.$router.push(`/admin/events`)},handleNewsletterPdfSelect(e){let t=e.target.files?.[0];if(!t){this.newsletterPdfFile=null;return}if(!t.name.toLowerCase().endsWith(`.pdf`)){alert(`Bitte eine PDF-Datei auswählen.`),e.target.value=``,this.newsletterPdfFile=null;return}this.newsletterPdfFile=t},async importNewsletterPdf(){if(!this.newsletterPdfFile)return;this.isNewsletterImporting=!0;let e=new FormData;e.append(`file`,this.newsletterPdfFile);try{let t=await u.post(`/worships/import/newsletter-pdf`,e,{headers:{"Content-Type":`multipart/form-data`}});this.newsletterImportResult=t.data,this.selectedEventEntries=[],this.selectedWorshipEntries=[],localStorage.setItem(`newsletter_import_last_result`,JSON.stringify(t.data))}catch(e){let t=e.response?.data?.message||`Fehler beim Parsen der PDF-Datei.`;alert(`Fehler: ${t}`)}finally{this.isNewsletterImporting=!1}}}},f={class:`newsletter-import`},p={class:`import-section`},m={class:`import-content`},h={key:0,class:`selected-file`},g=[`disabled`],_={key:0,class:`newsletter-preview`},v={class:`newsletter-meta`},y={class:`newsletter-counts`},b={key:0,class:`details`},x={class:`bulk-actions`},S=[`disabled`],C=[`disabled`],w={class:`detail-group`},T=[`value`],E=[`onClick`],D={class:`detail-group`},O=[`value`],k=[`onClick`],A={class:`detail-group`},j=[`value`],M=[`onClick`],N={class:`detail-group`},P=[`value`],F=[`onClick`],I={class:`detail-group`},L=[`value`],R=[`onClick`],z={class:`detail-group`},B=[`value`],V=[`onClick`],H={key:1,class:`questions`};function U(o,u,d,U,W,G){return c(),i(`div`,f,[u[21]||=n(`h2`,null,`Gemeindebrief-Import (PDF)`,-1),n(`div`,p,[u[11]||=n(`p`,{class:`hint`},` Diese Seite parst den Gemeindebrief und zeigt eine Vorschau nach Kategorien. Die finale Übernahme bauen wir auf Basis der Parser-Ergebnisse schrittweise aus. `,-1),n(`div`,m,[u[10]||=n(`label`,{for:`newsletter-import-file`},`Datei auswählen (.pdf):`,-1),n(`input`,{id:`newsletter-import-file`,ref:`newsletterFileInput`,type:`file`,accept:`.pdf`,onChange:u[0]||=(...e)=>G.handleNewsletterPdfSelect&&G.handleNewsletterPdfSelect(...e)},null,544),W.newsletterPdfFile?(c(),i(`div`,h,` Ausgewählte PDF: `+r(W.newsletterPdfFile.name),1)):s(``,!0),n(`button`,{type:`button`,class:`submit-import-button`,disabled:!W.newsletterPdfFile||W.isNewsletterImporting,onClick:u[1]||=(...e)=>G.importNewsletterPdf&&G.importNewsletterPdf(...e)},r(W.isNewsletterImporting?`Parse PDF...`:`PDF parsen`),9,g)])]),W.newsletterImportResult?(c(),i(`div`,_,[u[20]||=n(`h3`,null,`Vorschau`,-1),n(`p`,v,` Seiten: `+r(W.newsletterImportResult.meta?.pages||`-`)+`, Zeilen: `+r(W.newsletterImportResult.meta?.lineCount||`-`),1),n(`ul`,y,[n(`li`,null,`Gottesdienste: `+r(W.newsletterImportResult.parsed?.gottesdienste?.length||0),1),n(`li`,null,`Regelmäßige Termine: `+r(W.newsletterImportResult.parsed?.regelmaessigeTermine?.length||0),1),n(`li`,null,`Besondere Gottesdienste: `+r(W.newsletterImportResult.parsed?.besondereGottesdienste?.length||0),1),n(`li`,null,`Miriamtreff: `+r(W.newsletterImportResult.parsed?.miriamtreff?.length||0),1),n(`li`,null,`Kinder und Jugend: `+r(W.newsletterImportResult.parsed?.kinderUndJugend?.length||0),1),n(`li`,null,`Frauenfrühstück: `+r(W.newsletterImportResult.parsed?.frauenfruehstueck?.length||0),1)]),W.newsletterImportResult.details?(c(),i(`div`,b,[u[18]||=n(`h4`,null,`Gefundene Einträge (Details)`,-1),n(`div`,x,[n(`button`,{type:`button`,class:`submit-import-button`,disabled:W.selectedWorshipEntries.length===0,onClick:u[2]||=(...e)=>G.transferSelectedToWorshipBulk&&G.transferSelectedToWorshipBulk(...e)},` Auswahl (`+r(W.selectedWorshipEntries.length)+`) als Gottesdienst-Bulk übernehmen `,9,S),n(`button`,{type:`button`,class:`submit-import-button`,disabled:W.selectedEventEntries.length===0,onClick:u[3]||=(...e)=>G.transferSelectedToEventBulk&&G.transferSelectedToEventBulk(...e)},` Auswahl (`+r(W.selectedEventEntries.length)+`) als Event-Bulk übernehmen `,9,C)]),n(`div`,w,[u[12]||=n(`h5`,null,`Gottesdienste`,-1),n(`ul`,null,[(c(!0),i(a,null,e(W.newsletterImportResult.details.gottesdienste||[],(e,a)=>(c(),i(`li`,{key:`g-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:e,"onUpdate:modelValue":u[4]||=e=>W.selectedWorshipEntries=e},null,8,T),[[l,W.selectedWorshipEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>G.transferToWorshipForm(e)},`Als Gottesdienst übernehmen`,8,E)]))),128))])]),n(`div`,D,[u[13]||=n(`h5`,null,`Regelmäßige Termine`,-1),n(`ul`,null,[(c(!0),i(a,null,e(W.newsletterImportResult.details.regelmaessigeTermine||[],(e,a)=>(c(),i(`li`,{key:`r-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:e,"onUpdate:modelValue":u[5]||=e=>W.selectedEventEntries=e},null,8,O),[[l,W.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>G.transferToEventForm(e,`Regelmäßige Termine`)},`Als Event übernehmen`,8,k)]))),128))])]),n(`div`,A,[u[14]||=n(`h5`,null,`Besondere Gottesdienste`,-1),n(`ul`,null,[(c(!0),i(a,null,e(W.newsletterImportResult.details.besondereGottesdienste||[],(e,a)=>(c(),i(`li`,{key:`b-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:e,"onUpdate:modelValue":u[6]||=e=>W.selectedEventEntries=e},null,8,j),[[l,W.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>G.transferToEventForm(e,`Besondere Gottesdienste`)},`Als Event übernehmen`,8,M)]))),128))])]),n(`div`,N,[u[15]||=n(`h5`,null,`Miriamtreff`,-1),n(`ul`,null,[(c(!0),i(a,null,e(W.newsletterImportResult.details.miriamtreff||[],(e,a)=>(c(),i(`li`,{key:`m-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:e,"onUpdate:modelValue":u[7]||=e=>W.selectedEventEntries=e},null,8,P),[[l,W.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>G.transferToEventForm(e,`Miriamtreff`)},`Als Event übernehmen`,8,F)]))),128))])]),n(`div`,I,[u[16]||=n(`h5`,null,`Kinder und Jugend`,-1),n(`ul`,null,[(c(!0),i(a,null,e(W.newsletterImportResult.details.kinderUndJugend||[],(e,a)=>(c(),i(`li`,{key:`k-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:e,"onUpdate:modelValue":u[8]||=e=>W.selectedEventEntries=e},null,8,L),[[l,W.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>G.transferToEventForm(e,`Kinder und Jugend`)},`Als Event übernehmen`,8,R)]))),128))])]),n(`div`,z,[u[17]||=n(`h5`,null,`Frauenfrühstück`,-1),n(`ul`,null,[(c(!0),i(a,null,e(W.newsletterImportResult.details.frauenfruehstueck||[],(e,a)=>(c(),i(`li`,{key:`f-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:e,"onUpdate:modelValue":u[9]||=e=>W.selectedEventEntries=e},null,8,B),[[l,W.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>G.transferToEventForm(e,`Frauenfrühstück`)},`Als Event übernehmen`,8,V)]))),128))])])])):s(``,!0),W.newsletterImportResult.questions?.length?(c(),i(`div`,H,[u[19]||=n(`h4`,null,`Offene Fragen`,-1),n(`ul`,null,[(c(!0),i(a,null,e(W.newsletterImportResult.questions,(e,t)=>(c(),i(`li`,{key:t},r(e),1))),128))])])):s(``,!0)])):s(``,!0)])}var W=o(d,[[`render`,U],[`__scopeId`,`data-v-97c5cc01`]]);export{W as default};
|
|
//# sourceMappingURL=NewsletterImportManagement-BE5genZl.js.map
|