CREATE EXTENSION IF NOT EXISTS pgcrypto;
-- Locations Initial Data
INSERT INTO branch_locations (key, value)
VALUES ('addis_ababa', 'Addis Ababa'),
    ('dire_dawa', 'Dire Dawa'),
    ('mekelle', 'Mekelle'),
    ('adama', 'Adama'),
    ('awassa', 'Awassa'),
    ('bahir_dar', 'Bahir Dar'),
    ('gonder', 'Gonder'),
    ('dessie', 'Dessie'),
    ('jimma', 'Jimma'),
    ('jijiga', 'Jijiga'),
    ('shashamane', 'Shashamane'),
    ('bishoftu', 'Bishoftu'),
    ('sodo', 'Sodo'),
    ('arba_minch', 'Arba Minch'),
    ('hosaena', 'Hosaena'),
    ('harar', 'Harar'),
    ('dilla', 'Dilla'),
    ('nekemte', 'Nekemte'),
    ('debre_birhan', 'Debre Birhan'),
    ('asella', 'Asella'),
    ('debre_markos', 'Debre Markos'),
    ('kombolcha', 'Kombolcha'),
    ('debre_tabor', 'Debre Tabor'),
    ('adigrat', 'Adigrat'),
    ('areka', 'Areka'),
    ('weldiya', 'Weldiya'),
    ('sebeta', 'Sebeta'),
    ('burayu', 'Burayu'),
    ('shire', 'Shire'),
    ('ambo', 'Ambo'),
    ('arsi_negele', 'Arsi Negele'),
    ('aksum', 'Aksum'),
    ('gambela', 'Gambela'),
    ('bale_robe', 'Bale Robe'),
    ('butajira', 'Butajira'),
    ('batu', 'Batu'),
    ('boditi', 'Boditi'),
    ('adwa', 'Adwa'),
    ('yirgalem', 'Yirgalem'),
    ('waliso', 'Waliso'),
    ('welkite', 'Welkite'),
    ('gode', 'Gode'),
    ('meki', 'Meki'),
    ('negele_borana', 'Negele Borana'),
    ('alaba_kulito', 'Alaba Kulito'),
    ('alamata,', 'Alamata,'),
    ('chiro', 'Chiro'),
    ('tepi', 'Tepi'),
    ('durame', 'Durame'),
    ('goba', 'Goba'),
    ('assosa', 'Assosa'),
    ('gimbi', 'Gimbi'),
    ('wukro', 'Wukro'),
    ('haramaya', 'Haramaya'),
    ('mizan_teferi', 'Mizan Teferi'),
    ('sawla', 'Sawla'),
    ('mojo', 'Mojo'),
    ('dembi_dolo', 'Dembi Dolo'),
    ('aleta_wendo', 'Aleta Wendo'),
    ('metu', 'Metu'),
    ('mota', 'Mota'),
    ('fiche', 'Fiche'),
    ('finote_selam', 'Finote Selam'),
    ('bule_hora_town', 'Bule Hora Town'),
    ('bonga', 'Bonga'),
    ('kobo', 'Kobo'),
    ('jinka', 'Jinka'),
    ('dangila', 'Dangila'),
    ('degehabur', 'Degehabur'),
    ('bedessa', 'Bedessa'),
    ('agaro', 'Agaro') ON CONFLICT (key) DO
UPDATE
SET value = EXCLUDED.value;
-- Settings Initial Data
INSERT INTO global_settings (key, value)
VALUES ('sms_provider', 'afro_message'),
    ('max_number_of_outcomes', '30'),
    ('bet_amount_limit', '10000000'),
    ('daily_ticket_limit', '50'),
    ('total_winnings_limit', '1000000'),
    ('amount_for_bet_referral', '1000000'),
    ('cashback_amount_cap', '1000'),
    ('default_winning_limit', '5000000'),
    ('referral_reward_amount', '10000'),
    ('cashback_percentage', '0.2'),
    ('default_max_referrals', '15'),
    ('minimum_bet_amount', '100'),
    ('bet_duplicate_limit', '5'),
    ('send_email_on_bet_finish', 'true'),
    ('send_sms_on_bet_finish', 'false'),
    ('welcome_bonus_active', 'false'),
    ('welcome_bonus_multiplier', '1.5'),
    ('welcome_bonus_cap', '100000'),
    ('welcome_bonus_count', '3'),
    ('welcome_bonus_expiry', '10') ON CONFLICT (key) DO NOTHING;
-- Users
INSERT INTO users (
        id,
        first_name,
        last_name,
        email,
        phone_number,
        password,
        role,
        email_verified,
        phone_verified,
        created_at,
        updated_at,
        suspended,
        company_id
    )
VALUES (
        1,
        'John',
        'Doe',
        'john.doe@example.com',
        NULL,
        crypt('password@123', gen_salt('bf'))::bytea,
        'customer',
        TRUE,
        FALSE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP,
        FALSE,
        1
    ),
    (
        2,
        'Test',
        'Admin',
        'test.admin@gmail.com',
        '0988554466',
        crypt('password@123', gen_salt('bf'))::bytea,
        'admin',
        TRUE,
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP,
        FALSE,
        1
    ),
    (
        3,
        'Samuel',
        'Tariku',
        'cybersamt@gmail.com',
        '0911111111',
        crypt('password@123', gen_salt('bf'))::bytea,
        'super_admin',
        TRUE,
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP,
        FALSE,
        NULL
    ),
    (
        4,
        'Kirubel',
        'Kibru',
        'kirubel.jkl679@gmail.com',
        '0911554486',
        crypt('password@123', gen_salt('bf'))::bytea,
        'super_admin',
        TRUE,
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP,
        FALSE,
        NULL
    ) ON CONFLICT (id) DO
