/**
 * 이슈 유형 관리 컨트롤러
 *
 * 이슈 유형(카테고리/서브카테고리) CRUD API 엔드포인트 핸들러
 *
 * @author TK-FB-Project
 * @since 2025-12-11
 */

const issueTypeService = require('../services/issueTypeService');
const { asyncHandler } = require('../middlewares/errorHandler');

/**
 * 이슈 유형 생성
 */
exports.createIssueType = asyncHandler(async (req, res) => {
  const result = await issueTypeService.createIssueTypeService(req.body);

  res.status(201).json({
    success: true,
    data: result,
    message: '이슈 유형이 성공적으로 생성되었습니다'
  });
});

/**
 * 전체 이슈 유형 조회
 */
exports.getAllIssueTypes = asyncHandler(async (req, res) => {
  const rows = await issueTypeService.getAllIssueTypesService();

  res.json({
    success: true,
    data: rows,
    message: '이슈 유형 목록 조회 성공'
  });
});

/**
 * 이슈 유형 수정
 */
exports.updateIssueType = asyncHandler(async (req, res) => {
  const id = parseInt(req.params.id, 10);
  const result = await issueTypeService.updateIssueTypeService(id, req.body);

  res.json({
    success: true,
    data: result,
    message: '이슈 유형이 성공적으로 수정되었습니다'
  });
});

/**
 * 이슈 유형 삭제
 */
exports.removeIssueType = asyncHandler(async (req, res) => {
  const id = parseInt(req.params.id, 10);
  const result = await issueTypeService.removeIssueTypeService(id);

  res.json({
    success: true,
    data: result,
    message: '이슈 유형이 성공적으로 삭제되었습니다'
  });
});
