Newer
Older
task-bldg / src / main / java / osm / surveyor / task / city / CityController.java
  1. package osm.surveyor.task.city;
  2.  
  3. import org.springframework.data.domain.Sort;
  4. import org.springframework.stereotype.Controller;
  5. import org.springframework.ui.Model;
  6. import org.springframework.validation.BindingResult;
  7. import org.springframework.validation.annotation.Validated;
  8. import org.springframework.web.bind.annotation.GetMapping;
  9. import org.springframework.web.bind.annotation.ModelAttribute;
  10. import org.springframework.web.bind.annotation.PathVariable;
  11. import org.springframework.web.bind.annotation.PostMapping;
  12.  
  13. import lombok.RequiredArgsConstructor;
  14. import osm.surveyor.task.city.model.City;
  15.  
  16. @RequiredArgsConstructor
  17. @Controller
  18. public class CityController {
  19. private final CityRepository repository;
  20. @GetMapping("/city")
  21. public String showList(Model model) {
  22. model.addAttribute("cities", repository.findAll(Sort.by(Sort.Direction.ASC, "citycode")));
  23. return "cities";
  24. }
  25. @GetMapping("/city/add")
  26. public String addCity(@ModelAttribute City city) {
  27. return "form";
  28. }
  29. @PostMapping("/city/process")
  30. public String process(@Validated @ModelAttribute City city, BindingResult result) {
  31. if (result.hasErrors()) {
  32. return "form";
  33. }
  34.  
  35. repository.save(city);
  36. return "redirect:/city";
  37. }
  38.  
  39. @GetMapping("/city/edit/{citycode}")
  40. public String editCity(@PathVariable String citycode, Model model) {
  41. model.addAttribute("city", repository.findByCitycode(citycode));
  42. return "form";
  43. }
  44.  
  45. @GetMapping("/city/delete/{citycode}")
  46. public String deleteCity(@PathVariable String citycode) {
  47. repository.deleteByCitycode(citycode);
  48. return "redirect:/city";
  49. }
  50. }