package incheon.pack.map.web;

import incheon.com.cmm.api.DefaultApiResponse;
import incheon.pack.map.service.PackMapService;
import incheon.pack.map.vo.PackMapLayerVO;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/api/v1/pack/map")
@RequiredArgsConstructor
public class PackMapApiController {

    private static final int MAX_PAGE_SIZE = 500;

    private final PackMapService packMapService;

    @GetMapping("/layers")
    public DefaultApiResponse<List<PackMapLayerVO>> layers(PackMapLayerVO vo) {
        vo.setPageIndex(Math.max(1, vo.getPageIndex()));
        vo.setPageUnit(Math.min(Math.max(vo.getPageUnit(), 1), MAX_PAGE_SIZE));

        List<PackMapLayerVO> list = packMapService.selectLayerList(vo);
        int total = packMapService.selectLayerListTotCnt(vo);

        return DefaultApiResponse.success(list)
                .addMeta("page", vo.getPageIndex())
                .addMeta("size", vo.getPageUnit())
                .addMeta("total", total);
    }

    @GetMapping("/layers/groups")
    public DefaultApiResponse<List<PackMapLayerVO>> layerGroups() {
        return DefaultApiResponse.success(packMapService.selectLayerGroupList());
    }
}
