package de.jottyfan.bico.modules.camp; import java.security.Principal; import java.util.ArrayList; 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.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import de.jottyfan.bico.db.camp.enums.EnumSex; import de.jottyfan.bico.modules.CommonController; import de.jottyfan.bico.modules.camp.model.RegistrationBean; import jakarta.validation.Valid; /** * * @author jotty * */ @Controller public class RegistrationController extends CommonController { @Autowired private RegistrationService service; @GetMapping("/camp/registration") public String loadForm(Model model, Principal principal) { model.addAttribute("registrations", service.getRegistrations(principal)); model.addAttribute("bean", RegistrationBean.withAllDays()); model.addAttribute("sexes", EnumSex.values()); model.addAttribute("ages", service.getAges()); return "/camp/registration"; } @PostMapping("/camp/registration/submit") public String submitAddForm(@Valid @ModelAttribute("bean") RegistrationBean bean, BindingResult bindingResult, Model model, Principal principal) { if (bindingResult.hasErrors()) { model.addAttribute("registrations", new ArrayList()); // hack to make "Neue Anmeldung" appear model.addAttribute("sexes", EnumSex.values()); model.addAttribute("ages", service.getAges()); return "/camp/registration"; } service.save(bean, principal); return "redirect:/camp/registration"; } @GetMapping("/camp/registration/edit/{id}") public String loadEditForm(@PathVariable("id") Integer id, Model model, Principal principal) { model.addAttribute("bean", service.getBeanOfPrincipal(id, principal)); model.addAttribute("sexes", EnumSex.values()); model.addAttribute("ages", service.getAges()); return "/camp/edit"; } @GetMapping("/camp/registration/delete/{id}") public String delete(@PathVariable("id") Integer id, Model model, Principal principal) { service.delete(id, principal); return "redirect:/camp/registration"; } @PostMapping("/camp/registration/correct") public String submitEditForm(@Valid @ModelAttribute("bean") RegistrationBean bean, BindingResult bindingResult, Model model, Principal principal) { if (bindingResult.hasErrors()) { model.addAttribute("sexes", EnumSex.values()); return "/camp/registration"; } service.save(bean, principal); return "redirect:/camp/registration"; } }