Skip to content
Snippets Groups Projects

Add division import

10 files
+ 432
13
Compare changes
  • Side-by-side
  • Inline

Files

@@ -25,12 +25,17 @@ import nl.tudelft.labracore.api.ModuleControllerApi;
import nl.tudelft.labracore.api.ModuleDivisionControllerApi;
import nl.tudelft.labracore.api.StudentGroupControllerApi;
import nl.tudelft.labracore.api.dto.*;
import nl.tudelft.portal.enums.DivisionImportError;
import nl.tudelft.portal.helper.ImportErrorMap;
import nl.tudelft.portal.service.DivisionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
@Controller
@RequestMapping("division")
@@ -45,6 +50,9 @@ public class DivisionController {
@Autowired
private StudentGroupControllerApi groupApi;
@Autowired
private DivisionService divisionService;
/**
* Gets a dvision.
*
@@ -108,4 +116,28 @@ public class DivisionController {
return "redirect:/module/" + moduleId;
}
/**
* Imports people to a division from a file.
*
* @param moduleId The id of the module
* @param file The file from which to import
* @param createUsers Whether to create non-existent users
* @param redirectAttributes The attributes passed to the redirected page
* @return The page to be loaded
*/
@PostMapping("import/{moduleId}")
@PreAuthorize("@authorisationService.hasModuleEditionAccess(#moduleId)")
public String importDivision(@PathVariable Long moduleId,
@RequestParam("file") MultipartFile file,
@RequestParam(value = "createUsers", required = false, defaultValue = "false") boolean createUsers,
RedirectAttributes redirectAttributes) {
ImportErrorMap<DivisionImportError> errors = divisionService.importDivision(moduleId, file,
createUsers);
if (!errors.isEmpty()) {
redirectAttributes.addAttribute("error", String.join("\n", errors.toErrorDescriptions()));
}
return "redirect:/module/{moduleId}";
}
}
Loading