Skip to content
Snippets Groups Projects
Commit 923c32d6 authored by Elena Uleia's avatar Elena Uleia
Browse files

Intermediate commit SetUp Project page

parent 7f9c6233
No related branches found
No related tags found
1 merge request!4Resolve "Move functionality from frontend to backend"
Pipeline #952408 passed with warnings
package server.controller;
import io.sentry.Sentry;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import server.csvconverter.CSVService;
import server.entity.Account;
import server.entity.StudentGroup;
import server.model.SetUpRequestDTO;
@Controller
......@@ -16,10 +36,11 @@ import server.model.SetUpRequestDTO;
@AllArgsConstructor
public class SetUpController {
private final CSVService csvService;
@GetMapping("/project")
public String getSetUpProject(@RequestParam("courseName") String courseName, @RequestParam("courseEdition") String courseEdition, Model model) {
public String getSetUpProject(@RequestParam("courseName") String courseName,
@RequestParam("courseEdition") String courseEdition, Model model) {
SetUpRequestDTO setUpRequestDTO = new SetUpRequestDTO();
setUpRequestDTO.setCourseName(courseName);
setUpRequestDTO.setCourseEdition(courseEdition);
......@@ -29,8 +50,29 @@ public class SetUpController {
@PostMapping("/groups")
public ModelAndView getSetUpGroups(@ModelAttribute SetUpRequestDTO setUpRequestDTO) {
ModelAndView modelAndView = new ModelAndView("setUpGroups");
modelAndView.addObject("setUpRequestDTO", setUpRequestDTO);
return modelAndView;
ModelAndView modelAndViewGroups = new ModelAndView("setUpGroups");
modelAndViewGroups.addObject("setUpRequestDTO", setUpRequestDTO);
return modelAndViewGroups;
}
/**
* API endpoint that receives a file and extracts its content.
* dynamically
*
* @return - redirect link to the upload page
*/
@PostMapping("/groups/saveCSV")
public ModelAndView uploadFile(@RequestParam("file") MultipartFile file, @RequestParam("spIndex") Integer spIndex, Model model) throws IOException {
String fileContent = new String(file.getBytes(), StandardCharsets.UTF_8);
SetUpRequestDTO setUpRequestDTO = (SetUpRequestDTO) model.getAttribute("setUpRequestDTO");
setUpRequestDTO.setFileContent(fileContent);
setUpRequestDTO.setSpIndex(spIndex);
ModelAndView modelAndViewTAs = new ModelAndView("setUpTAs");
modelAndViewTAs.addObject(setUpRequestDTO);
return modelAndViewTAs;
}
}
......@@ -28,8 +28,6 @@
<h1>Create Edition</h1>
<form th:action="@{/editions/createEdition}" th:object="${course}" method="post" enctype="multipart/form-data">
<div>Name</div>
<input type="text" placeholder="Course Name" th:field="*{name}">
<div>Description</div>
<input type="text" placeholder="Description" th:field="*{description}">
<div>Visibility</div>
......
......@@ -6,10 +6,35 @@
<title>setUpGroups</title>
</head>
<body>
<h1><strong>SetUp - </strong> <span th:text="${setUpRequestDTO.courseName}"></span><span th:text="${setUpRequestDTO.courseEdition}"></span></h1>
<p><strong>SetUp - </strong> <span th:text="${setUpRequestDTO.courseName}"> - </span><span th:text="${setUpRequestDTO.courseEdition}"></span></p>
<p><strong>SetUp - </strong> <span th:text="${setUpRequestDTO.forkPath}"> - </span><span th:text="${setUpRequestDTO.groupVisibility}"></span></p>
<p><strong>SetUp - </strong> <span th:text="${setUpRequestDTO.enableIndividualRepositories}"> - </span><span th:text="${setUpRequestDTO.groupVisibility}"></span></p>
<h2>Groups</h2>
<form method="post" th:action="@{/setUp/saveCSV}" enctype="multipart/form-data">
<div>Upload CSV</div>
<input type="file" name="file" th:name="file">
<div>Which column contains the groups?</div>
<input id="column_index_input" type="text" placeholder="Column" th:name="spIndex">
<input type="submit"/>
</form>
<!-- Add functionality for clusters -->
<h2>Clusters</h2>
<input type="checkbox" id="checkbox_cluster_groups"/>
<label for="checkbox_cluster_groups">Group groups into clusters</label>
<br/>
<div>Cluster size</div>
<input id="cluster_size_input" type="text" placeholder="Size">
......
......@@ -11,7 +11,7 @@
<body>
<div>
<p><strong>SetUp - </strong> <span th:text="${setUpRequestDTO.courseName}"> - </span><span th:text="${setUpRequestDTO.courseEdition}"></span></p>
<h1><strong>SetUp - </strong> <span th:text="${setUpRequestDTO.courseName}"></span><span th:text="${setUpRequestDTO.courseEdition}"></span></h1>
<form th:action="@{/setUp/groups}" th:object="${setUpRequestDTO}" method="post" enctype="multipart/form-data">
<div>Project visibility</div>
......@@ -31,7 +31,7 @@
<br/>
<input type="checkbox" id="checkbox_individual_repos" th:field="*{enableIndividualRepositories}" />
<label for="checkbox_individual_repos">Enable individual repositories</label><br>
<label for="checkbox_individual_repos">Enable individual repositories</label>
<input type="submit"/>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment