package com.saye.hrs.controller.system;

import java.util.HashMap;

import com.saye.hrs.commons.JsonResult;
import com.saye.hrs.commons.date.DateDUtil;
import com.saye.hrs.commons.log.ExceptionDUtil;
import com.saye.hrs.commons.log.LogUtil;
import com.saye.hrs.commons.page.PageUtil;
import com.saye.hrs.commons.page.TemplatePage;
import com.saye.hrs.model.ServiceParams;
import com.saye.hrs.model.Users;
import com.saye.hrs.service.system.ServiceParamsService;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import javax.servlet.http.HttpServletRequest;

@Controller
public class ServiceParamsController {

	@Autowired
	private ServiceParamsService serviceParamsService;

	/**
	 * 
	 * @description 跳转到业务参数列表
	 * @author qfqi       
	 * @created 2019年12月18日 上午11:27:48 
	 * @param modelMap
	 * @return
	 */
	@RequestMapping("/toServiceParams")
	public String toServiceParams(ModelMap modelMap){
		
		return "system/serviceParams";
	}
	
	/**
	 * 
	 * @description 多条件查询业务参数列表
	 * @author qfqi       
	 * @created 2019年12月18日 上午11:35:20 
	 * @param paramName
	 * @param page
	 * @param limit
	 * @return
	 */
	@RequestMapping("/serviceParams/selectServiceParams")
	@ResponseBody
	public TemplatePage selectServiceParams(String paramName, Integer page, Integer limit){
		HashMap<String,String> map=new HashMap<String,String>();
		 map.put("paramName", paramName);
		
		PageHelper.startPage(page, limit);
		PageInfo<ServiceParams> appsPageInfo = new PageInfo<ServiceParams>(serviceParamsService.selectServiceParams(map));
		return PageUtil.loadJsonPage(appsPageInfo);
	}
	
	/**
	 * 
	 * @description 新增业务参数列表
	 * @author qfqi       
	 * @created 2019年12月18日 下午3:59:34 
	 * @param sp
	 * @return
	 */
	@RequestMapping("/serviceParams/insertServiceParams")
	@ResponseBody
	public JsonResult insertServiceParams(HttpServletRequest request, ServiceParams sp){
        
		int result=0;
		try {
			Users user = (Users) request.getSession().getAttribute("user");
			String userName = user.getUserName();
			String userTrueName = user.getTrueName();
			sp.setModifyUserName(userName);
			sp.setModifyTrueName(userTrueName);
			result = serviceParamsService.insertServiceParams(sp);
			LogUtil.debug(this.getClass(),"用户"+ user.getTrueName()+"新增业务参数列表：ServiceParams:"+sp.toString());
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			LogUtil.error(this.getClass(), "新增业务参数失败，原因:"+ ExceptionDUtil.getDetailExceptionMsg(e));
		}
		JsonResult j=new JsonResult();
		if(result>0){
			 j.setState(true);
			 j.setMessage("新增成功！");
		}else if(result==-1){
			 j.setState(false);
			 j.setMessage("参数编码已存在！");
		}else{
			j.setState(false);
			j.setMessage("新增失败！");
		}
		return j;
	}
	
	/**
	 * 
	 * @description  修改业务参数列表
	 * @author qfqi       
	 * @created 2019年12月18日 下午3:59:51 
	 * @param sp
	 * @return
	 */
	@RequestMapping("/serviceParams/updateServiceParams")
	@ResponseBody
	public JsonResult updateServiceParams(HttpServletRequest request,ServiceParams sp){
		int result=0;
		JsonResult j=new JsonResult();
		try {
			Users user = (Users) request.getSession().getAttribute("user");
			String userName = user.getUserName();
			String userTrueName = user.getTrueName();
			sp.setModifyUserName(userName);
			sp.setModifyTrueName(userTrueName);
			sp.setModifyTime(DateDUtil.getCurrentTime());
			
			// 进行判断，如果是修改的假期提醒时间则进行加入计时器
			if(sp.getParamCode().equals("HOLIDAY_REMINDER")){
				HashMap<String,String> map=new HashMap<String,String>();
				map.put("paramId", sp.getParamId());
				map.put("remindTime", sp.getParamVal().split("-")[0]);
				String regex="^(?:0|[0-2][0-9]?|30)$";
				if(sp.getParamVal().split("-")[0].matches(regex)){
					j.setState(false);
					j.setMessage("修改失败！提醒日期不能大于30或小于0");
					return j;
				}
			}
			result = serviceParamsService.updateServiceParams(sp);
			LogUtil.debug(this.getClass(),"用户"+ user.getTrueName()+"修改业务参数列表：ServiceParams:"+sp.toString());
		} catch (Exception e) {
			e.printStackTrace();
			LogUtil.error(this.getClass(), "修改业务参数失败，原因:"+ExceptionDUtil.getDetailExceptionMsg(e));
		}
		
		if(result>0){
			 j.setState(true);
			 j.setMessage("修改成功！");
		}else{
			j.setState(false);
			j.setMessage("修改失败！");
		}
		return j;
	}
	
	/**
	 * 
	 * @description  删除业务参数列表
	 * @author qfqi       
	 * @created 2019年12月18日 下午4:00:18 
	 * @param paramId
	 * @return
	 */
	@RequestMapping("/serviceParams/deleteServiceParams")
	@ResponseBody
	public JsonResult deleteServiceParams(String paramId){
		int result=0;
		try {
			Users user = (Users) SecurityUtils.getSubject().getPrincipal();
			result = serviceParamsService.deleteServiceParams(paramId);
			LogUtil.debug(this.getClass(),"用户"+ user.getTrueName()+"删除业务参数列表：paramId:"+paramId);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			LogUtil.error(this.getClass(), "删除业务参数失败，原因:"+ExceptionDUtil.getDetailExceptionMsg(e));
		}
		JsonResult j=new JsonResult();
		if(result>0){
			 j.setState(true);
			 j.setMessage("删除成功！");
		}else{
			j.setState(false);
			j.setMessage("删除失败！");
		}
		return j;
	}
	
}
