package com.dbs.mplus.controller.mobile;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.dbs.mplus.MPlusConstants;
import com.dbs.mplus.exception.mobile.ApiCallException;
import com.dbs.mplus.exception.mobile.MobileControllerException;
import com.dbs.mplus.framework.FrameworkConstants;
import com.dbs.mplus.framework.exception.MPlusServiceException;
import com.dbs.mplus.framework.template.AbstractController;
import com.dbs.mplus.framework.util.ResponseUtil;
import com.dbs.mplus.service.api.MPlusApi;
import com.dbs.mplus.service.api.MPlusApiCallService;

@Controller
@RequestMapping("/mobile/user")
public class UserController extends AbstractController{
	private final Logger logger = LoggerFactory.getLogger(this.getClass());

	@Autowired 
	private MPlusApiCallService apiCallService; 

	/*	@Autowired 
	private MPUserService userService; 
	
	@Autowired
	private MessageService messageService; 
	@Autowired 
	private MPlusConfigureService configureService; */
	
	/**
	 * 사용자 첫 화면 업데이트
	 * @param request
	 * @param response
	 * @param reqMap
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/userinfo/updateUserSetup.json", method = RequestMethod.POST)
	public Map<String, Object> updateUserSetup(HttpServletRequest request, HttpServletResponse response,
			@RequestBody Map<String, Object> reqMap) throws MobileControllerException { 
		// 접근권한 및 파라미터 정리 
		try { 
			reqMap = super.isAccessableMenu(this.getClass(), request, reqMap); 
		}
		catch(MPlusServiceException ex) { 
			throw new MobileControllerException(ex.getCode(), ex.getMessage()); 
		} 
		
		// 실행 
		try { 
			reqMap.put("userid", reqMap.get("pId"));
			Map<String, Object> result = (Map<String, Object>) this.apiCallService.execute(MPlusApi.USER_USERINFO_UPDATEUSERSETUP, reqMap);
			
			// 세션에 사용자 정보 심기 
			final HttpSession session = request.getSession();
			// 인덱스 페이지 설정 값
			session.setAttribute(MPlusConstants.SESSION.INDEX_PAGE.getKey(), result.get("status"));	
			
			return ResponseUtil.wrapResultMap( result );
		}
		catch(ApiCallException ex) { 
			if(this.logger.isDebugEnabled()) {
				this.logger.debug("예외발생", ex); 
			}
			
			throw new MobileControllerException("mplus.error.if.system", "시스템 호출 오류가 발생했습니다 (IF)");
		}
	}

}