-- نظام إدارة الفروع - مالتي برانش

-- 1. جدول الفروع/المختبرات
CREATE TABLE branches (
    id INT AUTO_INCREMENT PRIMARY KEY,
    branch_code VARCHAR(50) NOT NULL UNIQUE,
    name VARCHAR(150) NOT NULL,
    address VARCHAR(255) NULL,
    phone VARCHAR(30) NULL,
    email VARCHAR(100) NULL,
    is_active TINYINT(1) NOT NULL DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO branches (branch_code, name) SELECT 'MAIN', 'الفرع الرئيسي' WHERE NOT EXISTS (SELECT 1 FROM branches LIMIT 1);

-- 2. إضافة branch_id للطلبات
ALTER TABLE lab_orders ADD COLUMN branch_id INT NULL AFTER branch_name;
ALTER TABLE lab_orders ADD CONSTRAINT fk_orders_branch FOREIGN KEY (branch_id) REFERENCES branches(id);
ALTER TABLE lab_orders ADD INDEX idx_orders_branch (branch_id);

-- 3. إضافة branch_id للمستخدمين (NULL = مدير يراه كل الفروع)
ALTER TABLE users ADD COLUMN branch_id INT NULL AFTER role_id;
ALTER TABLE users ADD CONSTRAINT fk_users_branch FOREIGN KEY (branch_id) REFERENCES branches(id);

-- 4. المخزون يبقى مشتركاً (يمكن توسيعه لاحقاً لكل فرع)

-- 5. جدول ربط المستخدمين بالفروع (للمستخدمين الذين يعملون في أكثر من فرع)
CREATE TABLE IF NOT EXISTS user_branches (
    user_id INT NOT NULL,
    branch_id INT NOT NULL,
    PRIMARY KEY (user_id, branch_id),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (branch_id) REFERENCES branches(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
