SET NAMES utf8mb4;

INSERT INTO users (id, name, email, phone, password_hash, role, email_verified_at, status) VALUES
(1, 'Client Demo', 'client@example.com', '+40700000001', 'scrypt$eventor_demo_salt_2026$1fbef591db4c16cd5c3ac10961a7de8e33f22bb8f954a37a4c3d1b9d5bba4251106e71a0297986713bf825a019a270ed30e48f652805fd1501ba88b887e73c97', 'CLIENT', NOW(), 'active'),
(2, 'Organizator Demo', 'organizer@example.com', '+40700000002', 'scrypt$eventor_demo_salt_2026$1fbef591db4c16cd5c3ac10961a7de8e33f22bb8f954a37a4c3d1b9d5bba4251106e71a0297986713bf825a019a270ed30e48f652805fd1501ba88b887e73c97', 'ORGANIZER_OWNER', NOW(), 'active'),
(3, 'Scanner Demo', 'scanner@example.com', '+40700000003', 'scrypt$eventor_demo_salt_2026$1fbef591db4c16cd5c3ac10961a7de8e33f22bb8f954a37a4c3d1b9d5bba4251106e71a0297986713bf825a019a270ed30e48f652805fd1501ba88b887e73c97', 'SCANNER', NOW(), 'active'),
(4, 'Support Demo', 'support@example.com', '+40700000004', 'scrypt$eventor_demo_salt_2026$1fbef591db4c16cd5c3ac10961a7de8e33f22bb8f954a37a4c3d1b9d5bba4251106e71a0297986713bf825a019a270ed30e48f652805fd1501ba88b887e73c97', 'SUPPORT', NOW(), 'active'),
(5, 'Finance Demo', 'finance@example.com', '+40700000005', 'scrypt$eventor_demo_salt_2026$1fbef591db4c16cd5c3ac10961a7de8e33f22bb8f954a37a4c3d1b9d5bba4251106e71a0297986713bf825a019a270ed30e48f652805fd1501ba88b887e73c97', 'FINANCE', NOW(), 'active'),
(6, 'Admin Demo', 'admin@example.com', '+40700000006', 'scrypt$eventor_demo_salt_2026$1fbef591db4c16cd5c3ac10961a7de8e33f22bb8f954a37a4c3d1b9d5bba4251106e71a0297986713bf825a019a270ed30e48f652805fd1501ba88b887e73c97', 'ADMIN', NOW(), 'active'),
(7, 'Super Admin Demo', 'superadmin@example.com', '+40700000007', 'scrypt$eventor_demo_salt_2026$1fbef591db4c16cd5c3ac10961a7de8e33f22bb8f954a37a4c3d1b9d5bba4251106e71a0297986713bf825a019a270ed30e48f652805fd1501ba88b887e73c97', 'SUPER_ADMIN', NOW(), 'active')
ON DUPLICATE KEY UPDATE email = VALUES(email);

INSERT INTO organizations (id, owner_user_id, name, legal_name, cui, address, bank_account, status, commission_rate) VALUES
(1, 2, 'Eventor Demo Events', 'Eventor Demo Events SRL', 'RO12345678', 'Bucuresti, Romania', 'RO49AAAA1B31007593840000', 'approved', 5.00)
ON DUPLICATE KEY UPDATE name = VALUES(name);

INSERT INTO organization_members (organization_id, user_id, role, permissions_json) VALUES
(1, 2, 'owner', JSON_ARRAY('manage_events','view_sales')),
(1, 3, 'scanner', JSON_ARRAY('scan_assigned_events'))
ON DUPLICATE KEY UPDATE role = VALUES(role);

INSERT INTO categories (id, name, slug, icon, sort_order, status) VALUES
(1, 'Concerte', 'concerte', 'music', 1, 'active'),
(2, 'Festivaluri', 'festivaluri', 'party-popper', 2, 'active'),
(3, 'Teatru', 'teatru', 'drama', 3, 'active'),
(4, 'Stand-up', 'stand-up', 'mic', 4, 'active'),
(5, 'Sport', 'sport', 'trophy', 5, 'active'),
(6, 'Copii', 'copii', 'sparkles', 6, 'active'),
(7, 'Conferinte', 'conferinte', 'briefcase', 7, 'active'),
(8, 'Opera', 'opera', 'theater', 8, 'active'),
(9, 'Dans', 'dans', 'music-2', 9, 'active'),
(10, 'Film', 'film', 'film', 10, 'active'),
(11, 'Clubbing', 'clubbing', 'disc', 11, 'active')
ON DUPLICATE KEY UPDATE name = VALUES(name), sort_order = VALUES(sort_order);

