Newer
Older
task-bldg / src / main / java / osm / surveyor / task / city / TaskController.java
package osm.surveyor.task.city;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import lombok.RequiredArgsConstructor;
import osm.surveyor.task.city.model.CitymeshPK;
import osm.surveyor.task.city.model.Task;

@RequiredArgsConstructor
@Controller
public class TaskController {
	private final TaskRepository taskRepository;
	
	/**
	 * ログインユーザーが関係しているTASKリスト
	 * @param model
	 * @return
	 */
	@GetMapping("/tasks")
	public String showList(Model model) {
		model.addAttribute("tasks", taskRepository.findAll());
		return "tasks";
	}
	
	@GetMapping("/task")
	public String showTask(@RequestParam(name="citycode") String citycode,
			@RequestParam(name="meshcode") String meshcode, Model model) {
		CitymeshPK pk = new CitymeshPK();
		pk.setCitycode(citycode);
		pk.setMeshcode(meshcode);
		model.addAttribute("tasks", taskRepository.findById(pk));
		return "tasks";
	}
	
	@GetMapping("/task/add")
	public String addTask(@RequestParam(name="citycode") String citycode,
			@RequestParam(name="meshcode") String meshcode, @ModelAttribute Task task) {
		return "task";
	}
	
	@PostMapping("/task/process")
	public String process(@Validated @ModelAttribute Task task, BindingResult result) {
		if (result.hasErrors()) {
			return "task";
		}

		taskRepository.save(task);
		return "redirect:/tasks";
	}
}