-- ============================================================
-- پایگاه داده Zylon - نسخه نهایی یکپارچه
-- تاریخ: ۱۴۰۵/۰۲/۲۰
-- شامل: تمام جداول، ستون‌ها، ایندکس‌ها و دیتای اولیه
-- ============================================================

DROP DATABASE IF EXISTS zylon_db;
CREATE DATABASE zylon_db
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_unicode_ci;

USE zylon_db;

-- ============================================================
-- 1. جدول کاربران (Users)
-- ============================================================
CREATE TABLE IF NOT EXISTS users (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    full_name       VARCHAR(255)    NULL,
    username        VARCHAR(100)    NULL,
    email           VARCHAR(255)    NULL,
    phone           VARCHAR(20)     NULL,
    password_hash   VARCHAR(255)    NOT NULL,
    role            VARCHAR(50)     NOT NULL DEFAULT 'customer',
    profile_image   VARCHAR(500)    NULL,
    address         TEXT            NULL,
    wallet_balance  DECIMAL(15,2)   NOT NULL DEFAULT 0.00,
    suspended       TINYINT(1)      NOT NULL DEFAULT 0,
    created_at      DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,

    INDEX idx_users_username (username),
    INDEX idx_users_email (email),
    INDEX idx_users_phone (phone),
    INDEX idx_users_role (role)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 2. جدول محصولات (Products)
-- ============================================================
CREATE TABLE IF NOT EXISTS products (
    id                  INT AUTO_INCREMENT PRIMARY KEY,
    tracking_code       VARCHAR(50)     NOT NULL UNIQUE,
    sku                 VARCHAR(100)    NULL,
    title               VARCHAR(255)    NOT NULL,
    slug                VARCHAR(300)    NOT NULL UNIQUE,
    category            VARCHAR(100)    NULL,
    brand               VARCHAR(100)    NULL,
    price               DECIMAL(12,2)   NOT NULL DEFAULT 0.00,
    discount_percent    INT             NOT NULL DEFAULT 0,
    short_description   TEXT            NULL,
    long_description    LONGTEXT        NULL,
    image_url           VARCHAR(500)    NULL,
    video_path          VARCHAR(500)    NULL,
    stock               INT             NOT NULL DEFAULT 0,
    weight_kg           DECIMAL(8,3)    NULL,
    dimensions          VARCHAR(100)    NULL,
    tags                VARCHAR(500)    NULL,
    status              VARCHAR(50)     NOT NULL DEFAULT 'draft',
    deleted_at          DATETIME        NULL,
    created_at          DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,

    INDEX idx_products_tracking_code (tracking_code),
    INDEX idx_products_slug (slug),
    INDEX idx_products_category (category),
    INDEX idx_products_brand (brand),
    INDEX idx_products_status (status),
    INDEX idx_products_price (price)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 3. جدول سفارشات (Orders)
-- ============================================================
CREATE TABLE IF NOT EXISTS orders (
    id                  INT AUTO_INCREMENT PRIMARY KEY,
    order_tracking_id   VARCHAR(50)     NOT NULL UNIQUE,
    customer_name       VARCHAR(255)    NOT NULL,
    customer_phone      VARCHAR(20)     NULL,
    customer_address    TEXT            NULL,
    total_amount        DECIMAL(15,2)   NOT NULL DEFAULT 0.00,
    status              VARCHAR(50)     NOT NULL DEFAULT 'pending',
    payment_status      VARCHAR(50)     NOT NULL DEFAULT 'unpaid',
    payment_ref         VARCHAR(255)    NULL,
    gateway             VARCHAR(50)     NULL,
    tracking_code       VARCHAR(100)    NULL,
    shipping_amount     DECIMAL(15,2)   NOT NULL DEFAULT 0.00,
    discount_amount     DECIMAL(15,2)   NOT NULL DEFAULT 0.00,
    created_at          DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,

    INDEX idx_orders_order_tracking_id (order_tracking_id),
    INDEX idx_orders_status (status),
    INDEX idx_orders_payment_status (payment_status),
    INDEX idx_orders_customer_phone (customer_phone)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 4. جدول اقلام سفارش (Order Items)
-- ============================================================
CREATE TABLE IF NOT EXISTS order_items (
    id                      INT AUTO_INCREMENT PRIMARY KEY,
    order_id                INT             NOT NULL,
    product_id              INT             NULL,
    product_tracking_code   VARCHAR(50)     NULL,
    product_title           VARCHAR(255)    NOT NULL,
    quantity                INT             NOT NULL DEFAULT 1,
    price                   DECIMAL(12,2)   NOT NULL,

    INDEX idx_order_items_order_id (order_id),
    INDEX idx_order_items_product_id (product_id),
    INDEX idx_order_items_product_tracking_code (product_tracking_code),

    CONSTRAINT fk_order_items_order
        FOREIGN KEY (order_id) REFERENCES orders(id)
        ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 5. جدول کارت‌های بانکی (Bank Cards)
-- ============================================================
CREATE TABLE IF NOT EXISTS bank_cards (
    id                  INT AUTO_INCREMENT PRIMARY KEY,
    bank_name           VARCHAR(100)    NOT NULL,
    card_number_masked  VARCHAR(30)     NOT NULL,
    card_holder         VARCHAR(255)    NOT NULL,
    iban                VARCHAR(50)     NULL,
    sort_order          INT             NOT NULL DEFAULT 0,
    is_active           TINYINT(1)      NOT NULL DEFAULT 1,
    created_at          DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at          DATETIME        NULL ON UPDATE CURRENT_TIMESTAMP,

    INDEX idx_bank_cards_active (is_active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 6. جدول خبرنامه (Newsletters)
-- ============================================================
CREATE TABLE IF NOT EXISTS newsletters (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    email       VARCHAR(255)    NOT NULL UNIQUE,
    created_at  DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 7. جدول پست‌های وبلاگ (Blog Posts)
-- ============================================================
CREATE TABLE IF NOT EXISTS blog_posts (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    title       VARCHAR(300)    NOT NULL,
    slug        VARCHAR(350)    NOT NULL UNIQUE,
    summary     TEXT            NULL,
    body        LONGTEXT        NULL,
    cover_image VARCHAR(500)    NULL,
    status      VARCHAR(50)     NOT NULL DEFAULT 'draft',
    created_at  DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,

    INDEX idx_blog_posts_slug (slug),
    INDEX idx_blog_posts_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 8. جدول ویدیوهای آموزشی (Tutorial Videos)
-- ============================================================
CREATE TABLE IF NOT EXISTS tutorial_videos (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    title           VARCHAR(300)    NOT NULL,
    description     TEXT            NULL,
    video_url       VARCHAR(500)    NOT NULL,
    thumbnail_url   VARCHAR(500)    NULL,
    status          VARCHAR(50)     NOT NULL DEFAULT 'draft',
    created_at      DATETIME        NOT NULL DEFAULT CURRENT_TIMESTAMP,

    INDEX idx_tutorial_videos_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- 9. جدول تنظیمات سایت (Site Settings)
-- ============================================================
CREATE TABLE IF NOT EXISTS site_settings (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    setting_key VARCHAR(100)    NOT NULL UNIQUE,
    setting_value TEXT          NULL,
    updated_at  DATETIME        NULL ON UPDATE CURRENT_TIMESTAMP,

    INDEX idx_site_settings_key (setting_key)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- دیتای اولیه (Seed Data)
-- ============================================================

-- تنظیمات پیش‌فرض سایت
INSERT INTO site_settings (setting_key, setting_value) VALUES
('site_title', 'فروشگاه زایلون - تجهیزات صنعتی'),
('site_description', 'فروشگاه اینترنتی تجهیزات صنعتی و ماشین‌آلات'),
('site_logo', '/assets/images/logo.png'),
('site_favicon', '/assets/images/favicon.ico'),
('contact_email', 'info@zylon.ir'),
('contact_phone', '۰۲۱-۱۲۳۴۵۶۷۸'),
('contact_address', 'تهران، خیابان ...'),
('social_instagram', 'https://instagram.com/zylon'),
('social_telegram', 'https://t.me/zylon'),
('social_whatsapp', 'https://wa.me/989123456789'),
-- ==== تنظیمات سئو (جدید - رفع خطای seo_canonical_base) ====
('seo_canonical_base', 'http://localhost/zylon/'),
('seo_default_title', 'زایلون صنعت | فروشگاه'),
('seo_default_description', 'خرید آنلاین با پشتیبانی حرفه‌ای، پیگیری سفارش و پرداخت امن.'),
('seo_default_keywords', 'زایلون, صنعت, فروشگاه, تجهیزات صنعتی, جوجه کشی, دستگاه آجیل'),
('seo_og_image', '/assets/images/og-image.jpg');

-- کاربر ادمین پیش‌فرض (password: admin123)
INSERT INTO users (full_name, username, email, phone, password_hash, role, wallet_balance) VALUES
('مدیر سیستم', 'hoseinpoor22', 'admin@zylon.ir', '09123456789', '$2y$10$dummy_hash_replace_with_real', 'hoseinpoor22', 0.00);

-- محصولات نمونه
INSERT INTO products (tracking_code, sku, title, slug, category, brand, price, discount_percent, short_description, long_description, image_url, video_path, stock, weight_kg, dimensions, tags, status) VALUES
('TRK-001', 'SKU-001', 'دستگاه جوجه کشی اتوماتیک ۱۴۴ تایی', 'egg-incubator-144', 'تجهیزات دام و طیور', 'زایلون', 8500000, 10, 'دستگاه جوجه کشی اتوماتیک با ظرفیت ۱۴۴ تخم مرغ، مجهز به سیستم کنترل هوشمند دما و رطوبت', 'توضیحات کامل دستگاه جوجه کشی...', '/uploads/products/incubator-144.jpg', '/uploads/videos/incubator-demo.mp4', 15, 12.500, '۵۰×۵۰×۶۰ سانتی‌متر', 'جوجه کشی,اتوماتیک,طیور', 'published'),
('TRK-002', 'SKU-002', 'دستگاه دان خردکن صنعتی ۳ اسب', 'feed-crusher-3hp', 'تجهیزات دام و طیور', 'زایلون', 12500000, 5, 'دستگاه دان خردکن با موتور ۳ اسب بخار، مناسب برای خرد کردن ذرت، گندم و جو', 'توضیحات کامل دان خردکن...', '/uploads/products/feed-crusher.jpg', NULL, 8, 45.000, '۸۰×۶۰×۱۲۰ سانتی‌متر', 'دان خردکن,صنعتی,دام', 'published'),
('TRK-003', 'SKU-003', 'دستگاه پخت تخمه آفتابگردان', 'sunflower-seed-roaster', 'تجهیزات آجیل و خشکبار', 'زایلون', 28000000, 0, 'دستگاه پخت (بو دادن) تخمه آفتابگردان با ظرفیت ۵۰ کیلوگرم در ساعت', 'توضیحات کامل دستگاه پخت تخمه...', '/uploads/products/seed-roaster.jpg', NULL, 3, 85.000, '۱۲۰×۱۰۰×۱۵۰ سانتی‌متر', 'پخت تخمه,آفتابگردان,آجیل', 'published'),
('TRK-004', 'SKU-004', 'ستر و هچر جوجه کشی ۳۰۰۰ تایی', 'setter-hatcher-3000', 'تجهیزات دام و طیور', 'زایلون', 65000000, 8, 'ستر و هچر صنعتی با ظرفیت ۳۰۰۰ تخم مرغ، مخصوص مرغداری‌های بزرگ', 'توضیحات کامل ستر و هچر...', '/uploads/products/setter-hatcher.jpg', '/uploads/videos/setter-hatcher-demo.mp4', 2, 250.000, '۲۰۰×۱۸۰×۲۲۰ سانتی‌متر', 'ستر,هچر,جوجه کشی,صنعتی', 'published');

-- سفارش نمونه
INSERT INTO orders (order_tracking_id, customer_name, customer_phone, customer_address, total_amount, status, payment_status, shipping_amount, discount_amount) VALUES
('ORD-14050220-0001', 'آرمین دهقان', '۰۹۱۲۳۴۵۶۷۸۹', 'تهران، میدان آزادی، خیابان ...', 7650000.00, 'delivered', 'paid', 250000.00, 850000.00);

INSERT INTO order_items (order_id, product_id, product_tracking_code, product_title, quantity, price) VALUES
(1, 1, 'TRK-001', 'دستگاه جوجه کشی اتوماتیک ۱۴۴ تایی', 1, 8500000.00);
