-- ═══════════════════════════════════════════════════════════════════ -- email_templates_20260505.sql | v1.0.0 | 2026-05-05 -- Author: Damir Radulić / damir@rinet.one -- Lokacija: /opt/pgz-sport/migrations/email_templates_20260505.sql -- Svrha: CRM v2 — E-mail templates tab (CRUD predložaka za masovni e-mail). -- Idempotent: ostavlja postojeću tablicu netaknutom + osigurava -- 3 seed predloška (clanarina_opomena, lijecnicki_podsjetnik, -- obrazac_potpis). -- ═══════════════════════════════════════════════════════════════════ BEGIN; CREATE TABLE IF NOT EXISTS pgz_sport.email_templates ( id SERIAL PRIMARY KEY, code TEXT NOT NULL UNIQUE, naziv TEXT NOT NULL, kategorija TEXT, subject_tpl TEXT NOT NULL, body_tpl TEXT NOT NULL, variables JSONB, active BOOLEAN DEFAULT true, created_at TIMESTAMPTZ DEFAULT now(), updated_at TIMESTAMPTZ DEFAULT now() ); -- Indexes CREATE INDEX IF NOT EXISTS ix_email_templates_kategorija ON pgz_sport.email_templates (kategorija); CREATE INDEX IF NOT EXISTS ix_email_templates_active ON pgz_sport.email_templates (active); -- Seed (skip if already present) INSERT INTO pgz_sport.email_templates (code, naziv, kategorija, subject_tpl, body_tpl, variables, active) VALUES ('pristupnica', 'Pristupnica klubu — predložak', 'obrasci', 'Pristupnica za klub {{naziv_kluba}}', E'Poštovani,\n\nu prilogu Vam šaljemo pristupnicu za klub {{naziv_kluba}} (sezona {{sezona}}).\nMolimo da ispunjenu i potpisanu pristupnicu vratite najkasnije do {{rok}}.\n\nLijep pozdrav,\nPGŽ Sport', '{"naziv_kluba":"string","sezona":"string","rok":"date"}'::jsonb, true), ('suglasnost', 'Suglasnost roditelja — predložak', 'obrasci', 'Suglasnost roditelja za {{ime_djeteta}}', E'Poštovani roditelju/skrbniku,\n\nMolimo Vas da popunite priloženu suglasnost za sudjelovanje djeteta {{ime_djeteta}} u programu kluba {{naziv_kluba}}.\nSuglasnost je potrebno potpisati i vratiti najkasnije do {{rok}}.\n\nHvala na razumijevanju,\nPGŽ Sport', '{"ime_djeteta":"string","naziv_kluba":"string","rok":"date"}'::jsonb, true), ('putni-nalog', 'Putni nalog — predložak', 'obrasci', 'Putni nalog #{{nalog_broj}} — {{odrediste}}', E'Pozdrav,\n\nIzdaje se putni nalog broj {{nalog_broj}} za putovanje u {{odrediste}} u razdoblju od {{datum_od}} do {{datum_do}}.\nSvrha: {{svrha}}\nProcijenjeni trošak: {{iznos}} EUR\n\nMolimo da po povratku dostavite obračun s pripadajućim računima.\n\nPGŽ Sport', '{"nalog_broj":"string","odrediste":"string","datum_od":"date","datum_do":"date","svrha":"string","iznos":"number"}'::jsonb, true) ON CONFLICT (code) DO NOTHING; COMMIT;