package com.takensoft.cms.menu.web;

import com.takensoft.cms.menu.service.MenuService;
import com.takensoft.cms.menu.vo.MenuRequest;
import com.takensoft.cms.menu.vo.MenuVO;
import com.takensoft.cms.menu.vo.SysMenuVO;
import com.takensoft.common.HierachyVO;
import com.takensoft.common.message.MessageCode;
import com.takensoft.common.util.ResponseData;
import com.takensoft.common.util.ResponseUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.List;
/**
 * @author takensoft
 * @since 2024.04.30
 * @modification
 *     since    |    author    | description
 *  2024.04.30  |  takensoft   | 최초 등록
 *
 * 메뉴 정보 관련 컨트롤러(사용자단용)
 */
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping(value = "/sys/menu")
public class SystemMenuController {

    private final MenuService menuService;
    private final ResponseUtil resUtil;
    /**
     * @author takensoft
     * @since 2024.04.30
     * @param
     * @return
     * @throws Exception
     *
     * 메뉴 조회(홈페이지 메뉴 조회용)
     */
    @PostMapping(value = "/findByMenu.json")
    public ResponseEntity<?> findByMenu(@RequestBody MenuRequest menuRequest) throws Exception {
        List<SysMenuVO> menuList = menuService.findByMenuWithRouter(menuRequest);
        HashMap<String, Object> result = new HashMap<>();
        result.put("menuList", menuList);

        // 응답 처리
        return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
    }

}
