package annotatedspring.episodes;
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.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.validation.Valid;
@Controller
public class EpisodesAdminController {
@Autowired
private EpisodesService episodesService;
@RequestMapping("/admin")
public String adminIndex(Model model) {
model.addAttribute("episodes", episodesService.all());
return "admin/index";
}
@RequestMapping(value = "/admin/episodes/new", method = RequestMethod.GET)
public String episodesNew(Model model) {
model.addAttribute("episode", new Episode());
return "admin/episodes/new";
}
@RequestMapping(value = "/admin/episodes", method = RequestMethod.POST)
public String episodeCreate(@Valid Episode episode, BindingResult result) {
if (result.hasErrors()) {
return "admin/episodes/new";
} else {
episode = episodesService.create(episode);
return "redirect:/episodes/" + episode.getId();
}
}
@RequestMapping(value = "/admin/episodes/{episodeId}/edit", method = RequestMethod.GET)
public String episodeEdit(@PathVariable("episodeId") Integer episodeId, Model model) {
model.addAttribute("episode", episodesService.find(episodeId));
return "admin/episodes/edit";
}
@RequestMapping(value = "/admin/episodes/{episodeId}", method = RequestMethod.PUT)
public String episodeUpdate(@PathVariable("episodeId") Integer episodeId, @Valid Episode episode, BindingResult result, Model model) {
episode.setId(episodeId);
if (result.hasErrors()) {
model.addAttribute("episode", episode);
return "admin/episodes/edit";
} else {
episodesService.update(episode);
return "redirect:/episodes/" + episode.getId();
}
}
}