78 lines
2.7 KiB
Java
78 lines
2.7 KiB
Java
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<RegistrationBean>()); // 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";
|
|
}
|
|
}
|