package com.zhiwei.manage.servlet;

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

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.zhiwei.manage.bean.JsonResult;
import com.zhiwei.manage.bean.PageEty;
import com.zhiwei.manage.bean.Person;
import com.zhiwei.manage.service.PersonService;

@Controller
public class PersonController {

	@Resource
	private PersonService personService;

	@RequestMapping(value = "/login", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String login(HttpServletRequest req, HttpServletResponse res,@RequestBody Map<String, Object> map) {
		boolean isRemember=(boolean) map.get("isRemember");
		String username=(String) map.get("username");
		String password=(String) map.get("password");
		Person p = personService.login(username, password);
		if (p != null) {
			Cookie cookie = new Cookie(username, username);
			res.addCookie(cookie);
			cookie.setMaxAge(1000 * 60 * 60);
			cookie.setPath("/");
			req.setAttribute("username", username);
			req.setAttribute("lv", p.getLv());
			p.setPassword("");
			JsonResult result = new JsonResult(true, 200, "登录成功", p);
			return JSON.toJSONString(result);
		} else {
			JsonResult result = new JsonResult(false, 200, "登录失败", "");
			return JSON.toJSONString(result);
		}
	}

	
	@RequestMapping(value = "/leave", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String leave(HttpServletRequest req, HttpServletResponse res, @RequestBody Map<String, Object> map) {
		String username=(String) map.get("username");
		Cookie[] cookies = req.getCookies();
		for (Cookie cookie : cookies) {
			if (cookie.getName().equals(username)) {
				Cookie ck = new Cookie(username, null);
				ck.setMaxAge(0);
			}
		}
		JsonResult result = new JsonResult(true, 200, "退出成功", "");
		return JSON.toJSONString(result);
	}

	@RequestMapping(value = "/getcookie", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String getCookie(HttpServletRequest req, HttpServletResponse res) {
		Cookie[] cookies = req.getCookies();
		String result = "";
		for (Cookie cookie : cookies) {
			result += cookie.getName() + ":" + cookie.getValue() + "\n";
		}
		return JSON.toJSONString(result);
	}


	@RequestMapping(value = "/getPerson", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String getPersonByUser(HttpServletResponse res, HttpServletRequest req,@RequestBody Map<String, Object> map) {
		String username=(String) map.get("username");
		int pageSize=(int) map.get("pageSize");
		int pageNo=(int) map.get("pageNo");
		int lv=(int) map.get("lv");
		if (username == null || username.equals("")) {
			PageEty page = personService.findAll(pageNo, pageSize,lv);
			JsonResult result = new JsonResult(true, 200, "获取成功", page);
			return JSON.toJSONString(result);
		} else {
			PageEty page = personService.findByUserName(username, pageNo, pageSize,lv);
			JsonResult result = new JsonResult(true, 200, "获取成功", page);
			return JSON.toJSONString(result);
		}
	}
	
	
	@RequestMapping(value = "/updatePerson", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String updatePerson(@RequestBody Person person){
		boolean b=personService.update(person);
		JsonResult result=new JsonResult(b?true:false, 200, b?"操作成功":"操作失败","");
		return JSON.toJSONString(result);
	}
	
	@RequestMapping(value = "/deletePerson", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String deletePerson(@RequestBody Map<String, Object> map){
		List<String> deleteList=(List<String>) map.get("personId");
		boolean b=personService.delete(deleteList);
		JsonResult result=new JsonResult(b?true:false, 200, b?"操作成功":"操作失败");
		return JSON.toJSONString(result);
	}
	
	@RequestMapping(value = "/savePerson", produces = "application/json;charset=utf-8")
	@ResponseBody
	public String savePerson(HttpServletRequest req,@RequestBody Person person){
		Cookie[] cookies = req.getCookies();
		for (Cookie cookie : cookies) {
			System.out.println(cookie.getName());
			if (cookie.getName().equals(person.getUsername())) {
				JsonResult result=new JsonResult(false, 200, "该用户在线，不允许删除");
				return JSON.toJSONString(result);
			}
		}
		boolean b=personService.insert(person);
		JsonResult result=new JsonResult(b?true:false, 200, "操作成功","");
		return JSON.toJSONString(result);
	}
	

}