INSERT INTO cities (id, name, slug, county, country) VALUES
(1, 'Bucuresti', 'bucuresti', 'Bucuresti', 'Romania'),
(2, 'Cluj-Napoca', 'cluj-napoca', 'Cluj', 'Romania'),
(3, 'Iasi', 'iasi', 'Iasi', 'Romania'),
(4, 'Timisoara', 'timisoara', 'Timis', 'Romania'),
(5, 'Brasov', 'brasov', 'Brasov', 'Romania'),
(6, 'Constanta', 'constanta', 'Constanta', 'Romania'),
(7, 'Sibiu', 'sibiu', 'Sibiu', 'Romania'),
(8, 'Oradea', 'oradea', 'Bihor', 'Romania'),
(9, 'Craiova', 'craiova', 'Dolj', 'Romania'),
(10, 'Targu Mures', 'targu-mures', 'Mures', 'Romania')
ON DUPLICATE KEY UPDATE name = VALUES(name);

INSERT INTO venues (id, city_id, name, slug, address, latitude, longitude, description, rules) VALUES
(1, 1, 'Arenele Romane', 'arenele-romane', 'Strada Cutitul de Argint, Bucuresti', 44.4139000, 26.0963000, 'Spatiu outdoor pentru concerte si festivaluri.', 'Acces pe baza biletului valid.'),
(2, 2, 'Teatrul National Cluj', 'teatrul-national-cluj', 'Piata Stefan cel Mare, Cluj-Napoca', 46.7704000, 23.5966000, 'Sala de teatru centrala.', 'Respectati ora de incepere.'),
(3, 3, 'Casa de Cultura a Studentilor Iasi', 'casa-de-cultura-studenti-iasi', 'Strada Vasile Conta, Iasi', 47.1666000, 27.5906000, 'Sala pentru spectacole si stand-up.', 'Acces cu 30 minute inainte.'),
(4, 4, 'Parcul Rozelor', 'parcul-rozelor-timisoara', 'Parcul Rozelor, Timisoara', 45.7503000, 21.2310000, 'Locatie urbana pentru festivaluri.', 'Accesul cu bauturi din exterior este interzis.'),
(5, 5, 'Sala Patria Brasov', 'sala-patria-brasov', 'Bulevardul 15 Noiembrie, Brasov', 45.6470000, 25.6012000, 'Sala pentru spectacole.', 'Copiii intra insotiti.'),
(6, 1, 'Palatul Parlamentului', 'palatul-parlamentului', 'Strada Izvor, Bucuresti', 44.4275000, 26.0875000, 'Centru pentru conferinte.', 'Este necesar act de identitate.')
ON DUPLICATE KEY UPDATE name = VALUES(name);

