-- 009_items_user_permissions.sql
-- v0.3 (2026-04-27)
-- 1) MASTER_PWD 백도어 제거 (코드 변경, DB 작업 없음)
-- 2) plm_admin → admin 으로 user_id 변경, 비밀번호 '1' (AES 암호화) 재설정
-- 3) 모모유통 임직원 6명 등록 (user_type='A', 비밀번호 'momo2026##')
-- 4) 거래처(user_type='C')는 보존, 그 외 FITO 레거시 인사정보는 일괄 삭제
-- 5) momo_items 에 max_order_qty, is_hidden 컬럼 추가
-- 6) user_info 에 unlimited_qty, view_hidden 컬럼 추가 (거래처 권한)

BEGIN;

-- ─────────────────────────────────────────────────────────────────
-- 1. plm_admin → admin 으로 user_id 변경 + 비밀번호 '1' 재설정
-- ─────────────────────────────────────────────────────────────────
-- 기존 admin user_id 가 이미 있을 수 있으니 먼저 확인 후 처리
DO $$
BEGIN
  IF EXISTS (SELECT 1 FROM user_info WHERE user_id = 'plm_admin') THEN
    -- 동시에 admin 이 이미 있으면 plm_admin 만 삭제
    IF EXISTS (SELECT 1 FROM user_info WHERE user_id = 'admin') THEN
      DELETE FROM user_info WHERE user_id = 'plm_admin';
    ELSE
      UPDATE user_info
         SET user_id = 'admin',
             user_password = 'i8+4uUD3yNGbj6Lz1er20A==',
             user_type = 'A',
             user_type_name = '관리자',
             status = 'active'
       WHERE user_id = 'plm_admin';
    END IF;
  END IF;
END $$;

-- 그래도 admin 이 없으면 신규 INSERT
INSERT INTO user_info (user_id, user_password, user_name, user_type, user_type_name, status, regdate)
SELECT 'admin', 'i8+4uUD3yNGbj6Lz1er20A==', '시스템 관리자', 'A', '관리자', 'active', NOW()
WHERE NOT EXISTS (SELECT 1 FROM user_info WHERE user_id = 'admin');

-- admin 비밀번호는 항상 '1' 로 재설정 (이미 존재하던 admin 도 통일)
UPDATE user_info
   SET user_password = 'i8+4uUD3yNGbj6Lz1er20A==',
       user_type = 'A',
       user_type_name = '관리자',
       status = 'active'
 WHERE user_id = 'admin';

-- ─────────────────────────────────────────────────────────────────
-- 2. 모모유통 임직원 6명 등록 (UPSERT)
-- ─────────────────────────────────────────────────────────────────
INSERT INTO user_info
  (user_id, user_password, user_name, position_name, cell_phone, email,
   user_type, user_type_name, status, regdate)
VALUES
  ('momo8443','95sOzM8nDQRukpt02Uxuaw==','이상용','대표',          '010-6369-8443','momo8443@daum.net',  'A','관리자','active',NOW()),
  ('momo5826','95sOzM8nDQRukpt02Uxuaw==','이윤정','총괄이사',      '010-4082-5826','momo8443@daum.net',  'A','관리자','active',NOW()),
  ('momo5315','95sOzM8nDQRukpt02Uxuaw==','배연진','경영팀장',      '010-6624-5315','momo8443@daum.net',  'A','관리자','active',NOW()),
  ('momo9431','95sOzM8nDQRukpt02Uxuaw==','강상익','김포지사 총괄', '010-5789-9431','momokimpo@nate.com', 'A','관리자','active',NOW()),
  ('momo4763','95sOzM8nDQRukpt02Uxuaw==','이효철','물류총괄',      '010-4104-4763','momo8443@daum.net',  'A','관리자','active',NOW()),
  ('momo7529','95sOzM8nDQRukpt02Uxuaw==','유우형','물류팀장',      '010-4134-7529','momo8443@daum.net',  'A','관리자','active',NOW())
ON CONFLICT (user_id) DO UPDATE SET
  user_password  = EXCLUDED.user_password,
  user_name      = EXCLUDED.user_name,
  position_name  = EXCLUDED.position_name,
  cell_phone     = EXCLUDED.cell_phone,
  email          = EXCLUDED.email,
  user_type      = EXCLUDED.user_type,
  user_type_name = EXCLUDED.user_type_name,
  status         = EXCLUDED.status;

-- ─────────────────────────────────────────────────────────────────
-- 3. (DISABLED) 과거: 거래처(C) + admin + 모모6인 외 모든 사용자 삭제하던 정리 쿼리.
--    user_type 을 'C' → 'U' 로 통합한 뒤로 'U' 거래처 134명이 매 배포마다 삭제되는
--    심각한 데이터 손실이 발생해서 비활성화함. 마이그레이션은 반드시 idempotent 해야 하므로
--    destructive 구문은 두지 않는다.
-- ─────────────────────────────────────────────────────────────────

-- ─────────────────────────────────────────────────────────────────
-- 4. momo_items 컬럼 추가: 발주 제한수량 + 숨김처리
-- ─────────────────────────────────────────────────────────────────
ALTER TABLE momo_items
  ADD COLUMN IF NOT EXISTS max_order_qty INTEGER,
  ADD COLUMN IF NOT EXISTS is_hidden     CHAR(1) NOT NULL DEFAULT 'N';

COMMENT ON COLUMN momo_items.max_order_qty IS '1회 발주 최대 수량 (NULL/0 = 제한 없음)';
COMMENT ON COLUMN momo_items.is_hidden     IS '숨김 처리 (Y/N) — Y이면 view_hidden 권한 회원에게만 노출';

-- ─────────────────────────────────────────────────────────────────
-- 5. user_info 컬럼 추가: 거래처 특수 권한
-- ─────────────────────────────────────────────────────────────────
ALTER TABLE user_info
  ADD COLUMN IF NOT EXISTS unlimited_qty CHAR(1) NOT NULL DEFAULT 'N',
  ADD COLUMN IF NOT EXISTS view_hidden   CHAR(1) NOT NULL DEFAULT 'N';

COMMENT ON COLUMN user_info.unlimited_qty IS '제한수량 해지 권한 (Y/N) — Y이면 max_order_qty 무시';
COMMENT ON COLUMN user_info.view_hidden   IS '숨김처리 보기 권한 (Y/N) — Y이면 is_hidden=Y 품목도 노출';

COMMIT;
