package in.jmi.controller; import in.jmi.constants.Role; import in.jmi.model.User; import in.jmi.service.UserService; import java.util.ArrayList; import javax.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; 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 org.springframework.web.bind.annotation.RequestParam; @Controller public class UserController { @Autowired private UserService userService; @RequestMapping(value = "/user", params = "add", method = RequestMethod.GET) public String getAddUser(Model model) { ArrayList<Role> roles = new ArrayList<Role>(); // From user Add only admin and head of department can be added roles.add(Role.ADMIN); roles.add(Role.HEAD_OF_DEPARTMENT); model.addAttribute("roles", roles); model.addAttribute("user", new User()); return "user/add"; } @RequestMapping(value = "/user", params = "add", method = RequestMethod.POST) public String postAddUser(@ModelAttribute @Valid User user, BindingResult result, Model model) { System.out.println("result->has errors:-"+result.hasErrors()+" "+result); if (result.hasErrors()) { System.out.println(result.getAllErrors().toString()); ArrayList<Role> roles = new ArrayList<Role>(); roles.add(Role.ADMIN); roles.add(Role.HEAD_OF_DEPARTMENT); model.addAttribute("roles", roles); return "user/add"; } else { System.out.println("Inside postAddUser"); user = userService.save(user); return "redirect:user?id=" + user.getId(); } } @RequestMapping(value = "/user", method = RequestMethod.GET) public String postAddUser(@RequestParam("id") long id, Model model) { model.addAttribute("user", userService.findOne(id)); return "user/view"; } @RequestMapping(value = "/user", params = "edit", method = RequestMethod.GET) public String getEditUser(@RequestParam("id") long id, Model model) { model.addAttribute("user", userService.findOne(id)); ArrayList<Role> roles = new ArrayList<Role>(); roles.add(Role.ADMIN); roles.add(Role.HEAD_OF_DEPARTMENT); model.addAttribute("roles", roles); return "user/edit"; } @RequestMapping(value = "/user", params = "edit", method = RequestMethod.POST) public String postEditUser(@ModelAttribute @Valid User user, BindingResult result, Model model) { if (result.hasErrors()) { System.out.println(result.getAllErrors().toString()); ArrayList<Role> roles = new ArrayList<Role>(); roles.add(Role.ADMIN); roles.add(Role.HEAD_OF_DEPARTMENT); model.addAttribute("roles", roles); return "user/edit"; } else { User newUser = userService.findOne(user.getId()); newUser.setEmailAddress(user.getEmailAddress()); newUser.setName(user.getName()); newUser.setRole(user.getRole()); newUser = userService.update(newUser); // redirect to view page return "redirect:user?id=" + newUser.getId(); } } @RequestMapping(value = "/user", params = "delete", method = RequestMethod.POST) public String postDeleteUser(@RequestParam long id) { userService.delete(userService.findOne(id)); return "redirect:adminHome"; } }