-- =====================================================================
-- 2026_sprint9_callcenter_crm.sql — اسپرینت ۹
-- کال‌سنترِ کاملِ CRM (مثلِ سایت): وضعیت‌های لید + تاریخِ پیگیری.
-- افزایشی، اجرای مجدد امن. دیتابیس: shadicli_nurse
-- =====================================================================
SET NAMES utf8mb4;

-- گسترشِ ENUM وضعیتِ نوبت برای وضعیت‌های کال‌سنتر (تماس‌گرفته‌شده/بدون‌پاسخ/نیاز‌به‌پیگیری/ازدست‌رفته)
ALTER TABLE `cw_appointments`
  MODIFY COLUMN `status` ENUM('new','contacted','no_answer','followup_needed','confirmed','arrived','done','cancelled','no_show','lost')
  NOT NULL DEFAULT 'new';

-- تاریخِ پیگیریِ بعدی (برای صف «پیگیری امروز» و «عقب‌افتاده»)
SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='cw_appointments' AND COLUMN_NAME='next_followup_at');
SET @s := IF(@c=0, "ALTER TABLE `cw_appointments` ADD COLUMN `next_followup_at` DATETIME NULL DEFAULT NULL AFTER `admin_note`", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

SET @c := (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='cw_appointments' AND INDEX_NAME='idx_followup');
SET @s := IF(@c=0, "ALTER TABLE `cw_appointments` ADD INDEX `idx_followup` (`next_followup_at`)", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

-- =====================================================================
-- ROLLBACK:
-- ALTER TABLE `cw_appointments` DROP INDEX `idx_followup`, DROP COLUMN `next_followup_at`;
-- ALTER TABLE `cw_appointments` MODIFY COLUMN `status` ENUM('new','confirmed','arrived','done','cancelled','no_show') NOT NULL DEFAULT 'new';
-- =====================================================================
