package go.kr.project.common.controller;

import go.kr.project.common.service.CommonHeaderService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;

@RequestMapping("/common/header")
@Controller
@RequiredArgsConstructor
@Slf4j
@Tag(name = "공통 헤더", description = "공통 헤더 관련 API")
public class CommonHeaderController {

    private final CommonHeaderService commonHeaderService;
    
    /**
     * 사이드바 상태를 세션에 저장하는 API
     * 
     * @param state 사이드바 상태 (collapsed, expanded, 또는 빈 문자열)
     * @param session HTTP 세션 객체
     * @return 응답 데이터
     */
    @PostMapping("/sidebar/state.ajax")
    @Operation(summary = "사이드바 상태 저장", description = "사이드바 상태를 세션에 저장합니다.")
    public ResponseEntity<Map<String, Object>> saveSidebarState(
            @Parameter(description = "사이드바 상태 (sidebar-collapse, 또는 빈 문자열)")
            @RequestParam(value = "state", required = false, defaultValue = "") String state,
            HttpSession session) {
        
        // 세션에 사이드바 상태 저장
        session.setAttribute("sidebarState", state);
        
        log.debug("사이드바 상태 저장: {}", state);
        
        // 응답 데이터 구성
        Map<String, Object> response = new HashMap<>();
        response.put("result", true);
        response.put("message", "사이드바 상태가 저장되었습니다.");
        
        return ResponseEntity.ok(response);
    }
}
