package com.jang.doc.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import javax.validation.Valid;

import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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.RequestMethod;

import com.jang.doc.model.User;
import com.jang.doc.service.UserService;

@Controller
public class LoginController {
	
	@Resource(name = "userService")//@Autowired ÀÇÁ¸°ü°è ÁÖÀÔ
	private UserService userService; //ÀÇÁ¸°ü°è ¼³Á¤
	
	@RequestMapping(value="/login", method = RequestMethod.GET)
	public String gotoLoginView(Model model,HttpSession session) {
		model.addAttribute("user", new User());
		return "loginForm";
	}
		@RequestMapping ( value="/login", method = RequestMethod.POST)
		public String onSubmit(@ModelAttribute @Valid User user, BindingResult result, Model model, HttpSession session) {
			
			if (result.hasFieldErrors("id")||result.hasFieldErrors("pass")) {
				model.addAllAttributes(result.getModel());
				return "loginForm";
				
			}
			try {
				User loginUser = this.userService.getUser(user.getId());
				
				if(user.getPass().equals(loginUser.getPass())) {
					model.addAttribute("loginUser",loginUser);
					session.setAttribute("userid",loginUser.getId()); //¼¼¼Ç¿¡ º¯¼öµî·Ï
					session.setAttribute("userName",loginUser.getName());//¼¼¼Ç¿¡ º¯¼öµî·Ï 
					return "loginSuccess";
				}
				else {
					model.addAttribute("errMsg", "ÆÐ½º¿öµå°¡ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù.");
					return "loginForm";
				}
			}
			catch (EmptyResultDataAccessException e) {
				model.addAttribute("errMsg" , "»ç¿ëÀÚ°¡ µî·ÏµÇ¾îÀÖÁö ¾Ê½À´Ï´Ù.");
				return "loginForm";
			
			}
			
		
		}
		
		
	}


