package incheon.ags.ias.myAuthrtAplyHstry.web;

import incheon.ags.ias.myAuthrtAplyHstry.service.MyAuthrtAplyHstryService;
import incheon.ags.ias.myAuthrtAplyHstry.vo.MyAuthrtAplyHstrySearchVO;
import incheon.ags.ias.myAuthrtAplyHstry.vo.MyAuthrtAplyHstryVO;
import incheon.ags.ias.user.service.UserService;
import incheon.com.cmm.context.RequestContext;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

@Controller
@RequiredArgsConstructor
@Slf4j
public class MyAuthrtAplyHstryController {
    private final MyAuthrtAplyHstryService myAuthrtAplyHstryService;
    private final UserService userService;

    @GetMapping("/ags/ias/myAuthrtAplyHstry/myAuthrtAplyHstryList.do")
    public String myAuthrtAplyRegist(
            @RequestParam(defaultValue = "1") int page,
            @ModelAttribute MyAuthrtAplyHstrySearchVO searchVO,
            ModelMap model) throws Exception {

        // 현재 접속한 사용자 ID 설정
        String currentUserId = RequestContext.getCurrentUserId();


        searchVO.setUserId(currentUserId);
        searchVO.setPageIndex(page);

        PaginationInfo paginationInfo = new PaginationInfo();
        paginationInfo.setCurrentPageNo(page);
        paginationInfo.setRecordCountPerPage(searchVO.getRecordCountPerPage());
        paginationInfo.setPageSize(searchVO.getPageSize());

        searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
        searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
        searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());

        int totalCntResult = myAuthrtAplyHstryService.selectAuthrtAplyHstryTotalCnt(searchVO);
        paginationInfo.setTotalRecordCount(totalCntResult);

        List<Map<String,Object>> userRoleAplyList = myAuthrtAplyHstryService.selectMyRoleAplyList(searchVO);
        model.addAttribute("userRoleAplyList", userRoleAplyList);

        model.addAttribute("totalCount", totalCntResult);
        model.addAttribute("paginationInfo", paginationInfo);
        model.addAttribute("searchVO", searchVO);
        
        return "/ags/ias/myAuthrtAplyHstry/myAuthrtAplyHstryList";
    }

    @GetMapping("/ags/ias/myAuthrtAplyHstry/myAuthrtAplyHstryDetail.do")
    public String authrtAplyMngForm(ModelMap model,
            @RequestParam(value = "aplySn") Long aplySn) throws Exception {


        MyAuthrtAplyHstryVO myAuthrtAplyHstryVO = new MyAuthrtAplyHstryVO();

        myAuthrtAplyHstryVO.setAplySn(aplySn);

        MyAuthrtAplyHstryVO myRoleAplyDetail = myAuthrtAplyHstryService.selectUserMyRoleAplyDetail(myAuthrtAplyHstryVO);
        model.addAttribute("myRoleAplyDetail", myRoleAplyDetail);

        return "/ags/ias/myAuthrtAplyHstry/myAuthrtAplyHstryDetail";
    }

}
