package com.mingsoft.job.action.web;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.mingsoft.job.action.JobBaseAction;
import com.mingsoft.job.biz.IFrontResumeBiz;
import com.mingsoft.job.entity.EducationEntity;
import com.mingsoft.job.entity.ResumeEntity;
import com.mingsoft.people.biz.IPeopleBiz;
import com.mingsoft.people.constant.e.CookieConstEnum;
import com.mingsoft.people.constant.e.SessionConstEnum;
import com.mingsoft.people.entity.PeopleEntity;

import net.mingsoft.basic.util.BasicUtil;

@Controller("webResumeMain")
@RequestMapping("/webResume")
public class FrontResumeAction extends JobBaseAction{

	
	@Autowired
	private IPeopleBiz peopleBiz;
	
	@Autowired
	private IFrontResumeBiz frontResumeBiz;
	
	
	/**
	 * 
	 * 个人简历管理页面，跳转前进行登录验证
	 * 
	 */
	@RequestMapping("/toResume")
	@ResponseBody
	public void toResume(HttpServletRequest request, HttpServletResponse response ){
		int appId = BasicUtil.getAppId();
		//判断是否已经登录，未登录则跳转登录页		
		PeopleEntity peopleSession = this.getPeopleBySession(request);
		if(null == peopleSession){//session失效
			this.outJson(response,null,false,"1");
			return;
		}		
		String peopleCookieStr = this.getCookie(request, CookieConstEnum.PEOPLE_COOKIE);
		if("".equals(peopleCookieStr) || null == peopleCookieStr){ //cookie失效
			this.outJson(response,null,false,"1");
			return;
		}
		JSONObject peopleCookieJson = (JSONObject) JSONObject.parse(peopleCookieStr);
		Integer cookiePeopleId = peopleCookieJson.getIntValue("peopleId");
		Integer sessionPeopleId = peopleSession.getPeopleId();
		if(cookiePeopleId == 0){
			this.outJson(response,null,false,"1");// 1返回登录页
			return;
		}
		if(cookiePeopleId != sessionPeopleId){
			this.outJson(response,null,false,"1");
			return;
		}
		//this.peopleBiz.getByPeople(peopleSession, appId);
		//根据peopleId查询简历基本信息，如果无记录，返回提示新增
		Map<String,Object> whereMap = BasicUtil.assemblyRequestMap();
		whereMap.put("peopleId", sessionPeopleId.intValue());
		List<ResumeEntity> resumeList = this.frontResumeBiz.query(whereMap,null,null);
		if(resumeList.size()>1){
			this.outJson(response,null,false,"2");//2 查询错误留在当前页
			return;
		}
		if(resumeList.size()==0){
			this.outJson(response,null,true,"3", sessionPeopleId.toString());//3"未创建简历，跳转到新增页 
			return;
		}
		//this.setSession(request, SessionConstEnum.RESUME_SESSION, resumeList.get(0));
		this.outJson(response,null,true,"4", sessionPeopleId.toString());//4已有记录，跳转编辑页 
		return;
	}
	
	@RequestMapping("/{peopleId}/editResume")
	public String editResume(@PathVariable("peopleId") String peopleId, HttpServletRequest request, HttpServletResponse response){
		request.setAttribute("peopleId", peopleId);
		Integer peopleIdInt = Integer.parseInt(peopleId);
		ResumeEntity resume = this.frontResumeBiz.getResumeByPeopleId(peopleIdInt);
		String filepath = resume.getFilepath();
		String serverpath = request.getServletContext().getRealPath(File.separator); 		
	    File  file = new File(serverpath+File.separator+filepath);  
	    if (file.isFile() && file.exists()) {  
	        //如果文件存在
	    	request.setAttribute("resume", resume);
	    	return "/WEB-INF/front/join/join-resume-edit";
	    }else{
	    	request.setAttribute("resume", resume);
			return "/WEB-INF/front/join/join-resume-index";
	    } 		
	}
	
/*	@RequestMapping("/{peopleId}/newResume")
	public String newResume(@PathVariable("peopleId") String peopleId, HttpServletRequest request, HttpServletResponse response){
		request.setAttribute("peopleId", peopleId);
		return "/WEB-INF/front/join/join-resume-index";
	}
		*/
	
