2 lines
13 KiB
JavaScript
2 lines
13 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-BaWViAU8.js";var d={name:`NewsletterImportManagement`,data(){return{newsletterPdfFile:null,isNewsletterImporting:!1,newsletterImportResult:null,selectedEventEntries:[]}},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:{encodeBulkSelection(e,t){return`${t}|||${e}`},decodeBulkSelection(e){let t=String(e||``),n=t.indexOf(`|||`);return n<0?{category:`Regelmäßige Termine`,entry:t}:{category:t.slice(0,n),entry:t.slice(n+3)}},buildEventDraft(e,t){let n=this.parseDateAndTime(e),r=this.inferEventMapping(e,t),i=this.extractAllDates(e),a=i.length>1,o=this.extractTitle(e);return{name:r.eventTypeId===41?`Kirche Kunterbunt`:o,description:``,date:a?``:n.isoDate,time:n.time,endTime:n.endTime,dateMode:a?`bulk`:`date`,bulkDates:a?i.join(`, `):``,category:t,eventTypeId:r.eventTypeId,event_place_id:r.event_place_id}},isValidDayMonth(e,t){let n=Number(e),r=Number(t);return Number.isInteger(n)&&Number.isInteger(r)&&n>=1&&n<=31&&r>=1&&r<=12},parseDateAndTime(e){let t=String(e||``),n=[...t.matchAll(/\b(\d{1,2})\.(\d{1,2})\.(\d{4})\b/g)],r=[...t.matchAll(/\b(\d{1,2})\.(\d{1,2})\.(?!\d)(?!\s*uhr\b)/gi)],i=t.match(/\b(?:von\s+)?(\d{1,2})[.:](\d{2})\s*-\s*\d{1,2}[.:]\d{2}\s*uhr\b/i),a=t.match(/\b(?:von\s+)?\d{1,2}[.:]\d{2}\s*-\s*(\d{1,2})[.:](\d{2})\s*uhr\b/i),o=t.match(/\b(?:um\s+|von\s+)?(\d{1,2}):(\d{2})(?:\s*uhr)?\b/i),s=t.match(/\bum\s+(\d{1,2})\.(\d{2})\s*uhr\b/i)||t.match(/\bvon\s+(\d{1,2})\.(\d{2})\b/i)||t.match(/\b(\d{1,2})\.(\d{2})\s*uhr\b/i),c=``,l=``,u=``,d=n.find(e=>this.isValidDayMonth(e[1],e[2]));if(d){let e=String(d[1]).padStart(2,`0`),t=String(d[2]).padStart(2,`0`);c=`${d[3]}-${t}-${e}`}else{let e=r.find(e=>this.isValidDayMonth(e[1],e[2]));if(e){let t=new Date().getFullYear(),n=String(e[1]).padStart(2,`0`);c=`${t}-${String(e[2]).padStart(2,`0`)}-${n}`}}let f=i||o||s;return f&&(l=`${String(f[1]).padStart(2,`0`)}:${String(f[2]).padStart(2,`0`)}`),a&&(u=`${String(a[1]).padStart(2,`0`)}:${String(a[2]).padStart(2,`0`)}`),{isoDate:c,time:l,endTime:u}},extractAllDates(e){let t=String(e||``),n=new Date().getFullYear(),r=[...t.matchAll(/\b(\d{1,2})\.(\d{1,2})\.(\d{4})\b/g)],i=[...t.matchAll(/\b(\d{1,2})\.(\d{1,2})\.(?!\d)(?!\s*uhr\b)/gi)],a=r.filter(e=>this.isValidDayMonth(e[1],e[2])).map(e=>`${String(e[1]).padStart(2,`0`)}.${String(e[2]).padStart(2,`0`)}.${e[3]}`);return i.forEach(e=>{if(!this.isValidDayMonth(e[1],e[2]))return;let t=String(e[1]).padStart(2,`0`),r=String(e[2]).padStart(2,`0`),i=`${t}.${r}.${n}`;a.some(e=>e.startsWith(`${t}.${r}.`))||a.push(i)}),[...new Set(a)]},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,a=``;return/gemeindehaus bonames/.test(n)?(i=7,a=`Gemeindehaus Bonames`):/gemeindehaus kalbach|crutzenhof|kalbach/.test(n)?(i=2,a=`Crutzenhof`):/gemeindehaus harheim|gemeindesaal harheim/.test(n)?(i=27,a=`Gemeindesaal Harheim`):/gemeindehaus nieder-?erlenbach|nieder-erlenbach/.test(n)?(i=13,a=`Nieder-Erlenbach`):/gemeindehaus nieder-?eschbach|nieder-eschbach/.test(n)?(i=14,a=`Nieder-Eschbach`):/gemeindehaus am b[üu]gel|am b[üu]gel/.test(n)?(i=12,a=`Am Bügel`):/gemeindehaus/.test(n)&&/bonames/.test(n)?(i=7,a=`Gemeindehaus Bonames`):/jugendkeller bonames/.test(n)?(i=8,a=`Jugendkeller Bonames`):/kita sternenzelt/.test(n)?(i=6,a=`Kita Sternenzelt`):/bonames/.test(n)?(i=1,a=`Bonames`):/harheim/.test(n)?(i=15,a=`Harheim`):/im sauern/.test(n)?(i=28,a=`Im Sauern`):/wunderkiste/.test(n)&&(i=16,a=`Miriams Wunderkiste`),{eventTypeId:r,event_place_id:i,event_place_name:a}},extractTitle(e){let t=String(e||``).trim().split(`|`).map(e=>e.trim()).filter(Boolean);if(t.length===0)return`Import aus Gemeindebrief`;let n=(t[0]||``).replace(/^(?:so|mo|di|mi|do|fr|sa)\.,?\s*/i,``).replace(/^\d{1,2}\.\d{1,2}\.(?:\d{2,4})?\s*/i,``).replace(/^\d{1,2}[:.]\d{2}\s*(?:-\s*\d{1,2}[:.]\d{2}\s*)?uhr\s*/i,``).replace(/^\d{1,2}\.\d{1,2}\.\s*/i,``).trim(),r=t.find(e=>!/\d{1,2}\.\d{1,2}\./.test(e)&&!/\d{1,2}[:.]\d{2}\s*uhr/i.test(e));return(n||r||t[0]||``).replace(/\[\[FLAG_NEIGHBOR_INVITATION\]\]/gi,``).replace(/\[\[FLAG_SELF_INFORMATION\]\]/gi,``).replace(/bitte informieren sie sich auch auf den internetseiten.*$/i,``).replace(/einladung zum gottesdienst im nachbarschaftsraum/gi,``).replace(/\s+/g,` `).trim()||`Import aus Gemeindebrief`},transferToEventForm(e,t){let n=this.buildEventDraft(e,t);localStorage.setItem(`newsletter_import_event_draft`,JSON.stringify(n)),this.$router.push(`/admin/events`)},transferSelectedToEventBulk(){if(this.selectedEventEntries.length===0)return;let e=this.selectedEventEntries.map(e=>this.decodeBulkSelection(e)).filter(e=>e.entry).map(e=>this.buildEventDraft(e.entry,e.category));e.length!==0&&(localStorage.setItem(`newsletter_import_event_bulk_queue`,JSON.stringify(e)),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);this.newsletterImportResult=t.data,this.selectedEventEntries=[],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={class:`detail-group`},w=[`value`],T=[`onClick`],E={class:`detail-group`},D=[`value`],O=[`onClick`],k={class:`detail-group`},A=[`value`],j=[`onClick`],M={class:`detail-group`},N=[`value`],P=[`onClick`],F={class:`detail-group`},I=[`value`],L=[`onClick`],R={class:`detail-group`},z=[`value`],B=[`onClick`],V={key:1,class:`questions`};function H(o,u,d,H,U,W){return c(),i(`div`,f,[u[22]||=n(`h2`,null,`Gemeindebrief-Import (PDF)`,-1),n(`div`,p,[u[10]||=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[9]||=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)=>W.handleNewsletterPdfSelect&&W.handleNewsletterPdfSelect(...e)},null,544),U.newsletterPdfFile?(c(),i(`div`,h,` Ausgewählte PDF: `+r(U.newsletterPdfFile.name),1)):s(``,!0),n(`button`,{type:`button`,class:`submit-import-button`,disabled:!U.newsletterPdfFile||U.isNewsletterImporting,onClick:u[1]||=(...e)=>W.importNewsletterPdf&&W.importNewsletterPdf(...e)},r(U.isNewsletterImporting?`Parse PDF...`:`PDF parsen`),9,g)])]),U.newsletterImportResult?(c(),i(`div`,_,[u[21]||=n(`h3`,null,`Vorschau`,-1),n(`p`,v,` Seiten: `+r(U.newsletterImportResult.meta?.pages||`-`)+`, Zeilen: `+r(U.newsletterImportResult.meta?.lineCount||`-`),1),n(`ul`,y,[u[11]||=n(`li`,null,`Gottesdienste: derzeit deaktiviert`,-1),n(`li`,null,`Regelmäßige Termine: `+r(U.newsletterImportResult.parsed?.regelmaessigeTermine?.length||0),1),n(`li`,null,`Besondere Gottesdienste: `+r(U.newsletterImportResult.parsed?.besondereGottesdienste?.length||0),1),n(`li`,null,`Miriamtreff: `+r(U.newsletterImportResult.parsed?.miriamtreff?.length||0),1),n(`li`,null,`Kinder und Jugend: `+r(U.newsletterImportResult.parsed?.kinderUndJugend?.length||0),1),n(`li`,null,`Frauenfrühstück: `+r(U.newsletterImportResult.parsed?.frauenfruehstueck?.length||0),1),n(`li`,null,`Senioren: `+r(U.newsletterImportResult.parsed?.senioren?.length||0),1)]),U.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:U.selectedEventEntries.length===0,onClick:u[2]||=(...e)=>W.transferSelectedToEventBulk&&W.transferSelectedToEventBulk(...e)},` Auswahl (`+r(U.selectedEventEntries.length)+`) als Event-Bulk übernehmen `,9,S)]),u[19]||=n(`div`,{class:`detail-group`},[n(`h5`,null,`Gottesdienste`),n(`p`,null,`Der Gottesdienst-Import ist derzeit deaktiviert und wird aktuell nicht zur Übernahme angeboten.`)],-1),n(`div`,C,[u[12]||=n(`h5`,null,`Regelmäßige Termine`,-1),n(`ul`,null,[(c(!0),i(a,null,e(U.newsletterImportResult.details.regelmaessigeTermine||[],(e,a)=>(c(),i(`li`,{key:`r-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:W.encodeBulkSelection(e,`Regelmäßige Termine`),"onUpdate:modelValue":u[3]||=e=>U.selectedEventEntries=e},null,8,w),[[l,U.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>W.transferToEventForm(e,`Regelmäßige Termine`)},`Als Event übernehmen`,8,T)]))),128))])]),n(`div`,E,[u[13]||=n(`h5`,null,`Besondere Gottesdienste`,-1),n(`ul`,null,[(c(!0),i(a,null,e(U.newsletterImportResult.details.besondereGottesdienste||[],(e,a)=>(c(),i(`li`,{key:`b-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:W.encodeBulkSelection(e,`Besondere Gottesdienste`),"onUpdate:modelValue":u[4]||=e=>U.selectedEventEntries=e},null,8,D),[[l,U.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>W.transferToEventForm(e,`Besondere Gottesdienste`)},`Als Event übernehmen`,8,O)]))),128))])]),n(`div`,k,[u[14]||=n(`h5`,null,`Miriamtreff`,-1),n(`ul`,null,[(c(!0),i(a,null,e(U.newsletterImportResult.details.miriamtreff||[],(e,a)=>(c(),i(`li`,{key:`m-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:W.encodeBulkSelection(e,`Miriamtreff`),"onUpdate:modelValue":u[5]||=e=>U.selectedEventEntries=e},null,8,A),[[l,U.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>W.transferToEventForm(e,`Miriamtreff`)},`Als Event übernehmen`,8,j)]))),128))])]),n(`div`,M,[u[15]||=n(`h5`,null,`Kinder und Jugend`,-1),n(`ul`,null,[(c(!0),i(a,null,e(U.newsletterImportResult.details.kinderUndJugend||[],(e,a)=>(c(),i(`li`,{key:`k-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:W.encodeBulkSelection(e,`Kinder und Jugend`),"onUpdate:modelValue":u[6]||=e=>U.selectedEventEntries=e},null,8,N),[[l,U.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>W.transferToEventForm(e,`Kinder und Jugend`)},`Als Event übernehmen`,8,P)]))),128))])]),n(`div`,F,[u[16]||=n(`h5`,null,`Frauenfrühstück`,-1),n(`ul`,null,[(c(!0),i(a,null,e(U.newsletterImportResult.details.frauenfruehstueck||[],(e,a)=>(c(),i(`li`,{key:`f-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:W.encodeBulkSelection(e,`Frauenfrühstück`),"onUpdate:modelValue":u[7]||=e=>U.selectedEventEntries=e},null,8,I),[[l,U.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>W.transferToEventForm(e,`Frauenfrühstück`)},`Als Event übernehmen`,8,L)]))),128))])]),n(`div`,R,[u[17]||=n(`h5`,null,`Senioren`,-1),n(`ul`,null,[(c(!0),i(a,null,e(U.newsletterImportResult.details.senioren||[],(e,a)=>(c(),i(`li`,{key:`s-${a}`},[n(`label`,null,[t(n(`input`,{type:`checkbox`,value:W.encodeBulkSelection(e,`Senioren`),"onUpdate:modelValue":u[8]||=e=>U.selectedEventEntries=e},null,8,z),[[l,U.selectedEventEntries]])]),n(`span`,null,r(e),1),n(`button`,{type:`button`,class:`transfer-button`,onClick:t=>W.transferToEventForm(e,`Senioren`)},`Als Event übernehmen`,8,B)]))),128))])])])):s(``,!0),U.newsletterImportResult.questions?.length?(c(),i(`div`,V,[u[20]||=n(`h4`,null,`Offene Fragen`,-1),n(`ul`,null,[(c(!0),i(a,null,e(U.newsletterImportResult.questions,(e,t)=>(c(),i(`li`,{key:t},r(e),1))),128))])])):s(``,!0)])):s(``,!0)])}var U=o(d,[[`render`,H],[`__scopeId`,`data-v-dba459cc`]]);export{U as default};
|
|
//# sourceMappingURL=NewsletterImportManagement-CVDnikRG.js.map
|