-- ============================================================
-- มอมอ (MorMoor) Platform — Database Schema
-- MySQL 8.x · ใช้ร่วมกันทั้ง mormoor-app และ mormoor-admin
-- DB: mormoor_db · charset utf8mb4
-- ============================================================

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

SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS payments;
DROP TABLE IF EXISTS subscriptions;
DROP TABLE IF EXISTS plans;
DROP TABLE IF EXISTS health_records;
DROP TABLE IF EXISTS vaccine_templates;
DROP TABLE IF EXISTS alerts;
DROP TABLE IF EXISTS births;
DROP TABLE IF EXISTS inseminations;
DROP TABLE IF EXISTS cattle_weights;
DROP TABLE IF EXISTS cattle;
DROP TABLE IF EXISTS farms;
DROP TABLE IF EXISTS users;
SET FOREIGN_KEY_CHECKS = 1;

-- 1. ผู้ใช้งาน
CREATE TABLE users (
  user_id       INT AUTO_INCREMENT PRIMARY KEY,
  name          VARCHAR(100) NOT NULL,
  phone         VARCHAR(20) UNIQUE NOT NULL,     -- username
  password      VARCHAR(255) NOT NULL,           -- bcrypt cost=12
  line_user_id  VARCHAR(100),                    -- LINE Messaging API
  role          ENUM('owner','admin') DEFAULT 'owner',
  status        ENUM('pending','active','suspended') DEFAULT 'active',
  profile_image VARCHAR(255),
  last_login_at DATETIME,
  created_at    DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 2. ฟาร์ม (1 user = 1 farm เท่านั้น)
CREATE TABLE farms (
  farm_id       INT AUTO_INCREMENT PRIMARY KEY,
  user_id       INT NOT NULL UNIQUE,             -- UNIQUE = 1 user : 1 farm
  farm_name     VARCHAR(150) NOT NULL,
  location      TEXT,
  province      VARCHAR(100),
  phone         VARCHAR(20),
  line_oa_token VARCHAR(255),                     -- LINE OA token
  notify_inapp  TINYINT(1) DEFAULT 1,
  notify_line   TINYINT(1) DEFAULT 1,
  notify_sound  TINYINT(1) DEFAULT 1,
  created_at    DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users(user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 3. ทะเบียนวัว (pen_name = คอก/แปลงที่อยู่)
CREATE TABLE cattle (
  cattle_id        INT AUTO_INCREMENT PRIMARY KEY,
  farm_id          INT NOT NULL,
  cattle_no        VARCHAR(50) NOT NULL,
  name             VARCHAR(100),
  gender           ENUM('female','male') NOT NULL,
  birthdate        DATE NOT NULL,                 -- คำนวณอายุ real-time
  breed            VARCHAR(100),
  sire_name        VARCHAR(100),
  weight_kg        DECIMAL(6,2),                  -- น้ำหนักล่าสุด
  height_cm        DECIMAL(5,2),
  pen_name         VARCHAR(100),                  -- คอก/แปลงที่อยู่
  photo_path       VARCHAR(255),
  status           ENUM('active','sold','dead') DEFAULT 'active',
  parent_cattle_id INT,                           -- แม่วัว
  notes            TEXT,
  created_at       DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (farm_id) REFERENCES farms(farm_id),
  FOREIGN KEY (parent_cattle_id) REFERENCES cattle(cattle_id),
  INDEX idx_cattle_farm (farm_id),
  INDEX idx_cattle_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 4. บันทึกน้ำหนักหลายครั้ง (Report R2 ADG)
CREATE TABLE cattle_weights (
  weight_id   INT AUTO_INCREMENT PRIMARY KEY,
  cattle_id   INT NOT NULL,
  weight_kg   DECIMAL(6,2) NOT NULL,
  measured_at DATE NOT NULL,
  notes       TEXT,
  FOREIGN KEY (cattle_id) REFERENCES cattle(cattle_id),
  INDEX idx_weight_cattle (cattle_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 5. บันทึกการผสมพันธุ์
CREATE TABLE inseminations (
  insem_id          INT AUTO_INCREMENT PRIMARY KEY,
  insem_type        ENUM('ai','natural') NOT NULL DEFAULT 'ai', -- ผสมเทียม / ผสมธรรมชาติ
  cattle_id         INT NOT NULL,
  insem_date        DATE NOT NULL,                -- กรอกจากใบน้ำเชื้อ (AI) หรือวันขึ้นผสม (natural)
  vet_name          VARCHAR(100),                 -- text ธรรมดา ไม่ใช่ FK
  sire_name         VARCHAR(100),
  semen_code        VARCHAR(100),
  expected_birth    DATE,                         -- server คำนวณ = insem_date + 283
  result            ENUM('pending','pregnant','failed') DEFAULT 'pending',
  actual_birth_date DATE,
  semen_doc_image   VARCHAR(255),
  notes             TEXT,
  created_at        DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (cattle_id) REFERENCES cattle(cattle_id),
  INDEX idx_insem_cattle (cattle_id),
  INDEX idx_insem_result (result)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 6. บันทึกการคลอด
CREATE TABLE births (
  birth_id       INT AUTO_INCREMENT PRIMARY KEY,
  insem_id       INT NOT NULL,
  birth_date     DATE NOT NULL,
  calf_gender    ENUM('female','male'),
  calf_weight_kg DECIMAL(5,2),
  calf_status    ENUM('alive','stillborn') DEFAULT 'alive',
  calf_cattle_id INT,                             -- FK ลูกวัวใหม่
  photo_path     VARCHAR(255),
  notes          TEXT,
  created_at     DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (insem_id) REFERENCES inseminations(insem_id),
  FOREIGN KEY (calf_cattle_id) REFERENCES cattle(cattle_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 7. การแจ้งเตือน
CREATE TABLE alerts (
  alert_id    INT AUTO_INCREMENT PRIMARY KEY,
  farm_id     INT NOT NULL,
  cattle_id   INT,
  insem_id    INT,
  alert_type  ENUM(
    'ready_to_breed',
    'estrus_check_21','estrus_check_42','estrus_check_63',
    'pregnancy_check_due',
    'birth_soon_14','birth_soon_7',
    'vaccine_due_14','vaccine_due_7',
    'medicine_due','vaccine_overdue'
  ) NOT NULL,
  alert_date  DATE NOT NULL,
  message_th  TEXT NOT NULL,
  is_sent     TINYINT(1) DEFAULT 0,
  is_read     TINYINT(1) DEFAULT 0,
  sent_at     DATETIME,
  created_at  DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (farm_id)   REFERENCES farms(farm_id),
  FOREIGN KEY (cattle_id) REFERENCES cattle(cattle_id),
  FOREIGN KEY (insem_id)  REFERENCES inseminations(insem_id),
  INDEX idx_alert_farm (farm_id),
  INDEX idx_alert_date (alert_date),
  INDEX idx_alert_dedup (farm_id, alert_type, alert_date, cattle_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 8. Template วัคซีน/ยา
CREATE TABLE vaccine_templates (
  template_id   INT AUTO_INCREMENT PRIMARY KEY,
  farm_id       INT,                              -- NULL = template กลาง (Admin)
  name          VARCHAR(150) NOT NULL,
  type          ENUM('vaccine','medicine','supplement') NOT NULL,
  interval_days INT,                              -- รอบซ้ำ (วัน)
  description   TEXT,
  is_active     TINYINT(1) DEFAULT 1,
  created_at    DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (farm_id) REFERENCES farms(farm_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 9. บันทึกการฉีดยา/วัคซีน
CREATE TABLE health_records (
  record_id     INT AUTO_INCREMENT PRIMARY KEY,
  farm_id       INT NOT NULL,
  cattle_id     INT,                              -- NULL = บันทึกทั้งฝูง
  template_id   INT,
  record_date   DATE NOT NULL,
  next_due_date DATE,                             -- คำนวณอัตโนมัติ
  given_by      VARCHAR(100),                     -- ชื่อหมอ หรือ เจ้าของ
  given_by_type ENUM('owner','vet'),
  dosage        VARCHAR(100),
  batch_id      VARCHAR(50),                      -- รหัส batch ฉีดทั้งฝูง
  doc_image     VARCHAR(255),
  notes         TEXT,
  created_at    DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (farm_id)     REFERENCES farms(farm_id),
  FOREIGN KEY (cattle_id)   REFERENCES cattle(cattle_id),
  FOREIGN KEY (template_id) REFERENCES vaccine_templates(template_id),
  INDEX idx_health_farm (farm_id),
  INDEX idx_health_cattle (cattle_id),
  INDEX idx_health_due (next_due_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 10. แพ็กเกจ
CREATE TABLE plans (
  plan_id         INT AUTO_INCREMENT PRIMARY KEY,
  name            VARCHAR(100) NOT NULL,
  price_monthly   DECIMAL(10,2) DEFAULT 0,
  price_yearly    DECIMAL(10,2) DEFAULT 0,
  max_cattle      INT DEFAULT 5,                  -- NULL = ไม่จำกัด
  has_line_notify TINYINT(1) DEFAULT 0,
  has_sms         TINYINT(1) DEFAULT 0,
  has_reports     TINYINT(1) DEFAULT 0,
  has_export      TINYINT(1) DEFAULT 0,
  is_active       TINYINT(1) DEFAULT 1,
  created_at      DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 11. Subscription (ผูกกับ user)
CREATE TABLE subscriptions (
  sub_id        INT AUTO_INCREMENT PRIMARY KEY,
  user_id       INT NOT NULL,
  plan_id       INT NOT NULL,
  billing_type  ENUM('monthly','yearly') DEFAULT 'monthly',
  start_date    DATE NOT NULL,
  end_date      DATE NOT NULL,
  status        ENUM('trial','active','expired','suspended') DEFAULT 'trial',
  trial_ends    DATE,
  created_at    DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users(user_id),
  FOREIGN KEY (plan_id) REFERENCES plans(plan_id),
  INDEX idx_sub_user (user_id),
  INDEX idx_sub_status (status),
  INDEX idx_sub_end (end_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 12. ประวัติการชำระเงิน
CREATE TABLE payments (
  payment_id  INT AUTO_INCREMENT PRIMARY KEY,
  sub_id      INT NOT NULL,
  user_id     INT NOT NULL,
  amount      DECIMAL(10,2) NOT NULL,
  method      ENUM('promptpay','transfer','cash','manual') DEFAULT 'manual',
  status      ENUM('pending','paid','failed') DEFAULT 'pending',
  paid_at     DATETIME,
  note        TEXT,
  created_at  DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (sub_id)  REFERENCES subscriptions(sub_id),
  FOREIGN KEY (user_id) REFERENCES users(user_id),
  INDEX idx_pay_user (user_id),
  INDEX idx_pay_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 13. บันทึกผลเซ็คกลับสัด (3 รอบ หลังผสมแต่ละครั้ง)
CREATE TABLE estrus_checks (
  check_id    INT AUTO_INCREMENT PRIMARY KEY,
  insem_id    INT NOT NULL,
  round       TINYINT NOT NULL,               -- 1, 2, 3
  due_date    DATE NOT NULL,                  -- วันนัดเซ็ค (+21/+42/+63)
  check_date  DATE,                           -- วันที่เซ็คจริง
  result      ENUM('pending','no_estrus','returned') DEFAULT 'pending',
  notes       TEXT,
  created_at  DATETIME DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (insem_id) REFERENCES inseminations(insem_id),
  UNIQUE KEY uq_insem_round (insem_id, round),
  INDEX idx_ec_insem (insem_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ============================================================
-- Data เริ่มต้น
-- ============================================================

-- Plans (plan_id 1=ฟรี, 2=Starter, 3=Pro)
INSERT INTO plans (name, price_monthly, price_yearly, max_cattle, has_line_notify, has_sms, has_reports, has_export)
VALUES
  ('ฟรี',     0,    0,     5,    0, 0, 0, 0),
  ('Starter', 249,  2388,  30,   1, 0, 0, 0),
  ('Pro',     499,  4788,  NULL, 1, 1, 1, 1);

-- Vaccine Templates กลาง (farm_id = NULL)
INSERT INTO vaccine_templates (farm_id, name, type, interval_days, description) VALUES
  (NULL, 'วัคซีนโรคปากเท้าเปื่อย (FMD)', 'vaccine', 180, 'ฉีดทุก 6 เดือน'),
  (NULL, 'วัคซีนเฮโมรายิก เซฟติซีเมีย (HS)', 'vaccine', 365, 'ฉีดปีละ 1 ครั้ง'),
  (NULL, 'วัคซีนแอนแทรกซ์', 'vaccine', 365, 'ฉีดปีละ 1 ครั้ง เฉพาะพื้นที่เสี่ยง'),
  (NULL, 'วัคซีนลัมปีสกิน (LSD)', 'vaccine', 365, 'ฉีดปีละ 1 ครั้ง'),
  (NULL, 'วัคซีนบรูเซลลา', 'vaccine', 365, 'ฉีดปีละ 1 ครั้ง'),
  (NULL, 'ถ่ายพยาธิ', 'medicine', 90, 'ทุก 3 เดือน เช่น Ivermectin');

-- Admin เริ่มต้น (รหัสผ่าน: admin123 — เปลี่ยนทันทีหลัง deploy)
-- bcrypt cost=12 hash ของ "admin123"
INSERT INTO users (name, phone, password, role, status)
VALUES ('ผู้ดูแลระบบ', 'admin@mormoor.app', '$2y$12$Huu0ngx80Oky/cu4egjHke2V6X9fmc/UcdhnYOQttz5DrX6MQImLi', 'admin', 'active');

-- ============================================================
-- ข้อมูลตัวอย่าง Customer (รหัสผ่านทุกคน: demo1234)
-- bcrypt cost=12 hash ของ "demo1234"
-- ============================================================

-- ─── User 1: สมชาย — Starter Plan (active) ───────────────────
INSERT INTO users (name, phone, password, role, status)
VALUES ('สมชาย มีฟาร์ม', '0811111111', '$2y$12$d2sGFmyoQt5A2AelV7UMnu4v08/sI6XN86Y6HgYH2y4zGyAW4VWBa', 'owner', 'active');

INSERT INTO farms (user_id, farm_name, location, province, phone)
VALUES (2, 'ฟาร์มสมชาย', '99 หมู่ 3 ต.บ้านใหม่ อ.เมือง', 'นครราชสีมา', '0811111111');

INSERT INTO subscriptions (user_id, plan_id, billing_type, start_date, end_date, status)
VALUES (2, 2, 'monthly', '2026-02-01', '2026-08-01', 'active');

INSERT INTO cattle (farm_id, cattle_no, name, gender, birthdate, breed, weight_kg, pen_name, status) VALUES
  (1, 'KH-001', 'ดาว',    'female', '2022-03-15', 'บราห์มัน',  380.00, 'คอกหลัง',  'active'),
  (1, 'KH-002', 'เดือน',  'female', '2022-07-20', 'ลูกผสม',    350.50, 'คอกหลัง',  'active'),
  (1, 'KH-003', 'แสง',    'female', '2023-01-10', 'บราห์มัน',  310.00, 'คอกหน้า',  'active'),
  (1, 'KH-004', 'ฟ้า',    'female', '2021-09-05', 'ลูกผสม',    420.00, 'คอกหน้า',  'active'),
  (1, 'KH-005', 'พ่อดำ',  'male',   '2020-05-01', 'พ่อพันธุ์', 650.00, 'คอกพ่อพันธุ์', 'active');

-- น้ำหนักประวัติ ดาว (KH-001)
INSERT INTO cattle_weights (cattle_id, weight_kg, measured_at) VALUES
  (1, 250.00, '2023-06-01'),
  (1, 320.00, '2024-01-15'),
  (1, 380.00, '2026-06-01');

-- บันทึกผสม ดาว (KH-001) — ผสมแล้ว ตั้งท้อง
INSERT INTO inseminations (cattle_id, insem_date, vet_name, sire_name, semen_code, expected_birth, result)
VALUES (1, '2025-10-20', 'น.สพ.ประสิทธิ์', 'พ่อดำ', 'BH-2025-001',
        DATE_ADD('2025-10-20', INTERVAL 283 DAY), 'pregnant');

-- บันทึกผสม เดือน (KH-002) — รอผล
INSERT INTO inseminations (cattle_id, insem_date, vet_name, sire_name, semen_code, expected_birth, result)
VALUES (2, '2026-05-10', 'น.สพ.ประสิทธิ์', 'พ่อดำ', 'BH-2026-012',
        DATE_ADD('2026-05-10', INTERVAL 283 DAY), 'pending');

-- วัคซีน FMD ทั้งฝูง
INSERT INTO health_records (farm_id, cattle_id, template_id, record_date, next_due_date, given_by, given_by_type, batch_id)
VALUES
  (1, NULL, 1, '2026-01-15', DATE_ADD('2026-01-15', INTERVAL 180 DAY), 'น.สพ.ประสิทธิ์', 'vet', 'BATCH-2026-01'),
  (1, NULL, 6, '2026-03-01', DATE_ADD('2026-03-01', INTERVAL 90  DAY), 'สมชาย มีฟาร์ม',  'owner', 'BATCH-2026-02');

-- ─── User 2: สมหญิง — Free Plan ──────────────────────────────
INSERT INTO users (name, phone, password, role, status)
VALUES ('สมหญิง เลี้ยงวัว', '0822222222', '$2y$12$d2sGFmyoQt5A2AelV7UMnu4v08/sI6XN86Y6HgYH2y4zGyAW4VWBa', 'owner', 'active');

INSERT INTO farms (user_id, farm_name, location, province, phone)
VALUES (3, 'ฟาร์มเล็กสมหญิง', '12 หมู่ 1 ต.หนองบัว อ.บัวใหญ่', 'นครราชสีมา', '0822222222');

INSERT INTO subscriptions (user_id, plan_id, billing_type, start_date, end_date, status)
VALUES (3, 1, 'monthly', '2026-05-01', '2099-12-31', 'active');

INSERT INTO cattle (farm_id, cattle_no, name, gender, birthdate, breed, weight_kg, pen_name, status) VALUES
  (2, 'SY-001', 'มะลิ',  'female', '2023-04-10', 'ลูกผสม', 290.00, 'คอกบ้าน', 'active'),
  (2, 'SY-002', 'กุหลาบ','female', '2022-11-20', 'ลูกผสม', 330.00, 'คอกบ้าน', 'active'),
  (2, 'SY-003', 'จำปี',  'female', '2024-02-14', 'บราห์มัน',200.00, 'คอกบ้าน', 'active');

-- บันทึกผสม มะลิ (SY-001)
INSERT INTO inseminations (cattle_id, insem_date, vet_name, sire_name, semen_code, expected_birth, result)
VALUES (6, '2026-04-01', 'น.สพ.สมศักดิ์', 'พ่อดาวเรือง', 'DR-2026-005',
        DATE_ADD('2026-04-01', INTERVAL 283 DAY), 'pregnant');

-- ─── User 3: วิชัย — Pro Plan (active) ───────────────────────
INSERT INTO users (name, phone, password, role, status)
VALUES ('วิชัย ฟาร์มใหญ่', '0833333333', '$2y$12$d2sGFmyoQt5A2AelV7UMnu4v08/sI6XN86Y6HgYH2y4zGyAW4VWBa', 'owner', 'active');

INSERT INTO farms (user_id, farm_name, location, province, phone)
VALUES (4, 'ฟาร์มวิชัย 88', '88 ม.5 ต.สระโบสถ์ อ.พระพุทธบาท', 'สระบุรี', '0833333333');

INSERT INTO subscriptions (user_id, plan_id, billing_type, start_date, end_date, status)
VALUES (4, 3, 'yearly', '2026-01-01', '2026-12-31', 'active');

INSERT INTO cattle (farm_id, cattle_no, name, gender, birthdate, breed, weight_kg, pen_name, status) VALUES
  (3, 'VC-001', 'แม่ดำ',    'female', '2020-02-10', 'บราห์มัน',  480.00, 'แปลง A', 'active'),
  (3, 'VC-002', 'แม่แดง',   'female', '2020-05-22', 'ลูกผสม',    460.00, 'แปลง A', 'active'),
  (3, 'VC-003', 'แม่ขาว',   'female', '2021-08-15', 'บราห์มัน',  440.00, 'แปลง B', 'active'),
  (3, 'VC-004', 'แม่เหลือง', 'female', '2022-03-01', 'ลูกผสม',   390.00, 'แปลง B', 'active'),
  (3, 'VC-005', 'แม่เทา',   'female', '2023-06-18', 'ลูกผสม',    310.00, 'แปลง C', 'active'),
  (3, 'VC-006', 'พ่อยักษ์', 'male',   '2018-01-01', 'พ่อพันธุ์', 820.00, 'คอกพ่อพันธุ์', 'active'),
  (3, 'VC-007', 'ลูกดำ',    'female', '2024-11-10', 'บราห์มัน',  150.00, 'แปลง C', 'active'),
  (3, 'VC-008', 'ลูกแดง',   'male',   '2025-01-25', 'ลูกผสม',    120.00, 'แปลง C', 'active');

-- ประวัติการผสม แม่ดำ — คลอดแล้ว (VC-007)
INSERT INTO inseminations (cattle_id, insem_date, vet_name, sire_name, semen_code, expected_birth, result, actual_birth_date)
VALUES (9, '2024-01-31', 'น.สพ.อนันต์', 'พ่อยักษ์', 'YK-2024-001',
        DATE_ADD('2024-01-31', INTERVAL 283 DAY), 'pregnant', '2024-11-10');

INSERT INTO births (insem_id, birth_date, calf_gender, calf_weight_kg, calf_status, calf_cattle_id)
VALUES (4, '2024-11-10', 'female', 32.50, 'alive', 15);

-- ประวัติการผสม แม่แดง — คลอดแล้ว (VC-008)
INSERT INTO inseminations (cattle_id, insem_date, vet_name, sire_name, semen_code, expected_birth, result, actual_birth_date)
VALUES (10, '2024-04-17', 'น.สพ.อนันต์', 'พ่อยักษ์', 'YK-2024-002',
        DATE_ADD('2024-04-17', INTERVAL 283 DAY), 'pregnant', '2025-01-25');

INSERT INTO births (insem_id, birth_date, calf_gender, calf_weight_kg, calf_status, calf_cattle_id)
VALUES (5, '2025-01-25', 'male', 35.00, 'alive', 16);

-- ผสมรอบใหม่ แม่ดำ — รอผล
INSERT INTO inseminations (cattle_id, insem_date, vet_name, sire_name, semen_code, expected_birth, result)
VALUES (9, '2026-05-20', 'น.สพ.อนันต์', 'พ่อยักษ์', 'YK-2026-001',
        DATE_ADD('2026-05-20', INTERVAL 283 DAY), 'pending');

-- วัคซีนฝูงฟาร์มวิชัย
INSERT INTO health_records (farm_id, cattle_id, template_id, record_date, next_due_date, given_by, given_by_type, batch_id) VALUES
  (3, NULL, 1, '2025-12-10', DATE_ADD('2025-12-10', INTERVAL 180 DAY), 'น.สพ.อนันต์', 'vet',   'VC-BATCH-001'),
  (3, NULL, 2, '2026-02-01', DATE_ADD('2026-02-01', INTERVAL 365 DAY), 'น.สพ.อนันต์', 'vet',   'VC-BATCH-002'),
  (3, NULL, 6, '2026-04-15', DATE_ADD('2026-04-15', INTERVAL 90  DAY), 'วิชัย ฟาร์มใหญ่', 'owner', 'VC-BATCH-003');

-- ─── User 4: นายทดสอบ — Starter + ตัวอย่างแจ้งเตือนครบทุกประเภท ──
-- รหัสผ่าน: demo1234  |  เบอร์: 0844444444
INSERT INTO users (name, phone, password, role, status)
VALUES ('นายทดสอบ แจ้งเตือน', '0844444444', '$2y$12$d2sGFmyoQt5A2AelV7UMnu4v08/sI6XN86Y6HgYH2y4zGyAW4VWBa', 'owner', 'active');

INSERT INTO farms (user_id, farm_name, location, province, phone)
VALUES (5, 'ฟาร์มทดสอบแจ้งเตือน', '1 ถ.ทดสอบ ต.ตัวอย่าง อ.เมือง', 'กรุงเทพมหานคร', '0844444444');

INSERT INTO subscriptions (user_id, plan_id, billing_type, start_date, end_date, status)
VALUES (5, 2, 'monthly', '2026-01-01', '2026-12-31', 'active');

-- วัว 6 ตัว — แต่ละตัวสร้างสถานการณ์แจ้งเตือนต่างกัน (ฐาน: 2026-06-19)
INSERT INTO cattle (farm_id, cattle_no, name, gender, birthdate, breed, weight_kg, pen_name, status) VALUES
  (4, 'TN-001', 'จิ้งหรีด', 'female', '2025-01-19', 'ลูกผสม',   185.00, 'คอก A', 'active'), -- อายุ 17 เดือน → ready_to_breed
  (4, 'TN-002', 'มณี',     'female', '2022-03-10', 'บราห์มัน', 370.00, 'คอก A', 'active'), -- ผสมแล้ว 21 วัน → estrus_check_21
  (4, 'TN-003', 'จันทร์',  'female', '2022-05-20', 'ลูกผสม',   350.00, 'คอก B', 'active'), -- ผสมแล้ว 42 วัน → estrus_check_42
  (4, 'TN-004', 'ทองสุก',  'female', '2021-02-14', 'บราห์มัน', 430.00, 'คอก B', 'active'), -- ตั้งท้อง คลอดใน 7 วัน → birth_soon_7
  (4, 'TN-005', 'เพชร',    'female', '2021-04-01', 'ลูกผสม',   410.00, 'คอก C', 'active'), -- ตั้งท้อง คลอดใน 14 วัน → birth_soon_14
  (4, 'TN-006', 'นิล',     'female', '2022-08-15', 'บราห์มัน', 360.00, 'คอก C', 'active'); -- ผสมแล้ว 63 วัน → estrus_check_63

-- การผสม — วันเลือกให้ครบ 21/42/63 วันพอดีกับ 2026-06-19 และ 2 ตัวที่คลอดเร็ว
INSERT INTO inseminations (cattle_id, insem_date, vet_name, sire_name, semen_code, expected_birth, result) VALUES
  (18, '2026-05-29', 'น.สพ.ทดสอบ', 'พ่อดาว', 'TS-2026-001', DATE_ADD('2026-05-29', INTERVAL 283 DAY), 'pending'),  -- +21 วัน = 2026-06-19
  (19, '2026-05-08', 'น.สพ.ทดสอบ', 'พ่อดาว', 'TS-2026-002', DATE_ADD('2026-05-08', INTERVAL 283 DAY), 'pending'),  -- +42 วัน = 2026-06-19
  (20, '2025-09-16', 'น.สพ.ทดสอบ', 'พ่อดาว', 'TS-2025-010', '2026-06-26', 'pregnant'),                             -- คลอด 2026-06-26 (ใน 7 วัน)
  (21, '2025-09-23', 'น.สพ.ทดสอบ', 'พ่อดาว', 'TS-2025-011', '2026-07-03', 'pregnant'),                             -- คลอด 2026-07-03 (ใน 14 วัน)
  (22, '2026-04-17', 'น.สพ.ทดสอบ', 'พ่อดาว', 'TS-2026-003', DATE_ADD('2026-04-17', INTERVAL 283 DAY), 'pending');  -- +63 วัน = 2026-06-19

-- วัคซีน/ยา — สร้างสถานการณ์แจ้งเตือนวัคซีน 3 แบบ
INSERT INTO health_records (farm_id, cattle_id, template_id, record_date, next_due_date, given_by, given_by_type, batch_id) VALUES
  (4, NULL, 1, '2025-12-28', '2026-06-26', 'น.สพ.ทดสอบ', 'vet',   'TN-FMD-001'),  -- FMD ครบ 2026-06-26 → vaccine_due_7
  (4, NULL, 2, '2025-07-03', '2026-07-03', 'น.สพ.ทดสอบ', 'vet',   'TN-HS-001'),   -- HS  ครบ 2026-07-03 → vaccine_due_14
  (4, NULL, 4, '2025-06-09', '2026-06-09', 'น.สพ.ทดสอบ', 'vet',   'TN-LSD-001'),  -- LSD เกินกำหนด 10 วัน → vaccine_overdue
  (4, NULL, 6, '2026-03-21', '2026-06-19', 'นายทดสอบ', 'owner', 'TN-DEW-001');    -- ถ่ายพยาธิ ครบวันนี้ → medicine_due

-- ============================================================
-- ALERTS ตัวอย่างครบทุกประเภท (farm_id=4, ฐาน 2026-06-19)
-- ============================================================
INSERT INTO alerts (farm_id, cattle_id, insem_id, alert_type, alert_date, message_th, is_sent, is_read, sent_at) VALUES

  -- 1. พร้อมผสม
  (4, 17, NULL, 'ready_to_breed',
   '2026-06-19',
   'วัว TN-001 (จิ้งหรีด) ฟาร์มทดสอบแจ้งเตือน อายุใกล้ครบ 18 เดือน — เตรียมโทรเรียกหมอได้เลยนะ',
   1, 0, '2026-06-19 06:00:00'),

  -- 2. เช็คสัด รอบ 1 (21 วัน)
  (4, 18, 7,   'estrus_check_21',
   '2026-06-19',
   'วัว TN-002 (มณี) ฟาร์มทดสอบแจ้งเตือน ครบ 21 วันหลังผสมวันนี้ — ไปดูสัดด้วยนะ',
   1, 0, '2026-06-19 06:00:00'),

  -- 3. เช็คสัด รอบ 2 (42 วัน)
  (4, 19, 8,   'estrus_check_42',
   '2026-06-19',
   'วัว TN-003 (จันทร์) ฟาร์มทดสอบแจ้งเตือน ครบ 42 วันหลังผสมวันนี้ — เช็คสัดรอบ 2',
   1, 0, '2026-06-19 06:00:00'),

  -- 4. เช็คสัด รอบ 3 (63 วัน)
  (4, 22, 11,  'estrus_check_63',
   '2026-06-19',
   'วัว TN-006 (นิล) ฟาร์มทดสอบแจ้งเตือน ครบ 63 วันหลังผสมวันนี้ — เช็คสัดรอบสุดท้าย',
   1, 0, '2026-06-19 06:00:00'),

  -- 5. คลอดใน 7 วัน
  (4, 20, 9,   'birth_soon_7',
   '2026-06-19',
   'วัว TN-004 (ทองสุก) ฟาร์มทดสอบแจ้งเตือน จะคลอดในอีก 7 วัน — ดูแลใกล้ชิดด้วยนะ',
   1, 0, '2026-06-19 06:00:00'),

  -- 6. คลอดใน 14 วัน
  (4, 21, 10,  'birth_soon_14',
   '2026-06-19',
   'วัว TN-005 (เพชร) ฟาร์มทดสอบแจ้งเตือน จะถึงกำหนดคลอดในอีก 14 วัน',
   1, 0, '2026-06-19 06:00:00'),

  -- 7. วัคซีน FMD ใน 7 วัน
  (4, NULL, NULL, 'vaccine_due_7',
   '2026-06-19',
   'ฟาร์มทดสอบแจ้งเตือน ถึงรอบฉีดวัคซีนโรคปากเท้าเปื่อย (FMD) ในอีก 7 วัน — เตรียมติดต่อหมอได้เลย',
   1, 0, '2026-06-19 06:00:00'),

  -- 8. วัคซีน HS ใน 14 วัน
  (4, NULL, NULL, 'vaccine_due_14',
   '2026-06-19',
   'ฟาร์มทดสอบแจ้งเตือน ถึงรอบฉีดวัคซีนเฮโมรายิก เซฟติซีเมีย (HS) ในอีก 14 วัน — อย่าลืมนัดหมอนะ',
   1, 0, '2026-06-19 06:00:00'),

  -- 9. วัคซีน LSD เกินกำหนด 10 วัน (สร้างเมื่อ 2026-06-09 ยังไม่ได้อ่าน)
  (4, NULL, NULL, 'vaccine_overdue',
   '2026-06-09',
   'ฟาร์มทดสอบแจ้งเตือน เกินรอบฉีดวัคซีนลัมปีสกิน (LSD) แล้ว 10 วัน — ควรรีบฉีดโดยเร็ว',
   1, 0, '2026-06-09 06:00:00'),

  -- 10. ครบรอบถ่ายพยาธิวันนี้
  (4, NULL, NULL, 'medicine_due',
   '2026-06-19',
   'ฟาร์มทดสอบแจ้งเตือน ครบรอบถ่ายพยาธิวันนี้ — อย่าลืมให้ยาด้วยนะ',
   1, 0, '2026-06-19 06:00:00');

-- ============================================================
-- สรุปบัญชี Customer ตัวอย่าง  (รหัสผ่านทุกคน: demo1234)
-- ─────────────────────────────────────────────────────────
--  เบอร์          ชื่อ                  แพ็กเกจ    วัว
--  0811111111     สมชาย มีฟาร์ม        Starter    5 ตัว (นครราชสีมา)
--  0822222222     สมหญิง เลี้ยงวัว     ฟรี        3 ตัว (นครราชสีมา)
--  0833333333     วิชัย ฟาร์มใหญ่      Pro        8 ตัว (สระบุรี)
--  0844444444     นายทดสอบ แจ้งเตือน   Starter    6 ตัว + alerts ครบ 10 ประเภท
-- ============================================================
