-- Create 'addresses' table
CREATE TABLE addresses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    country VARCHAR(100),
    state VARCHAR(100),
    city VARCHAR(100),
    postal_code VARCHAR(20),
    address VARCHAR(255)
);

INSERT INTO addresses (id, country, state, city, postal_code, address) VALUES
(1, 'iraq', 'Baghdad', 'Al-Mansour', '10013', 'Al-Mansour'),
(3, 'iraq', 'Baghdad', 'Karrada', '10069', 'Al karada'),
(10, 'iraq', 'Baghdad', 'Al-Mansour', '10013', 'Abo Jaffer');

-- Create 'roles' table
CREATE TABLE roles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    role_name VARCHAR(50) NOT NULL UNIQUE
);

-- Create 'statuses' table
CREATE TABLE statuses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    status_name VARCHAR(50) NOT NULL UNIQUE
);

-- Populate 'roles' table
INSERT INTO roles (role_name) VALUES ('system'), ('admin'), ('employee'), ('client');

-- Populate 'statuses' table
INSERT INTO statuses (status_name) VALUES ('active'), ('inactive'), ('rented'), ('archive'), ('deleted');

-- Create 'branches' table
CREATE TABLE branches (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    address_id INT,
    status_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (address_id) REFERENCES addresses(id) ON DELETE SET NULL,
    FOREIGN KEY (status_id) REFERENCES statuses(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

INSERT INTO branches (id, name, address_id, status_id, created_by, created_at, updated_at) VALUES
(1, 'Abo Jafer', 1, 1, NULL, '2024-11-06 21:13:30', '2024-11-06 21:13:30'),
(3, 'Al Karrada', 3, 1, 1, '2024-11-06 23:27:07', '2024-11-06 23:27:07');

-- Create 'office_types' table
CREATE TABLE office_types (
    id INT AUTO_INCREMENT PRIMARY KEY,
    type_name VARCHAR(100) NOT NULL UNIQUE
);

-- Populate 'office_types' table
INSERT INTO office_types (type_name) VALUES ('private'), ('standard'), ('shared'), ('virtual');

-- Create 'offices' table
CREATE TABLE offices (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    office_type_id INT,
    status_id INT NOT NULL,
    branch_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (office_type_id) REFERENCES office_types(id),
    FOREIGN KEY (status_id) REFERENCES statuses(id),
    FOREIGN KEY (branch_id) REFERENCES branches(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

INSERT INTO offices (id, name, office_type_id, status_id, branch_id, created_by, created_at, updated_at) VALUES
(2, 'A1', 1, 1, 1, 1, '2024-11-07 10:28:54', '2024-11-07 10:28:54'),
(3, 'A2', 2, 1, 1, 1, '2024-11-07 13:09:30', '2024-11-07 13:09:30'),
(5, 'A4', 2, 1, 1, 1, '2024-11-07 13:10:09', '2024-11-07 13:10:09'),
(6, 'A5', 2, 1, 1, 1, '2024-11-07 13:10:25', '2024-11-07 13:10:25');

-- Create 'employees' table
CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    gender VARCHAR(50),
    birth_date DATE,
    profile_image_url VARCHAR(255),
    degree VARCHAR(255),
    branch_id INT,
    position VARCHAR(255),
    status_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (branch_id) REFERENCES branches(id),
    FOREIGN KEY (status_id) REFERENCES statuses(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

INSERT INTO employees (id, user_id, gender, birth_date, profile_image_url, degree, branch_id, position, status_id, created_by, created_at, updated_at) VALUES
(7, 8, 'male', '1992-07-17', NULL, 'high_school', 1, 'manager', 1, 1, '2024-11-07 09:20:14', '2024-11-07 09:20:14');

-- Create 'user_references' table
CREATE TABLE user_references (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    mobile VARCHAR(20),
    address_id INT,
    relation VARCHAR(100),
    user_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (address_id) REFERENCES addresses(id) ON DELETE SET NULL,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

-- Create 'document_types' table
CREATE TABLE document_types (
    id INT AUTO_INCREMENT PRIMARY KEY,
    type_name VARCHAR(100) NOT NULL UNIQUE
);

-- Populate 'document_types' table
INSERT INTO document_types (type_name) VALUES ('certificate'), ('identification'), ('contract');

-- Create 'documents' table
CREATE TABLE documents (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    document_url VARCHAR(255) NOT NULL,
    mime_type VARCHAR(50),
    document_type_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (document_type_id) REFERENCES document_types(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

-- Create 'clients' table
CREATE TABLE clients (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    gender VARCHAR(50),
    birth_date DATE,
    work_phone VARCHAR(20),
    status_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (status_id) REFERENCES statuses(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

-- Create 'business_types' table
CREATE TABLE business_types (
    id INT AUTO_INCREMENT PRIMARY KEY,
    type_name VARCHAR(100) NOT NULL UNIQUE
);

-- Populate 'business_types' table
INSERT INTO business_types (type_name) VALUES ('office'), ('company');


-- Create 'contract_types' table
CREATE TABLE contract_types (
    id INT AUTO_INCREMENT PRIMARY KEY,
    type_name VARCHAR(255) NOT NULL,
    title VARCHAR(255),
    authorized_user_id INT,
    authorized_use_times INT,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (authorized_user_id) REFERENCES users(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

INSERT INTO contract_types (id, type_name, title, authorized_user_id, authorized_use_times, created_by, created_at, updated_at) VALUES
(4, 'standard', 'عقـــد أيــــجار', 1, 99999, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05');

-- Create contract_articles table
CREATE TABLE contract_articles (
    id INT AUTO_INCREMENT PRIMARY KEY,
    contract_type_id INT NOT NULL,
    article_number INT NOT NULL,
    article_name VARCHAR(255) NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (contract_type_id) REFERENCES contract_types(id)
);

INSERT INTO contract_articles (id, contract_type_id, article_number, article_name, created_by, created_at, updated_at) VALUES
(3, 4, 1, 'مضمون العقد ', 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(4, 4, 2, 'مدة العقد', 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(5, 4, 3, 'بدل الايجار', 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(6, 4, 4, 'التزامات الطرف الاول', 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(7, 4, 5, 'التزامات الطرف الثاني', 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(8, 4, 6, 'الاحكام العامة', 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(9, 4, 7, 'حالات انتهاء العقد', 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05');

-- Create contract_sections table
CREATE TABLE contract_sections (
    id INT AUTO_INCREMENT PRIMARY KEY,
    article_id INT NOT NULL,
    section_number INT NOT NULL,
    section_title VARCHAR(255),
    section_content TEXT,
    is_editable BOOLEAN DEFAULT TRUE,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (article_id) REFERENCES contract_articles(id)
);

INSERT INTO contract_sections (id, article_id, section_number, section_title, section_content, is_editable, created_by, created_at, updated_at) VALUES
(6, 3, 1, '', 'اتفق الطرفان على قيام (الطرف الاول) بتأجير المكتب رقم ()مجمع بزنس افنيو الواقع في منطقة المنصور ) م ( 615 شارع 17 السبعاوي عمارة أمازون\"الطابق الاول \"الى الطرف الثاني ليمارس نشاطه التجاري فيه والذي ينحصر ب ()حصرآ  .', 1, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(7, 4, 1, '', 'اتفق الطرفان على ان تكون مدة نفاذ العقد سنة ميلادية كاملة يتم البدء باحتسابها اعتباراً من تاريخ توقيع العقد ويكون قابلاً للتجديد بعد انتهاء المدة العقدية بالتراضي واتفاق الطرفين .', 1, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(8, 5, 1, '', 'اتفق الطرفان على أن يكون بدل الإيجار الشهري مبلغاً قدره عراقي ( دع). يلتزم المستأجر تسديد هذا المبلغ في غضون خمسة أيام من بداية كل شهر. في حال تأخر المستأجر عن الدفع، تُفرض غرامة مالية بنسبة 10% من بدل الإيجار الشهري. وإذا استمر التأخير بعد فرض الغرامة، يتم فسخ العقد تلقائيًا، ويظل المستأجر ملزماً بسداد جميع المبالغ المستحقة للمؤجر.', 1, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(9, 5, 2, '', 'بعد انتهاء مدة العقد الأولى كما هو موضح في البند (ثانياً/مدة العقد)، يُضاف إلى بدل الإيجار الشهري نسبة 10% من قيمته.', 1, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(10, 6, 1, '', 'يلتزم الطرف الاول بتمكين الطرف الثاني من الانتفاع بالمكتب المستأجر وفق النشاط المتفق عليه .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(11, 6, 2, '', 'يلتزم الطرف الاول بتوفير خدمة الانترنت للطرف الثاني , يستثنى منها حالات الانقطاع القاهرة والغير متعمدة والاعطال الفنية .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(12, 6, 3, '', 'يلتزم الطرف الاول بتجهيز المكتب المستأجر بالاثاث الاساسي للعمل وبشكل مجاني وتشمل (ميز مكتبي عدد 1 مع كرسي متحرك عدد 1مع كرسي مداولة عدد2 مع طاولة عدد 1 ) . أذا طلب الطرف الثاني إضافة أي أثاث آخر غير ما هو محدد أعلاه، يتم إضافة مبلغ إضافي يتم الاتفاق عليه بين الطرفين . ', 1, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(13, 6, 4, '', 'يلتزم الطرف الاول بالسماح للطرف الثاني باضافة اي قطع اثاث يراها ضرورية لمكتبه المستأجر وحسب الحاجة وازالة اي قطع فائضة عن حاجته بعد استحصال موافقة الطرف الاول المسبقة وعلمه .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(14, 6, 5, '', 'يلتزم الطرف الاول بتوفير خدمة الحراسة والحماية والامان للمشروع داخل مفاصل المشروع بشكل عام (ولايشمل ذلك داخل المكتب المستأجر ) .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(15, 6, 6, '', 'يلتزم الطرف الاول بتوفير كاميرات مراقبة عالية الجودة لمفاصل المشروع وليس داخل المكاتب ويكون التسجيل لمدة 15 يوم فقط ', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(16, 6, 7, '', 'يلتزم الطرف الاول بتوفير مفتاح احتياط للمكتب المستأجر تودع لديه لمعالجة الامور الطارئة ولايحق له او لموظفيه الدخول الى المكتب الا باذن صريح من جانب الطرف الثاني وفي الحالات الاضطرارية او لغرض التنظيف في حال الاشتراك بباقة الخدمات .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(17, 6, 8, '', 'يلتزم الطرف الاول بتوفير مكان استراحة واسع للطرف الثاني لغرض الراحة والاستجمام . ', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(18, 6, 9, '', 'يلتزم الطرف الاول بالسماح للطرف الثاني الاستفادة من قاعة الاجتماعات التي تسع ( 10 أشخاص ) بشكل مجاني لعدد ساعات (10 ساعة مجانية ضمن مبلغ الايجار ) في الشهر ويتوجب على الطرف الثاني الحجز والتبليغ المسبق .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(19, 6, 10, '', 'يلتزم الطرف الاول بتوفير شركة اعلانات وتسويق للطرف الثاني باسعار مخفضة حسب رغبة الطرف الثاني .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(20, 7, 1, '', 'يلتزم الطرف الثاني بايداع تأمينات مالية وقدرها (د.ع) كتابة (الف دينار عراقي.) وتسترجع التأمينات بطلب رسمي من المستأجر قبل 30 يوم من انتهاء مدة العقد. وفي حال خروج المستأجر قبل انتهاء المدة المذكورة بالعقد فيسقط حق التأمينات ولا يحق له المطالبة بها', 1, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(21, 7, 2, '', 'يحق للطرف الاول فسخ العقد مع الطرف الثاني في حال مخالفة القانون أو النظام العام والأداب مع التبليغ بمدة معينة لاتقل عن ثلاثة ايام عن ترك المكان .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(22, 7, 3, '', 'لايحق للطرف الثاني التراجع بعد توقيع العقد,وفي حال اراد التراجع وفسخ العقد فلا يحق له استرجاع المبالغ المدفوعة سواء عربون او جزء من الايجار من الطرف الاول. ', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(23, 7, 4, '', 'في حال رغبة الطرف الثاني في فسخ العقد واخلاء المكتب يجب عليه ابلاغ الطرف الاول بمدة لاتقل عن 30 يوم من تاريخ الاخلاء وبعد اشغاله للمكتب خلال الفترة المحددة اعلاه ودفع كافة المستحقات التي في ذمته . ', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(24, 7, 5, '', 'في حال رغبة الطرف الثاني التمتع بخدمة التنظيف داخل المكتب حصرآ يتم دفع مستحقات مالية وقيمتها (30,000 دينار عراقي ) شهرياً .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(25, 7, 6, '', 'يحق للطرف الاول فسخ العقد واخلاء المكتب في حال اثبات ضرر او تكرار شكوى من المستهلكين بسبب رداءة منتجاته وبضاعته او سوء سمعتة شركته او شكوى متكررة ومقنعة من زملاءة اصحاب المكاتب او لأسباب اخرى مقنعة من جهة نظر الطرف الاول مع التبليغ بفترة لاتقل عن 3 ثلاثة أيام .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(26, 7, 7, '', 'الطرف الثاني المسؤول بشكل كامل عن مكتبه وسلامته الشخصية وعن خصوصيته وسلامة ممتلكاته واغراضه الخاصة (داخل المكتب).', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(27, 7, 8, '', 'يجب على الطرف الثاني تعويض الطرف الاول في حال اضراره للاثاث وللزجاج وللمشروع بشكل عام عن اي ضرر او تلف يحدث او ضياع او نقص في الموجودات وفي حال امتناعه يتم فسخ العقد معه مباشرة.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(28, 7, 9, '', 'يتعهد الطرف الثاني بتحمل اي مسائلة تخص منتجاته اوشركته من اي شكوى او ضرر او تبعات اخرى والطرف الاول غير مسؤول عن ذلك .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(29, 7, 10, '', 'يتحمل الطرف الثاني اي مسائلة قانونية تخص الشركة واسمها واسم المكتب ونشاطه وتسجيل الشركة والاوراق الثبوتية المتعلقة بذلك واوراقه الثبوتية الشخصية امام الجهات الحكومية والاهلية.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(30, 7, 11, '', 'الالتزام بالهدوء قدر الإمكان ومراعاة المساحة المخصصة له داخل المكتب والمساحة المشتركة للعمل والمحافظة على نظافة المكان وتكراره يتم فسخ العقد .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(31, 7, 12, '', 'يمنع منعاً باتاً طهي الطعام او صنع المشروبات داخل المكتب أو وضع براد ماء أو غلاية, لكن يسمح بالاكل والشرب داخل المكتب بشكل طبيعي جداً للحفاظ على السلامة العامة .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(32, 7, 13, '', 'يلتزم الطرف الثاني في النشاط المذكور في هذا العقد وفي حال ثبوت تغيير النشاط وعدم تبليغ الأدارة فيتم فوراً فسخ العقد معه.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(33, 7, 14, '', 'يلتزم الطرف الثاني، في حال رغبته في الخروج وإخلاء المكتب، بتوقيع فورمة فسخ العقد وبراءة ذمة. كما يلتزم الطرف الثاني بتسليم المكتب في حالة جيدة وفقاً لما هو متفق عليه في العقد .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(34, 7, 15, '', 'يلتزم الطرف الثاني بالحفاظ على سرية جميع المعلومات المتعلقة بالعقد المبرم بين الطرفين. في حالة عدم الالتزام بهذا البند ، يحق للطرف الأول فسخ العقد بشكل مباشر دون الحاجة إلى إشعار مسبق .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(35, 7, 16, '', 'يتحمل الطرف الثاني المسؤولية كاملة عن أي إزعاجات أو تصرفات غير لائقة تصدر عن زبائنه. يكون الطرف الثاني مسؤولاً عن معالجة أي مشكلة تنشأ نتيجة لتصرفات زبائنه، ويجب عليه اتخاذ التدابير اللازمة لضمان عدم تكرار هذه التصرفات وفي حال تكرار المخالفات يؤدي ذلك الى فسخ العقد فورآ . ', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(36, 7, 17, '', 'يلتزم الطرف الثاني وزبائنه بعدم إدخال الأسلحة أو المواد الجارحة إلى داخل المشروع تحت أي سبب كان. في حال مخالفة هذا البند، يحق للطرف الأول فسخ العقد فوراً، وتسقط جميع المستحقات المالية للطرف الثاني.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(37, 8, 1, '', 'في حالة فسخ العقد، يُمنح الطرف الثاني مهلة أقصاها 3 أيام لرفع ممتلكاته الخاصة من المكتب. إذا لم يقم الطرف الثاني برفع ممتلكاته خلال المهلة المحددة، يحق للطرف الأول مصادرة الممتلكات ونقلها إلى خارج الشركة ، ويكون الطرف الاول غير مسؤول عن أي تلف أو ضرر قد يحدث لهذه الممتلكات. خلال فترة الثلاثة أيام، يُشترط تسديد بدل الإيجار المستحق قبل السماح للطرف الثاني بنقل ممتلكاته .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(38, 8, 2, '', 'يحق للطرف الاول تغيير موقع المكتب المستأجر فيما بعد اذا اقتضت مصلحة العمل ذلك (الضرورة الملحة او لغرض صيانة معينة ) ولغرض تطوير المشروع او في حالة رغبة الطرف الثاني بتوسيع المكتب بالاتفاق والتراضي مع مراعاة تغيير الاسعار لبدل الايجار المسمى في العقد وحسب الموقع الجديد.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(39, 8, 3, '', 'الطرف الاول غير مسؤول عن استحصال الموافقات الحكومية للمكتب او الشركة الخاصة بالطرف الثاني ويكون هو المسؤول عن مكتبه او شركته ونشاطه بشكل عام امام الجهات الحكومية الرسمية ويخضع لضوابطها واجراءاتها .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(40, 8, 4, '', 'الطرف الاول غير مسؤول عن تعاملات الطرف الثاني وعقوده ونشاطه وعمله مع زبائنه ويتحمل الطرف الثاني وموظفيه المسؤولية القانونية والعشائرية في حالة حصول فعل يستوجب المسائلة القانونية او العشائرية من قبلهم .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(41, 8, 5, '', 'لايحق للطرف الثاني التراجع عن الايجار بعد توقيع العقد وفي حالة حصول ذلك يعتبر ناكلاً يستوجب فقدان حقه بالمطالبة بقيمة بدل الايجار المدفوع ومبلغ التامينات . ', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(42, 8, 6, '', 'يحق للطرف الاول تقديم المستمسكات الثبوتية الخاصة بالطرف الثاني للسلطات الامنية المختصة والجهات الحكومية في حالة حصول عارض امني او جنائي يستوجب ذلك وفي حالة تم طلب المستمسكات وأوراق الشركة من قبل الجهات الحكومية من الطرف الاول.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(43, 8, 7, '', 'يخضع العقد لكافة الانظمة والتعليمات والقوانين النافذة في جمهورية العراق.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(44, 8, 8, '', 'في حال مخالفة بنود العقد وعدم الالتزام بها والاضرار المتعمد بمصلحة الطرف الاول او عدم دفع مستحقات مترتبة بذمة الطرف الثاني لصالح الطرف الاول سيؤدي ذلك الى ادراج اسم الشركة / المكتب وممثلهما ضمن القائمة السوداء ولن يتم التعامل معه مستقبلآ في جميع افرع الشركة . ', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(45, 8, 9, '', 'تعتبر الضوابط العامة للعمل جزء لا يتجزء من العقد .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(46, 8, 10, '', 'تعتبر التبليغات بكتب رسمية او من خلال قنوات التواصل الاجتماعي هي تبليغات سارية المفعول .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(47, 8, 11, '', 'سيتم مخاطبة الجهات المعنية (مسجل الشركات – غرفة تجارة – مختار المحلة – البلدية – الامانة العامة لمجلس الوزراء – النقابات المختصة – الاستخبارات والامن الوطني ) بقوائم المكاتب والشركات والمنظمات وجميع النشاطات الموجودة والمغادرة من مقرات الشركة وبشكل شهري لأغراض الجرد وتثبيت المواقع الرسمية للشركات.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(48, 9, 1, '', 'ينتهي العقد بانتهاء مدته المثبتة في ثانيآ – مدة العقد', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(49, 9, 2, '', 'في حالة اتفاق الطرفين على انهائه رضائياً دون ان يترتب على ذلك اي اثار قانونية او مالية.', 0, 8, '2024-11-09 02:40:05', '2024-11-09 02:40:05'),
(50, 9, 3, '', 'يحق للطرف الاول فسخ العقد من جانب واحد دون اللجوء للقضاء في الحالات التالية :-\n3-1-	في حالة ورود شكوى رسمية من المستهلكين أو ممارسة اعمال النصب والاحتيال او شكوى من شاغلي المكاتب المجاورة .\n3-2-	مخالفة بند أو اكثر من بنود العقد .\n3-3-	مخالفة القوانين والانظمة والتعليمات والنظام العام والاداب .\n3-4-	في حالة ثبوت قيام الطرف الثاني بتغيير نوع النشاط الذي يمارسه داخل المكتب بدون علم موافقة الطرف الاول .\n3-5-	في حال حدوث مشكلة مع زبائنه داخل المشروع .\nويتوجب على الطرف الاول في الحالات أعلاه توجبه اشعار رسمي الى الطرف الثاني يذكر فيه نوع المخالفة المنسوبة له و نية الطرف الاول بالفسخ والزامه بشروطه .', 0, 8, '2024-11-09 02:40:05', '2024-11-09 05:00:04');

-- Create 'contract_statuses' table
CREATE TABLE contract_statuses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    status_name VARCHAR(50) NOT NULL UNIQUE
);

-- Populate 'contract_statuses' table
INSERT INTO contract_statuses (status_name) VALUES ('pending'), ('active'), ('terminated'), ('ended');

-- Create 'contracts' table
CREATE TABLE contracts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    business_name VARCHAR(255),
    business_category VARCHAR(255),
    business_type_id INT,
    business_logo_url VARCHAR(255),
    business_phone VARCHAR(20),
    branch_id INT,
    office_id INT,
    rent_amount DECIMAL(10,2),
    contract_type_id INT,
    start_date DATE,
    end_date DATE,
    contract_pdf_url VARCHAR(255),
    contract_qr_code_url VARCHAR(255),
    contract_status_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (business_type_id) REFERENCES business_types(id),
    FOREIGN KEY (branch_id) REFERENCES branches(id),
    FOREIGN KEY (office_id) REFERENCES offices(id),
    FOREIGN KEY (contract_type_id) REFERENCES contract_types(id),
    FOREIGN KEY (contract_status_id) REFERENCES contract_statuses(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

-- Create 'audit_log' table
CREATE TABLE audit_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    action VARCHAR(255) NOT NULL,
    table_name VARCHAR(100) NOT NULL,
    record_id INT,
    description TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Create 'notifications' table
CREATE TABLE notifications (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    message TEXT NOT NULL,
    is_read BOOLEAN DEFAULT FALSE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- Create 'invoice_statuses' table
CREATE TABLE invoice_statuses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    status_name VARCHAR(50) NOT NULL UNIQUE
);

-- Populate 'invoice_statuses' table
INSERT INTO invoice_statuses (status_name) VALUES ('issued'), ('unpaid'), ('paied'), ('overdue'), ('cancelled');

-- Create 'invoices' table
CREATE TABLE invoices (
    id INT AUTO_INCREMENT PRIMARY KEY,
    client_id INT NOT NULL,
    client_name VARCHAR(255),
    client_mobile VARCHAR(20),
    client_address_id INT NOT NULL,
    issue_date DATE,
    due_date DATE,
    invoice_pdf_url VARCHAR(255),
    invoice_status_id INT NOT NULL,
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (client_id) REFERENCES clients(id),
    FOREIGN KEY (invoice_status_id) REFERENCES invoice_statuses(id),
    FOREIGN KEY (created_by) REFERENCES users(id)
);

-- Create 'invoice items' table
CREATE TABLE invoice_items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    invoice_id INT NOT NULL,
    branch_id INT NOT NULL,
    office_id INT NOT NULL,
    office_name  INT,
    rent_amount  DECIMAL(10,2),
    utilities  DECIMAL(10,2),
    business_name VARCHAR(255),
    created_by INT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (invoice_id) REFERENCES invoices(id),
    FOREIGN KEY (office_id) REFERENCES offices(id),
    FOREIGN KEY (branch_id) REFERENCES branches(id)
);
