package com.jang.doc.controller;

import javax.annotation.Resource;
import javax.validation.Valid;

import org.springframework.dao.DataAccessException;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.jang.doc.model.User;
import com.jang.doc.service.UserService;

@Controller // ÄÄÆ÷³ÍÆ® ½ºÄµ¿¡ ÀÇÇÑ ÀÚµ¿ °´Ã¼ »ý¼º
public class EditController {
	@Resource(name = "userService")//ÀÇÁ¸°ü°è ÁÖÀÔ
	private UserService userService;//ÀÇÁ¸°ü°è ¼³Á¤
	
	@RequestMapping(value="/edit", method = RequestMethod.GET) //"/edit"¶ó´Â URLÀÌ¶û ´ÙÀ½¿¡ ¿À´Â ÇÔ¼ö¶û ¸ÅÇÎ½ÃÅ´, GET¹æ½Ä 
	public String toUserEditView(@RequestParam("userId") String userId, Model model) {//modelÀº ºó°¡¹æ
		try {
			User loginUser = this.userService.getUser(userId);
			model.addAttribute("user", loginUser);
			return "editForm";
		}
		catch(EmptyResultDataAccessException e) {
			model.addAttribute("user", new User());
			model.addAttribute("errMsg","»ç¿ëÀÚ°¡ µî·ÏµÇ¾îÀÖÁö ¾Ê½À´Ï´Ù.");
			return "loginForm";
		}
	}
	@RequestMapping(value="/edit", method = RequestMethod.POST)
	public String onSubmit( @Valid User user, BindingResult result, Model model)throws Exception {
		//System.out.println("");
		if (result.hasErrors()) {
			model.addAllAttributes(result.getModel());
			return "editFrom";
		}
		try {
			this.userService.updataUser(user);
			model.addAttribute("message","´ÙÀ½°ú °°ÀÌ »ç¿ëÀÚ Á¤º¸¸¦ ¼öÁ¤ÇÏ¿´½À´Ï´Ù.");
			model.addAttribute("user", user);
			return "joinSuccess";
		}
		catch (DataAccessException e) {
			model.addAttribute("errMsg","»ç¿ëÀÚÁ¤º¸ ¼öÁ¤¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.");
			return "editForm";
		
		}
	}
	
}