UPDATE
SET first_name = EXCLUDED.first_name,
    last_name = EXCLUDED.last_name,
    email = EXCLUDED.email,
    phone_number = EXCLUDED.phone_number,
    password = EXCLUDED.password,
    role = EXCLUDED.role,
    email_verified = EXCLUDED.email_verified,
    phone_verified = EXCLUDED.phone_verified,
    created_at = EXCLUDED.created_at,
    updated_at = EXCLUDED.updated_at,
    suspended = EXCLUDED.suspended,
    company_id = EXCLUDED.company_id;
-- Supported Operations
INSERT INTO supported_operations (id, name, description)
VALUES (1, 'SportBook', 'Sportbook operations'),
    (2, 'Virtual', 'Virtual operations') ON CONFLICT (id) DO
UPDATE
SET name = EXCLUDED.name,
    description = EXCLUDED.description;
-- Wallets
INSERT INTO wallets (
        id,
        balance,
        is_withdraw,
        is_bettable,
        is_transferable,
        user_id,
        type,
        currency,
        is_active,
        created_at,
        updated_at
    )
VALUES (
        1,
        10000,
        TRUE,
        TRUE,
        TRUE,
        1,
        'regular_wallet',
        'ETB',
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP
    ),
    (
        2,
        5000,
        FALSE,
        TRUE,
        TRUE,
        1,
        'static_wallet',
        'ETB',
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP
    ),
    (
        3,
        100000000,
        TRUE,
        TRUE,
        TRUE,
        2,
        'company_wallet',
        'ETB',
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP
    ),
    (
        4,
        50000000,
        TRUE,
        TRUE,
        TRUE,
        2,
        'branch_wallet',
        'ETB',
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP
    ) ON CONFLICT (id) DO
UPDATE
SET balance = EXCLUDED.balance,
    is_withdraw = EXCLUDED.is_withdraw,
    is_bettable = EXCLUDED.is_bettable,
    is_transferable = EXCLUDED.is_transferable,
    user_id = EXCLUDED.user_id,
    type = EXCLUDED.type,
    currency = EXCLUDED.currency,
    is_active = EXCLUDED.is_active,
    created_at = EXCLUDED.created_at,
    updated_at = EXCLUDED.updated_at;
-- Customer Wallets
INSERT INTO customer_wallets (
        id,
        customer_id,
        regular_wallet_id,
        static_wallet_id
    )
VALUES (1, 1, 1, 2) ON CONFLICT (id) DO
UPDATE
SET customer_id = EXCLUDED.customer_id,
    regular_wallet_id = EXCLUDED.regular_wallet_id,
    static_wallet_id = EXCLUDED.static_wallet_id;
-- Company
INSERT INTO companies (
        id,
        name,
        slug,
        admin_id,
        wallet_id,
        deducted_percentage,
        is_active,
        created_at,
        updated_at
    )
VALUES (
        1,
        'FortuneBets',
        'fortunebets',
        2,
        3,
        0.10,
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP
    ) ON CONFLICT (id) DO
UPDATE
SET name = EXCLUDED.name,
    slug = EXCLUDED.slug,
    admin_id = EXCLUDED.admin_id,
    wallet_id = EXCLUDED.wallet_id,
    deducted_percentage = EXCLUDED.deducted_percentage,
    is_active = EXCLUDED.is_active,
    created_at = EXCLUDED.created_at,
    updated_at = EXCLUDED.updated_at;
-- Branch
INSERT INTO branches (
        id,
        name,
        location,
        wallet_id,
        branch_manager_id,
        company_id,
        is_self_owned,
        profit_percent,
        is_active,
        created_at,
        updated_at
    )
VALUES (
        1,
        'Test Branch',
        'addis_ababa',
        4,
        2,
        1,
        TRUE,
        0.10,
        TRUE,
        CURRENT_TIMESTAMP,
        CURRENT_TIMESTAMP
    ) ON CONFLICT (id) DO
UPDATE
SET name = EXCLUDED.name,
    location = EXCLUDED.location,
    wallet_id = EXCLUDED.wallet_id,
    branch_manager_id = EXCLUDED.branch_manager_id,
    company_id = EXCLUDED.company_id,
    is_self_owned = EXCLUDED.is_self_owned,
    profit_percent = EXCLUDED.profit_percent,
    is_active = EXCLUDED.is_active,
    created_at = EXCLUDED.created_at,
    updated_at = EXCLUDED.updated_at;
-- Bonus
INSERT INTO user_bonuses (
        id,
        name,
        description,
        type,
        user_id,
        reward_amount,
        expires_at
    )
VALUES (
        1,
        'Welcome Bonus',
        'Awarded for deposit number (1 / 3)',
        'welcome_bonus',
        1,
        1000,
        now() + INTERVAL '1 day'
    ) ON CONFLICT (id) DO
UPDATE
SET name = EXCLUDED.name,
    description = EXCLUDED.description,
    type = EXCLUDED.type,
    user_id = EXCLUDED.user_id,
    reward_amount = EXCLUDED.reward_amount,
    expires_at = EXCLUDED.expires_at;