INSERT INTO events
(id, organization_id, category_id, city_id, venue_id, title, slug, short_description, description, poster_url, start_at, end_at, status, age_limit, access_rules, refund_policy, seo_title, seo_description, is_promoted, published_at)
VALUES
(1, 1, 1, 1, 1, 'Concert rock in Bucuresti', 'concert-rock-bucuresti', 'O seara live cu trupe rock romanesti.', 'Concert rock cu energie, invitati si productie live completa.', '/public/assets/images/poster-rock.svg', DATE_ADD(NOW(), INTERVAL 25 DAY), DATE_ADD(NOW(), INTERVAL 25 DAY) + INTERVAL 3 HOUR, 'published', '14+', 'Acces cu bilet valid si act de identitate.', 'Refund disponibil cu minimum 7 zile inainte.', 'Concert rock in Bucuresti - Eventor.ro', 'Cumpara bilete la concert rock in Bucuresti.', 1, NOW()),
(2, 1, 3, 2, 2, 'Spectacol de teatru in Cluj', 'spectacol-teatru-cluj', 'O productie contemporana pe scena din Cluj.', 'Spectacol de teatru cu distributie locala si invitati speciali.', '/public/assets/images/poster-theater.svg', DATE_ADD(NOW(), INTERVAL 18 DAY), DATE_ADD(NOW(), INTERVAL 18 DAY) + INTERVAL 2 HOUR, 'published', '12+', 'Accesul dupa incepere poate fi restrictionat.', 'Refund disponibil conform politicii organizatorului.', 'Spectacol de teatru in Cluj - Eventor.ro', 'Bilete online la teatru in Cluj-Napoca.', 0, NOW()),
(3, 1, 4, 3, 3, 'Stand-up comedy in Iasi', 'stand-up-comedy-iasi', 'Comedie live cu glume noi.', 'Seara de stand-up comedy pentru public adult.', '/public/assets/images/poster-standup.svg', DATE_ADD(NOW(), INTERVAL 12 DAY), DATE_ADD(NOW(), INTERVAL 12 DAY) + INTERVAL 2 HOUR, 'published', '16+', 'Acces pe baza biletului valid.', 'Biletele pot fi rambursate cu minimum 5 zile inainte.', 'Stand-up comedy in Iasi - Eventor.ro', 'Rezerva bilete la stand-up comedy in Iasi.', 1, NOW()),
(4, 1, 2, 4, 4, 'Festival urban in Timisoara', 'festival-urban-timisoara', 'Muzica, street food si activitati urbane.', 'Festival urban de weekend cu artisti, food trucks si activitati pentru comunitate.', '/public/assets/images/poster-festival.svg', DATE_ADD(NOW(), INTERVAL 35 DAY), DATE_ADD(NOW(), INTERVAL 37 DAY), 'published', 'All ages', 'Bratara de acces este obligatorie.', 'Refund partial doar in caz de anulare.', 'Festival urban in Timisoara - Eventor.ro', 'Bilete la festival urban in Timisoara.', 1, NOW()),
(5, 1, 6, 5, 5, 'Spectacol pentru copii in Brasov', 'spectacol-copii-brasov', 'Un spectacol interactiv pentru familie.', 'Povesti, muzica si personaje pentru copii.', '/public/assets/images/poster-kids.svg', DATE_ADD(NOW(), INTERVAL 20 DAY), DATE_ADD(NOW(), INTERVAL 20 DAY) + INTERVAL 90 MINUTE, 'published', '3+', 'Copiii trebuie insotiti de adult.', 'Refund disponibil cu minimum 3 zile inainte.', 'Spectacol pentru copii in Brasov - Eventor.ro', 'Bilete pentru spectacole de copii in Brasov.', 0, NOW()),
(6, 1, 7, 1, 6, 'Conferinta business in Bucuresti', 'conferinta-business-bucuresti', 'Networking si prezentari pentru antreprenori.', 'Conferinta de business cu sesiuni aplicate si invitati din industrie.', '/public/assets/images/poster-business.svg', DATE_ADD(NOW(), INTERVAL 28 DAY), DATE_ADD(NOW(), INTERVAL 28 DAY) + INTERVAL 8 HOUR, 'published', '18+', 'Acces cu badge emis pe baza biletului.', 'Refund disponibil cu minimum 10 zile inainte.', 'Conferinta business in Bucuresti - Eventor.ro', 'Bilete la conferinta business in Bucuresti.', 0, NOW())
ON DUPLICATE KEY UPDATE title = VALUES(title), status = VALUES(status), start_at = VALUES(start_at), end_at = VALUES(end_at);

INSERT INTO ticket_types
(event_id, name, description, price, currency, quantity_total, quantity_sold, quantity_reserved, min_per_order, max_per_order, sales_start_at, sales_end_at, status, sort_order)
SELECT e.id, t.name, t.description, t.price, 'RON', t.quantity_total, 0, 0, 1, 8, NOW(), DATE_SUB(e.start_at, INTERVAL 1 HOUR), 'active', t.sort_order
FROM events e
JOIN (
  SELECT 'Early Bird' AS name, 'Pret promotional pentru primele bilete.' AS description, 49.00 AS price, 100 AS quantity_total, 1 AS sort_order
  UNION ALL SELECT 'Standard', 'Bilet standard de acces.', 79.00, 250, 2
  UNION ALL SELECT 'VIP', 'Acces premium si zona dedicata.', 149.00, 50, 3
) t
WHERE NOT EXISTS (SELECT 1 FROM ticket_types tt WHERE tt.event_id = e.id AND tt.name = t.name);

INSERT INTO feature_flags (key_name, enabled, config_json) VALUES
('mock_payments', 1, JSON_OBJECT('mode', 'mock')),
('pwa', 1, JSON_OBJECT()),
('real_payment_providers', 0, JSON_ARRAY('netopia','stripe','revolut_pay','paypal'))
ON DUPLICATE KEY UPDATE enabled = VALUES(enabled), config_json = VALUES(config_json);
