Project level and credits active participations and opposition #151

Merged
ansv7779 merged 4 commits from project-level-credits-participants-view into develop 2025-04-29 14:34:59 +02:00
3 changed files with 71 additions and 2 deletions
test-data/src/main/java/se/su/dsv/scipro/testdata/populators
view/src/main/java/se/su/dsv/scipro/finalseminar

@ -0,0 +1,53 @@
package se.su.dsv.scipro.testdata.populators;
import java.time.LocalDate;
import java.util.Date;
import org.springframework.stereotype.Service;
import se.su.dsv.scipro.finalseminar.FinalSeminar;
import se.su.dsv.scipro.finalseminar.FinalSeminarService;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.ProjectService;
import se.su.dsv.scipro.system.Language;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.testdata.BaseData;
import se.su.dsv.scipro.testdata.Factory;
import se.su.dsv.scipro.testdata.TestDataPopulator;
@Service
public class ProjectLevelTitleCredits implements TestDataPopulator {
private final ProjectService projectService;
private final FinalSeminarService finalSeminarService;
public ProjectLevelTitleCredits(ProjectService projectService, FinalSeminarService finalSeminarService) {
this.projectService = projectService;
this.finalSeminarService = finalSeminarService;
}
@Override
public void populate(BaseData baseData, Factory factory) {
// Participants
User author = factory.createAuthor("Beata");
User headSupervisor = factory.createSupervisor("Elsabet");
// Project
Project project = new Project();
project.setProjectType(baseData.bachelor());
project.setTitle("A bachelor thesis");
project.setCredits(15);
project.setResearchArea(baseData.researchArea().researchArea());
project.setHeadSupervisor(headSupervisor);
project.addProjectParticipant(author);
project.setStartDate(LocalDate.now().minusDays(1));
projectService.save(project);
// Seminar
FinalSeminar finalSeminar = new FinalSeminar();
finalSeminar.setProject(project);
finalSeminar.setStartDate(new Date());
finalSeminar.setRoom("Cyber Space");
finalSeminar.setPresentationLanguage(Language.SWEDISH);
finalSeminarService.save(finalSeminar);
}
}

@ -2,7 +2,11 @@
<html xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<h3>Final seminar for project: <span wicket:id="projectTitle">[Title]</span></h3>
<h3>Final seminar for project:
<span wicket:id="projectTitle">[Title]</span> (<span wicket:id="projectType"></span><wicket:enclosure>,
<span wicket:id="credits">30</span> hec</wicket:enclosure>)
</h3>
<br>
<div class="row">

@ -1,7 +1,7 @@
package se.su.dsv.scipro.finalseminar;
import jakarta.inject.Inject;
import java.util.*;
import java.util.Date;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
@ -18,6 +18,8 @@ import se.su.dsv.scipro.system.User;
public class SeminarPanel extends Panel {
public static final String PROJECT_TITLE = "projectTitle";
static final String PROJECT_TYPE = "projectType";
static final String CREDITS = "credits";
static final String CANCELLED = "cancelled";
static final String CRUD = "crud";
static final String CRUD_NOT_ALLOWED = "noCrud";
@ -69,6 +71,16 @@ public class SeminarPanel extends Panel {
);
add(new Label(PROJECT_TITLE, seminar.map(FinalSeminar::getProject).map(Project::getTitle)));
add(new Label(PROJECT_TYPE, seminar.map(FinalSeminar::getProject).map(Project::getProjectTypeName)));
add(
new Label(CREDITS, seminar.map(FinalSeminar::getProject).map(Project::getCredits)) {
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(seminar.getObject().getProject().getCredits() > 0);
}
}
);
add(new ScheduleFinalSeminarPanel("schedule", getProject()));
add(new SeminarCRUDPanel(CRUD, seminar));