	@RequestMapping("/{peopleId}/saveResumeBaseInfo")
	@ResponseBody
	public void saveResumeBaseInfo(@PathVariable("peopleId") String peopleId, HttpServletRequest request, HttpServletResponse response, ResumeEntity resume ){
		//验证身份
		if("".equals(peopleId) || null == peopleId){
			this.outJson(response,null,false,"用户信息获取失败，请重新登录");
			return;
		}
		PeopleEntity people = this.getPeopleBySession(request);
		if(null == people ){
			this.outJson(response, null,false,"session已过期，请重新登录");
			return;
		}else if(people.getPeopleId()==0 || people.getPeopleId() != Integer.parseInt(peopleId)){
			this.outJson(response, null,false, "登录已过期，请重新登录");
			return;
		}
		String filepath = (String) request.getAttribute("filepath");
		resume.setFilepath(filepath);
		resume.setUpdateDate(new Date());
		this.frontResumeBiz.updateEntity(resume);
		this.outJson(response,null, true, "保存成功");
		
	}
	
	
	@RequestMapping("/deleteResumeFile")
	@ResponseBody
	public void deleteResumeFile(HttpServletRequest request, HttpServletResponse response){
		String filepath = (String) request.getParameter("filepath");
		String resumeId = (String) request.getParameter("resumeId");
		String serverpath = request.getServletContext().getRealPath(File.separator); // 上传的文件路径
		boolean result = deleteFile(serverpath+File.separator+filepath);			
		if(result){
			filepath = "";
			//如果删除成功,更新简历表中的filepath字段
			this.frontResumeBiz.updateResumeFilepath(Integer.parseInt(resumeId), filepath, new Date());
			this.outJson(response, null, true);
		}else{
			this.outJson(response, null, false);
		}
	}
	
    /** 
     * 删除单个文件 
     * @param   sPath    被删除文件的文件名 
     * @return 单个文件删除成功返回true，否则返回false 
     */  
    private static  boolean deleteFile(String sPath) {  
        boolean flag = false;  
       File  file = new File(sPath);  
        // 路径为文件且不为空则进行删除  
        if (file.isFile() && file.exists()) {  
            file.delete();  
            flag = true;  
        }  
        return flag;  
    }
    
	@RequestMapping("/{peopleId}/toEducation")
	public String toEducation(@PathVariable("peopleId") String peopleId, HttpServletRequest request, HttpServletResponse response){
		request.setAttribute("peopleId", peopleId);
/*		Integer peopleIdInt = Integer.parseInt(peopleId);
		ResumeEntity resume = (ResumeEntity) this.getSession(request, SessionConstEnum.RESUME_SESSION);
		EducationEntity education = this.frontResumeBiz.getEducationByResumeId(resume.getResumeid());
		if(education == null){
			education = new EducationEntity();
		}
		request.setAttribute("education", education);*/
		return "/WEB-INF/front/join/join-resume-upload";
	}
	
	@RequestMapping("/{peopleId}/saveEduInfo")
	@ResponseBody
	public void saveEducation(@PathVariable("peopleId") String peopleId, HttpServletRequest request, HttpServletResponse response, EducationEntity education){
		//验证身份
		if("".equals(peopleId) || null == peopleId){
			this.outJson(response,null,false,"用户信息获取失败，请重新登录");
			return;
		}
		PeopleEntity people = this.getPeopleBySession(request);
		if(null == people ){
			this.outJson(response, null,false,"session已过期，请重新登录");
			return;
		}else if(people.getPeopleId()==0 || people.getPeopleId() != Integer.parseInt(peopleId)){
			this.outJson(response, null,false, "登录已过期，请重新登录");
			return;
		}
		
		ResumeEntity resume = (ResumeEntity) this.getSession(request, SessionConstEnum.RESUME_SESSION);
		education.setResumeid(resume.getResumeid());
		if(null == education.getCreatedatetime()){
			education.setCreatedatetime(new Date());
		}
		education.setUpdatedatetime(new Date());
		this.frontResumeBiz.saveEducation(education);
		this.outJson(response,null, true, "保存成功");
		
	}

}
