-- =============================================================================
-- 담당자(manager) 원격/운영 DB 보정 스크립트
-- =============================================================================
-- 목적
--   - 앱에서 사용하는 담당자 구분값(mg_dept_code): company | district | agency
--   - 테스트용처럼 보이지 않도록 성명·전화·이메일·직위코드를 현실적인 형태로 정리
--
-- 실행 전
--   1) 반드시 백업(또는 스테이징 DB에서 먼저 검증)
--   2) 아래 @LG_IDX 를 운영 지자체 PK로 맞추거나, 전체 지자체에 적용하려면 NULL 로 둠
--
-- 사용 예 (MySQL 클라이언트)
--   mysql -h HOST -u USER -p DBNAME < writable/database/manager_remote_realistic_update.sql
--
-- 주의
--   - 이 스크립트는 **기존 manager 행을 UPDATE** 합니다(INSERT 아님).
--   - mg_position_code 는 기존 시드에서 쓰던 직위 코드(1,2,3,5,6)를 순환 배정합니다.
--     운영 DB에 해당 code_detail(T) 코드가 없다면 직위 셀렉트가 비어 보일 수 있으니, 그 경우 직위 UPDATE 블록만 주석 처리하세요.
-- =============================================================================

SET NAMES utf8mb4;

-- 적용 대상 지자체: 예) 대구 시범 lg_idx=1 이면 1 / 전체 적용이면 NULL
SET @LG_IDX := NULL;

-- ---------------------------------------------------------------------------
-- 1) 카테고리(담당자 구분) 부여: mg_idx 기준으로 3종 순환
-- ---------------------------------------------------------------------------
UPDATE `manager` m
SET m.`mg_dept_code` = ELT(MOD(m.`mg_idx`, 3) + 1, 'company', 'district', 'agency')
WHERE m.`mg_state` = 1
  AND (@LG_IDX IS NULL OR m.`mg_lg_idx` = @LG_IDX);

-- ---------------------------------------------------------------------------
-- 2) 성명/전화/이메일/직위: mg_idx 기반으로 일관되게 생성(완전 난수 아님)
-- ---------------------------------------------------------------------------
UPDATE `manager` m
SET
  m.`mg_name` = ELT(
    MOD(m.`mg_idx`, 18) + 1,
    '김민환', '이서연', '박지훈', '최유진', '정다운', '한채원',
    '오승우', '윤가람', '강도현', '임하늘', '조은별', '배시현',
    '문태영', '신재원', '홍수진', '권도영', '안예린', '유재혁'
  ),
  m.`mg_tel` = CONCAT(
    '053-661-',
    LPAD(300 + MOD(m.`mg_idx`, 700), 4, '0')
  ),
  m.`mg_phone` = CONCAT(
    '010-',
    LPAD(2000 + MOD(m.`mg_idx` * 7, 7999), 4, '0'),
    '-',
    LPAD(3000 + MOD(m.`mg_idx` * 11, 7999), 4, '0')
  ),
  m.`mg_email` = CONCAT('waste.mgr.', m.`mg_idx`, '@daegu.go.kr'),
  m.`mg_position_code` = ELT(MOD(m.`mg_idx`, 5) + 1, '1', '2', '3', '5', '6')
WHERE m.`mg_state` = 1
  AND (@LG_IDX IS NULL OR m.`mg_lg_idx` = @LG_IDX);

-- ---------------------------------------------------------------------------
-- 3) 확인용 SELECT (실행 후 결과 점검)
-- ---------------------------------------------------------------------------
-- SELECT mg_idx, mg_lg_idx, mg_dept_code, mg_name, mg_position_code, mg_tel, mg_phone, mg_email
-- FROM manager
-- WHERE mg_state = 1 AND (@LG_IDX IS NULL OR mg_lg_idx = @LG_IDX)
-- ORDER BY mg_lg_idx, mg_idx;
