package itn.let.cop.com.web;
import java.util.Map;
import egovframework.rte.fdl.property.EgovPropertyService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.LoginVO;
import itn.let.cop.com.service.BoardUseInf;
import itn.let.cop.com.service.BoardUseInfVO;
import itn.let.cop.com.service.EgovBBSUseInfoManageService;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
import org.springmodules.validation.commons.DefaultBeanValidator;
//SHT-CUSTOMIZING//import itn.let.cop.clb.service.ClubUser;
//SHT-CUSTOMIZING//import itn.let.cop.clb.service.EgovClubManageService;
//SHT-CUSTOMIZING//import itn.let.cop.cmy.service.CommunityUser;
//SHT-CUSTOMIZING//import itn.let.cop.cmy.service.EgovCommunityManageService;
//import egovframework.rte.fdl.cmmn.exception.EgovBizException;
/**
* 게시판의 이용정보를 관리하기 위한 컨트롤러 클래스
* @author 공통서비스개발팀 이삼섭
* @since 2009.04.02
* @version 1.0
* @see
*
*
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.04.02 이삼섭 최초 생성
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
*
*/
@Controller
public class EgovBBSUseInfoManageController {
@Resource(name = "EgovBBSUseInfoManageService")
private EgovBBSUseInfoManageService bbsUseService;
@Resource(name = "propertiesService")
protected EgovPropertyService propertyService;
//SHT-CUSTOMIZING//@Resource(name = "EgovCommunityManageService")
//SHT-CUSTOMIZING//private EgovCommunityManageService cmmntyService; // 커뮤니티 관리자 권한 확인
//SHT-CUSTOMIZING//@Resource(name = "EgovClubManageService")
//SHT-CUSTOMIZING//private EgovClubManageService clubService; // 동호회 운영자 권한 확인
@Autowired
private DefaultBeanValidator beanValidator;
/**
* 커뮤니티 관리자 및 동호회 운영자 권한을 확인한다.
*
* @param boardUseInf
* @throws EgovBizException
*/
//SHT-CUSTOMIZING//protected void checkAuthority(BoardUseInf boardUseInf) throws Exception {
//SHT-CUSTOMIZING//String targetId = boardUseInf.getTrgetId();
//SHT-CUSTOMIZING//LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
//SHT-CUSTOMIZING//if (user == null) {
//SHT-CUSTOMIZING//throw new EgovBizException("인증된 사용자 정보가 존재하지 않습니다.");
//SHT-CUSTOMIZING//}
//SHT-CUSTOMIZING//if (targetId.startsWith("CMMNTY_")) {
//SHT-CUSTOMIZING//CommunityUser cmmntyUser = new CommunityUser();
//SHT-CUSTOMIZING//cmmntyUser.setCmmntyId(boardUseInf.getTrgetId());
//SHT-CUSTOMIZING//cmmntyUser.setEmplyrId(user.getUniqId());
//SHT-CUSTOMIZING//if (!cmmntyService.isManager(cmmntyUser)) {
//SHT-CUSTOMIZING//throw new EgovBizException("해당 커뮤니티 관리자만 사용하실 수 있습니다.");
//SHT-CUSTOMIZING//}
//SHT-CUSTOMIZING//} else if (targetId.startsWith("CLB_")) {
//SHT-CUSTOMIZING//ClubUser clubUser = new ClubUser();
//SHT-CUSTOMIZING//clubUser.setClbId(boardUseInf.getTrgetId());
//SHT-CUSTOMIZING//clubUser.setEmplyrId(user.getUniqId());
//SHT-CUSTOMIZING//if (!clubService.isOperator(clubUser)) {
//SHT-CUSTOMIZING//throw new EgovBizException("해당 동호회 운영자만 사용하실 수 있습니다.");
//SHT-CUSTOMIZING//}
//SHT-CUSTOMIZING//} else {
//SHT-CUSTOMIZING//throw new EgovBizException("대상ID 정보가 정확하지 않습니다.");
//SHT-CUSTOMIZING//}
//SHT-CUSTOMIZING//}
/**
* 게시판 사용 정보를 삭제한다.
*
* @param bdUseVO
* @param bdUseInf
* @param sessionVO
* @param status
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/deleteBBSUseInf.do")
public String deleteBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("bdUseInf") BoardUseInf bdUseInf, SessionStatus status, ModelMap model)
throws Exception {
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if (isAuthenticated) {
bbsUseService.deleteBBSUseInf(bdUseInf);
}
return "forward:/cop/com/selectBBSUseInfs.do";
}
/**
* 게사판 사용정보 등록을 위한 등록페이지로 이동한다.
*
* @param bdUseVO
* @param sessionVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/addBBSUseInf.do")
public String addBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception {
return "cop/com/EgovBoardUseInfRegist";
}
/**
* 게시판 사용정보를 등록한다.
*
* @param bdUseVO
* @param bdUseInf
* @param sessionVO
* @param status
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/insertBBSUseInf.do")
public String insertBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf, BindingResult bindingResult,
@RequestParam Map commandMap, ModelMap model) throws Exception {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
beanValidator.validate(boardUseInf, bindingResult);
if (bindingResult.hasErrors()) {
return "cop/com/EgovBoardUseInfRegist";
}
String trgetType = (String) commandMap.get("param_trgetType");
String registSeCode = "";
// CMMNTY 06/CLUB 05/SYSTEM(REGC01)
if ("CMMNTY".equals(trgetType)) {
registSeCode = "REGC06";
} else if ("CLUB".equals(trgetType)) {
registSeCode = "REGC05";
} else {
registSeCode = "REGC01";
}
boardUseInf.setUseAt("Y");
boardUseInf.setFrstRegisterId(user.getUniqId());
boardUseInf.setRegistSeCode(registSeCode);
if (isAuthenticated) {
bbsUseService.insertBBSUseInf(boardUseInf);
}
return "forward:/cop/com/selectBBSUseInfs.do";
}
/**
* 게시판 사용정보 목록을 조회한다.
*
* @param bdUseVO
* @param sessionVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/selectBBSUseInfs.do")
public String selectBBSUseInfs(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception {
bdUseVO.setPageUnit(propertyService.getInt("pageUnit"));
bdUseVO.setPageSize(propertyService.getInt("pageSize"));
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(bdUseVO.getPageIndex());
paginationInfo.setRecordCountPerPage(bdUseVO.getPageUnit());
paginationInfo.setPageSize(bdUseVO.getPageSize());
bdUseVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
bdUseVO.setLastIndex(paginationInfo.getLastRecordIndex());
bdUseVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
Map map = bbsUseService.selectBBSUseInfs(bdUseVO);
int totCnt = Integer.parseInt((String) map.get("resultCnt"));
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("resultList", map.get("resultList"));
model.addAttribute("resultCnt", map.get("resultCnt"));
model.addAttribute("paginationInfo", paginationInfo);
return "cop/com/EgovBoardUseInfList";
}
/**
* 게시판 사용정보를 수정한다.
*
* @param bdUseVO
* @param bdUseInf
* @param sessionVO
* @param status
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/updateBBSUseInf.do")
public String updateBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf, HttpServletRequest request,
ModelMap model) throws Exception {
if (EgovUserDetailsHelper.isAuthenticated()) {
bbsUseService.updateBBSUseInf(boardUseInf);
}
return "forward:/cop/com/selectBBSUseInfs.do";
}
/**
* 게시판 사용정보에 대한 상세정보를 조회한다.
*
* @param bdUseVO
* @param sessionVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/selectBBSUseInf.do")
public String selectBBSUseInf(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception {
BoardUseInfVO vo = bbsUseService.selectBBSUseInf(bdUseVO);
// 시스템 사용 게시판의 경우 URL 표시
if ("SYSTEM_DEFAULT_BOARD".equals(vo.getTrgetId())) {
if (vo.getBbsTyCode().equals("BBST02")) { // 익명게시판
vo.setProvdUrl("/cop/bbs/anonymous/selectBoardList.do?bbsId=" + vo.getBbsId());
} else {
vo.setProvdUrl("/cop/bbs/selectBoardList.do?bbsId=" + vo.getBbsId());
}
}
model.addAttribute("bdUseVO", vo);
return "cop/com/EgovBoardUseInfInqire";
}
/**
* 커뮤니티, 동호회에 사용되는 게시판 사용정보에 대한 목록을 조회한다.
*
* @param bdUseVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/selectBBSUseInfsByTrget.do")
public String selectBBSUseInfsByTrget(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, ModelMap model) throws Exception {
//SHT-CUSTOMIZING//checkAuthority(bdUseVO); // server-side 권한 확인
bdUseVO.setPageUnit(propertyService.getInt("pageUnit"));
bdUseVO.setPageSize(propertyService.getInt("pageSize"));
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(bdUseVO.getPageIndex());
paginationInfo.setRecordCountPerPage(bdUseVO.getPageUnit());
paginationInfo.setPageSize(bdUseVO.getPageSize());
bdUseVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
bdUseVO.setLastIndex(paginationInfo.getLastRecordIndex());
bdUseVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
Map map = bbsUseService.selectBBSUseInfsByTrget(bdUseVO);
int totCnt = Integer.parseInt((String) map.get("resultCnt"));
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("resultList", map.get("resultList"));
model.addAttribute("resultCnt", map.get("resultCnt"));
model.addAttribute("trgetId", bdUseVO.getTrgetId());
model.addAttribute("trgetType", bdUseVO.getTrgetType());
model.addAttribute("paginationInfo", paginationInfo);
return "cop/com/EgovBdUseInfListByTrget";
}
/**
* 커뮤니티, 동호회에 사용되는 게시판 사용정보를 수정한다.
*
* @param bdUseVO
* @param boardUseInf
* @param status
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/updateBBSUseInfByTrget.do")
public String updateBBSUseInfByTrget(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf,
@RequestParam Map commandMap, SessionStatus status, ModelMap model) throws Exception {
//SHT-CUSTOMIZING//checkAuthority(bdUseVO); // server-side 권한 확인
String param_trgetId = (String) commandMap.get("param_trgetId");
//LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if (isAuthenticated) {
boardUseInf.setTrgetId(param_trgetId);
bbsUseService.updateBBSUseInfByTrget(boardUseInf);
}
return "forward:/cop/com/selectBBSUseInfsByTrget.do";
}
/**
* 커뮤니티, 동호회에 사용되는 게시판 사용정보를 등록한다.
*
* @param bdUseVO
* @param boardUseInf
* @param status
* @param model
* @return
* @throws Exception
*/
@RequestMapping("/cop/com/insertBBSUseInfByTrget.do")
public String insertBBSUseInfByTrget(@ModelAttribute("searchVO") BoardUseInfVO bdUseVO, @ModelAttribute("boardUseInf") BoardUseInf boardUseInf,
@RequestParam Map commandMap, SessionStatus status, ModelMap model) throws Exception {
//SHT-CUSTOMIZING//checkAuthority(bdUseVO); // server-side 권한 확인
String paramTrgetId = (String) commandMap.get("param_trgetId");
String bbsId = (String) commandMap.get("bbsId");
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if (isAuthenticated) {
boardUseInf.setUseAt("Y");
boardUseInf.setFrstRegisterId(user.getUniqId());
boardUseInf.setRegistSeCode("REGC07");
boardUseInf.setBbsId(bbsId);
boardUseInf.setTrgetId(paramTrgetId);
bbsUseService.insertBBSUseInf(boardUseInf);
}
return "forward:/cop/com/selectBBSUseInfsByTrget.do";
}
}