package wifi.web.controller;
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import wifi.model.dao.DAO;
import wifi.model.data.Curso;
@Controller
@RequestMapping("/cursos")
public class CursosController {
@Autowired
private DAO<Curso> cursoJpaDAO;
@RequestMapping("/list")
@Transactional(readOnly=true)
public ModelAndView list() {
ModelAndView mv = new ModelAndView("cursos/list");
mv.addObject("cursos", cursoJpaDAO.listAll());
return mv;
}
@RequestMapping("/add")
public ModelAndView add() {
ModelAndView mv = new ModelAndView("cursos/form");
mv.addObject("action", "add");
return mv;
}
@RequestMapping("/edit/{id}")
public ModelAndView edit(@PathVariable Integer id) {
ModelAndView mv = null;
try {
mv = new ModelAndView("cursos/form");
mv.addObject("action", "edit");
Curso curso = cursoJpaDAO.read(new Curso(id, ""));
mv.addObject("curso", curso);
} catch (Exception e) {
mv = new ModelAndView("common/message");
mv.addObject("msg", new Message(MessageType.ERROR, e.getMessage()));
}
return mv;
}
@RequestMapping("/delete/{id}")
public ModelAndView delete(@PathVariable Integer id) {
ModelAndView mv = null;
try {
mv = new ModelAndView("cursos/form");
mv.addObject("action", "delete");
Curso curso = cursoJpaDAO.read(new Curso(id, ""));
mv.addObject("curso", curso);
} catch (Exception e) {
mv = new ModelAndView("common/message");
mv.addObject("msg", new Message(MessageType.ERROR, e.getMessage()));
}
return mv;
}
@Transactional
@RequestMapping("/save/{action}")
public ModelAndView save(@PathVariable String action, @Valid Curso curso, BindingResult bind) {
Message msg = null;
if (bind.hasFieldErrors()) {
msg = new Message(MessageType.ERROR, "Curso informado é inválido para esta operação!");
} else if ("add".equals(action)) {
cursoJpaDAO.create(curso);
msg = new Message(MessageType.INFO, "Curso incluido com sucesso!");
} else if ("edit".equals(action)) {
cursoJpaDAO.update(curso);
msg = new Message(MessageType.INFO, "Curso alterado com sucesso!");
} else if ("delete".equals(action)) {
cursoJpaDAO.delete(curso);
msg = new Message(MessageType.INFO, "Curso excluido com sucesso!");
} else {
msg = new Message(MessageType.ERROR, "Operação Inválida!");
}
ModelAndView mv = new ModelAndView("common/message");
mv.addObject("msg", msg);
mv.addObject("back", "/cursos/list");
return mv;
}
}