diff --git a/src/data/content-seed.ts b/src/data/content-seed.ts index ade761e..d55f900 100644 --- a/src/data/content-seed.ts +++ b/src/data/content-seed.ts @@ -372,11 +372,11 @@ export const contentSeed: SeedEntry[] = [ // La FAQ 0 è mostrata per prima: numerata così per non rinumerare le esistenti (i tag già // presenti nei DB non verrebbero riscritti dall'INSERT OR IGNORE del seed). T('promo.faq.0.q', 'Come faccio ad acquistare i pacchetti?'), - H('promo.faq.0.a', 'Clicca sull\'icona del pacchetto che desideri acquistare e compila tutti i campi richiesti per completare la registrazione.

Una volta terminata l\'iscrizione, riceverai un\'email con le istruzioni per scaricare la nostra app Bsport. Dopo aver effettuato l\'accesso, entra nella sezione Club: qui troverai tutti i pacchetti disponibili. Seleziona quello che preferisci e completa l\'acquisto direttamente dall\'app effettuando il pagamento.'), + H('promo.faq.0.a', 'Clicca sull\'icona del pacchetto che desideri acquistare e compila tutti i campi richiesti per completare la registrazione.

Una volta terminata l\'iscrizione, riceverai un\'email con le istruzioni per scaricare la nostra app Bsport. Dopo aver effettuato l\'accesso, entra nella sezione Club: qui troverai tutti i pacchetti disponibili. Seleziona quello che preferisci e completa l\'acquisto direttamente dall\'app effettuando il pagamento.

Se hai bisogno di aiuto scrivi su WhatsApp ({{whatsapp}}) e sarai presto ricontattato!'), T('promo.faq.1.q', 'Come funziona il pacchetto a incontri per One to One e Small Group?'), - H('promo.faq.1.a', 'Acquisti il pacchetto online con pagamento sicuro via Stripe. Ricevi una conferma via email. Poi ci scrivi su WhatsApp ({{whatsapp}}) per prenotare le singole sessioni in base agli orari disponibili. Verrai ricontattato subito tramite messaggio o chiamata! Gli incontri sono validi 2 mesi dalla data del primo incontro e comunque non oltre il 1° dicembre 2026.'), + H('promo.faq.1.a', 'Per acquistare il pacchetto online segui le istruzioni riportate nella risposta della prima domanda. Una volta avvenuto con successo l\'acquisto, potrai contattarci scrivendoci su WhatsApp ({{whatsapp}}) per prenotare lo screening iniziale ovvero il colloquio conoscitivo per la definizione dei tuoi obiettivi. Verrai ricontattato subito tramite messaggio o chiamata! Gli incontri sono validi 2 mesi dalla data del primo incontro e comunque non oltre il 1° dicembre 2026.'), T('promo.faq.2.q', 'Come funziona il percorso Reformer o Holistic Class?'), - H('promo.faq.2.a', 'Acquisti il pacchetto online con pagamento sicuro via Stripe. Ricevi una conferma via email. Poi vai nella schermata Home, clicca il servizio che hai acquistato e seleziona autonomamente la class nel giorno e nell\'orario che desideri. In caso di problemi contattaci su WhatsApp ({{whatsapp}})! Gli incontri sono validi 2 mesi dalla data del primo incontro e comunque non oltre il 1° dicembre 2026.'), + H('promo.faq.2.a', 'Per acquistare il pacchetto online segui le istruzioni riportate nella risposta della prima domanda. Una volta scaricata l\'app Bsport e acquistato il pacchetto potrai procedere a selezionare autonomamente la class che preferisci nel giorno e nell\'orario che desideri. Gli orari delle class saranno pubblicati entro Settembre. In caso di problemi contattaci su WhatsApp ({{whatsapp}})! Gli incontri sono validi 2 mesi dalla data del primo incontro e comunque non oltre il 1° dicembre 2026.'), T('promo.faq.3.q', 'Posso usare gli incontri su servizi diversi?'), H('promo.faq.3.a', 'Ogni pacchetto è dedicato a un singolo servizio (One to One, Small Group, Reformer o Holistic Class). Se vuoi accedere a più servizi puoi acquistare pacchetti separati per ciascuno.'), T('promo.faq.4.q', 'Posso regalare un pacchetto a qualcun altro?'), diff --git a/src/lib/db.ts b/src/lib/db.ts index dbfb80e..e81e448 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -247,6 +247,27 @@ export function createDb(path?: string): Database.Database { // visibile ai soli admin): i tag che la servivano restano orfani nei DB esistenti. db.prepare("DELETE FROM content_blocks WHERE tag IN ('global.nav.7.label', 'promo.pagehero.title')").run(); + // FAQ "Come faccio ad acquistare i pacchetti?": coda con il rimando a WhatsApp aggiunta dopo + // il primo deploy → i DB esistenti hanno ancora la versione senza. Append guardato dalla fine + // del vecchio testo e dall'assenza della coda → idempotente, non tocca riscritture da pannello. + db.prepare( + `UPDATE content_blocks SET value = value || '

Se hai bisogno di aiuto scrivi su WhatsApp ({{whatsapp}}) e sarai presto ricontattato!' + WHERE tag = 'promo.faq.0.a' AND value LIKE '%effettuando il pagamento.'`, + ).run(); + + // FAQ 1 e 2 riscritte (rimando alla prima domanda per l'acquisto, screening iniziale per + // One to One/Small Group, orari class entro Settembre). Guardia via frammento LIKE del vecchio + // testo → idempotente e rispettosa di eventuali riscritture da pannello. + const PROMO_FAQ_RISCRITTE: [string, string, string][] = [ + ['promo.faq.1.a', '%per prenotare le singole sessioni in base agli orari disponibili%', + 'Per acquistare il pacchetto online segui le istruzioni riportate nella risposta della prima domanda. Una volta avvenuto con successo l\'acquisto, potrai contattarci scrivendoci su WhatsApp ({{whatsapp}}) per prenotare lo screening iniziale ovvero il colloquio conoscitivo per la definizione dei tuoi obiettivi. Verrai ricontattato subito tramite messaggio o chiamata! Gli incontri sono validi 2 mesi dalla data del primo incontro e comunque non oltre il 1° dicembre 2026.'], + ['promo.faq.2.a', '%vai nella schermata Home, clicca il servizio che hai acquistato%', + 'Per acquistare il pacchetto online segui le istruzioni riportate nella risposta della prima domanda. Una volta scaricata l\'app Bsport e acquistato il pacchetto potrai procedere a selezionare autonomamente la class che preferisci nel giorno e nell\'orario che desideri. Gli orari delle class saranno pubblicati entro Settembre. In caso di problemi contattaci su WhatsApp ({{whatsapp}})! Gli incontri sono validi 2 mesi dalla data del primo incontro e comunque non oltre il 1° dicembre 2026.'], + ]; + const updFaq = db.prepare('UPDATE content_blocks SET value = ? WHERE tag = ? AND value LIKE ?'); + const updFaqTx = db.transaction(() => { for (const [tag, frag, newV] of PROMO_FAQ_RISCRITTE) updFaq.run(newV, tag, frag); }); + updFaqTx(); + // Cestino degli articoli: colonna aggiunta a posteriori sui database già esistenti. const colonnePost = db.prepare('PRAGMA table_info(posts)').all() as { name: string }[]; if (!colonnePost.some((c) => c.name === 'deleted_at')) {