CREATE DATABASE IF NOT EXISTS zaccshop_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE zaccshop_db;

CREATE TABLE IF NOT EXISTS users (
 id VARCHAR(80) PRIMARY KEY, name VARCHAR(160) NOT NULL, email VARCHAR(190) NOT NULL UNIQUE,
 mobile VARCHAR(30) DEFAULT '', password_hash VARCHAR(255) NOT NULL, role ENUM('user','admin') NOT NULL DEFAULT 'user',
 is_active TINYINT(1) NOT NULL DEFAULT 1, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS sessions (
 token CHAR(64) PRIMARY KEY, user_id VARCHAR(80) NOT NULL, expires_at DATETIME NOT NULL,
 INDEX(user_id), FOREIGN KEY(user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS categories (
 id VARCHAR(80) PRIMARY KEY, name VARCHAR(160) NOT NULL, slug VARCHAR(190) NOT NULL, icon VARCHAR(80) DEFAULT 'Folder',
 description TEXT, is_active TINYINT(1) DEFAULT 1, sort_order INT DEFAULT 1, created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS products (
 id VARCHAR(100) PRIMARY KEY, title VARCHAR(255) NOT NULL, slug VARCHAR(255) NOT NULL, category_id VARCHAR(80) NOT NULL,
 price BIGINT NOT NULL DEFAULT 0, description TEXT, features JSON, tags JSON, image TEXT, badge VARCHAR(120),
 in_stock TINYINT(1) DEFAULT 1, stock_count INT DEFAULT 999, is_featured TINYINT(1) DEFAULT 0, is_best_seller TINYINT(1) DEFAULT 0,
 platform VARCHAR(80) DEFAULT 'gaming_service', delivery_type VARCHAR(80) DEFAULT 'manual_config', delivery_note TEXT, regions JSON,
 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, INDEX(category_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS coupons (
 id VARCHAR(80) PRIMARY KEY, code VARCHAR(80) NOT NULL UNIQUE, discount_type ENUM('percent','fixed') NOT NULL DEFAULT 'percent',
 discount_value INT NOT NULL, min_purchase BIGINT DEFAULT 0, max_discount BIGINT NULL, max_uses INT NULL, used_count INT DEFAULT 0,
 is_active TINYINT(1) DEFAULT 1, start_date DATE NULL, end_date DATE NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS orders (
 id VARCHAR(100) PRIMARY KEY, order_number VARCHAR(80) NOT NULL UNIQUE, user_id VARCHAR(80) NULL,
 guest_name VARCHAR(160) NOT NULL, guest_mobile VARCHAR(30) NOT NULL, guest_email VARCHAR(190) DEFAULT '', notes TEXT,
 items JSON NOT NULL, subtotal BIGINT DEFAULT 0, discount BIGINT DEFAULT 0, total BIGINT DEFAULT 0,
 payment_method VARCHAR(50) DEFAULT 'zarinpal', payment_status VARCHAR(40) DEFAULT 'pending', order_status VARCHAR(40) DEFAULT 'pending',
 license_keys JSON, delivery_instructions TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
 INDEX(user_id), INDEX(order_status), INDEX(payment_status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS tutorials (
 id VARCHAR(100) PRIMARY KEY, title VARCHAR(255) NOT NULL, platform VARCHAR(30) NOT NULL, description TEXT,
 aparat_url TEXT, embed_url TEXT, thumbnail TEXT, active TINYINT(1) DEFAULT 1, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS settings (
 setting_key VARCHAR(100) PRIMARY KEY, setting_value TEXT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT IGNORE INTO users(id,name,email,mobile,password_hash,role,is_active) VALUES
('usr_admin','مدیر کل ZaccShop','zanagameyoutubbe@gmail.com','09120000000', '$2y$10$92Ywz7XwYp6fM8nR1l8L0uK0X4q0v6qQhW3oQpP8l0hZQY4Q5aP6m', 'admin',1),
('usr_admin2','ادمین سیستم','admin@zaccshop.ir','09121112233', '$2y$10$92Ywz7XwYp6fM8nR1l8L0uK0X4q0v6qQhW3oQpP8l0hZQY4Q5aP6m', 'admin',1);
-- The hash above is intentionally not relied on for production. Run setup.php once to create/reset the admin securely.

INSERT IGNORE INTO categories(id,name,slug,icon,description,is_active,sort_order) VALUES
('cat_gaming_service','سرویس WireGuard','wireguard','Zap','سرویس‌های اختصاصی WireGuard برای گیم و اینترنت پایدار',1,1);
INSERT IGNORE INTO products(id,title,slug,category_id,price,description,features,tags,image,badge,in_stock,stock_count,is_featured,is_best_seller,platform,delivery_type,delivery_note,regions) VALUES
('prod_wireguard_36gb_1m','WireGuard — ۳۶ گیگابایت / ۱ ماهه','wireguard-36gb-1month','cat_gaming_service',399000,'سرویس WireGuard اختصاصی برای یک کاربر، مناسب گیمینگ و اتصال پایدار. حجم ۳۶ گیگابایت با اعتبار ۱ ماهه.',JSON_ARRAY('یک کاربر','۳۶ گیگابایت ترافیک','اعتبار ۱ ماهه','پروتکل WireGuard','تحویل کانفیگ پس از تأیید سفارش','پشتیبانی تلگرام'),JSON_ARRAY('WireGuard','کاهش پینگ','۳۶ گیگ','۱ ماهه'),'/src/assets/images/wireguard_36gb_card.jpg','شروع از ۳۹۹ هزار تومان',1,999,1,1,'gaming_service','manual_config','پس از ثبت و تأیید سفارش، کانفیگ WireGuard برای یک کاربر از طریق ایمیل یا پشتیبانی تلگرام تحویل می‌شود.',JSON_ARRAY()),
('prod_wireguard_127gb_2m','WireGuard — ۱۲۷ گیگابایت / ۲ ماهه','wireguard-127gb-2month','cat_gaming_service',798000,'سرویس WireGuard اختصاصی برای یک کاربر، مناسب استفاده طولانی‌تر. حجم ۱۲۷ گیگابایت با اعتبار ۲ ماهه.',JSON_ARRAY('یک کاربر','۱۲۷ گیگابایت ترافیک','اعتبار ۲ ماهه','پروتکل WireGuard','تحویل کانفیگ پس از تأیید سفارش','پشتیبانی تلگرام'),JSON_ARRAY('WireGuard','کاهش پینگ','۱۲۷ گیگ','۲ ماهه'),'/src/assets/images/wireguard_127gb_card.jpg','به‌صرفه',1,999,1,0,'gaming_service','manual_config','پس از ثبت و تأیید سفارش، کانفیگ WireGuard برای یک کاربر از طریق ایمیل یا پشتیبانی تلگرام تحویل می‌شود.',JSON_ARRAY());
INSERT IGNORE INTO coupons(id,code,discount_type,discount_value,min_purchase,max_discount,max_uses,used_count,is_active,start_date,end_date) VALUES
('coup_zana','ZANA','percent',15,200000,150000,500,0,1,'2026-01-01','2027-12-31');
INSERT IGNORE INTO tutorials(id,title,platform,description,aparat_url,embed_url,thumbnail,active) VALUES
('wireguard-windows','آموزش اتصال WireGuard در ویندوز','Windows','آموزش قدم‌به‌قدم نصب و اتصال به سرویس WireGuard در کامپیوتر.','','','',1),
('wireguard-android','آموزش اتصال WireGuard در اندروید','Android','آموزش نصب برنامه WireGuard و وارد کردن کانفیگ در اندروید.','','','',1),
('wireguard-ios','آموزش اتصال WireGuard در iPhone / iOS','iOS','آموزش نصب WireGuard و اتصال در آیفون و آیپد.','','','',1);
INSERT IGNORE INTO settings(setting_key,setting_value) VALUES
('promo_enabled','1'),('promo_text','🔥 ویژه ZaccShop — تخفیف ویژه روی سرویس‌های WireGuard'),('promo_discount','5'),('support_telegram','@zana_lm'),('support_email',''),('about_text','ZaccShop؛ تمرکز ما فعلاً ارائه سرویس‌های WireGuard برای یک کاربر با تحویل کانفیگ پس از تأیید سفارش است.');
