87: Use service method in AdminSplitProjectPanel
This commit is contained in:
parent
e59178a540
commit
f2e19b686d
core/src/main/java/se/su/dsv/scipro/project/split
view/src/main/java/se/su/dsv/scipro/admin/pages
@ -23,7 +23,7 @@ public interface SplitOrRestartProjectService {
|
||||
}
|
||||
}
|
||||
|
||||
Pair<SplittableStatus, Project> getSplittableStatus(int projectId);
|
||||
Pair<SplittableStatus, Project> getSplittableStatus(long projectId);
|
||||
|
||||
void splitProject(int projectId);
|
||||
void splitProject(long projectId);
|
||||
}
|
||||
|
@ -22,8 +22,8 @@ public class SplitOrRestartProjectServiceImpl implements SplitOrRestartProjectSe
|
||||
}
|
||||
|
||||
@Override
|
||||
public Pair<SplittableStatus, Project> getSplittableStatus(int projectId) {
|
||||
Project project = projectService.findOne(Long.valueOf(projectId));
|
||||
public Pair<SplittableStatus, Project> getSplittableStatus(long projectId) {
|
||||
Project project = projectService.findOne(projectId);
|
||||
if (project == null)
|
||||
return new Pair<>(SplittableStatus.NOT_EXIST, null);
|
||||
|
||||
@ -43,7 +43,7 @@ public class SplitOrRestartProjectServiceImpl implements SplitOrRestartProjectSe
|
||||
}
|
||||
|
||||
@Override
|
||||
public void splitProject(int projectId) {
|
||||
public void splitProject(long projectId) {
|
||||
Pair<SplittableStatus, Project> result = getSplittableStatus(projectId);
|
||||
if (result.getHead() != SplittableStatus.OK) {
|
||||
throw new IllegalStateException("Project must to be verified to be able to split " +
|
||||
|
@ -1,29 +1,40 @@
|
||||
package se.su.dsv.scipro.admin.pages;
|
||||
|
||||
import jakarta.inject.Inject;
|
||||
import org.apache.wicket.behavior.AttributeAppender;
|
||||
import org.apache.wicket.markup.html.basic.Label;
|
||||
import org.apache.wicket.markup.html.link.AbstractLink;
|
||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||
import org.apache.wicket.markup.html.panel.Panel;
|
||||
import org.apache.wicket.model.IModel;
|
||||
import org.apache.wicket.model.LoadableDetachableModel;
|
||||
import org.apache.wicket.model.Model;
|
||||
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||
import se.su.dsv.scipro.project.Project;
|
||||
import se.su.dsv.scipro.project.ProjectStatus;
|
||||
import se.su.dsv.scipro.project.split.SplitOrRestartProjectService;
|
||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
||||
import se.su.dsv.scipro.session.SciProSession;
|
||||
import se.su.dsv.scipro.util.PageParameterKeys;
|
||||
import se.su.dsv.scipro.util.Pair;
|
||||
|
||||
import static se.su.dsv.scipro.project.split.SplitOrRestartProjectService.SplittableStatus;
|
||||
|
||||
public class AdminSplitProjectPanel extends Panel {
|
||||
private enum SplittableStatus {
|
||||
NOT_ACTIVE, NOT_TWO_PARTICIPANTS, FINAL_SEMINAR_PHASE_STARTED, OK
|
||||
}
|
||||
|
||||
@Inject
|
||||
private SplitOrRestartProjectService splitOrRestartProjectService;
|
||||
|
||||
public AdminSplitProjectPanel(String id, final IModel<Project> projectModel) {
|
||||
super(id, projectModel);
|
||||
|
||||
Project project = projectModel.getObject();
|
||||
SplittableStatus splittableStatus = getSplitStatus(project);
|
||||
|
||||
LoadableDetachableModel<SplittableStatus> ldModel = LoadableDetachableModel.of(
|
||||
() -> {
|
||||
Pair<SplittableStatus, Project > pair = splitOrRestartProjectService.getSplittableStatus(project.getId());
|
||||
return pair.getHead();
|
||||
}
|
||||
);
|
||||
|
||||
final PageParameters pp = new PageParameters();
|
||||
pp.set(PageParameterKeys.MAP.get(Project.class), project.getId());
|
||||
@ -33,7 +44,7 @@ public class AdminSplitProjectPanel extends Panel {
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
|
||||
if (splittableStatus == SplittableStatus.OK) {
|
||||
if (ldModel.getObject() == SplittableStatus.OK) {
|
||||
setEnabled(true);
|
||||
this.add(new AttributeAppender("class", Model.of(" btn-success")));
|
||||
} else {
|
||||
@ -42,30 +53,10 @@ public class AdminSplitProjectPanel extends Panel {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
add(splitProjectLink);
|
||||
|
||||
if (splittableStatus == SplittableStatus.NOT_TWO_PARTICIPANTS) {
|
||||
add(new Label("splitInfo", Model.of("To be able to split a project, it needs to have 2 participants.")));
|
||||
} else if (splittableStatus == SplittableStatus.NOT_ACTIVE) {
|
||||
add(new Label("splitInfo", Model.of("Only active project can be split.")));
|
||||
} else {
|
||||
add(new Label("splitInfo", Model.of("")));
|
||||
}
|
||||
|
||||
/*
|
||||
Label splitInfoLabel = new Label("splitInfoLabel", dsModel) {
|
||||
@Override
|
||||
protected void onConfigure() {
|
||||
super.onConfigure();
|
||||
|
||||
Project attachedProject = dsModel.getObject();
|
||||
if (attachedProject.getProjectParticipants().size() < 2) {
|
||||
this
|
||||
}
|
||||
}
|
||||
};
|
||||
*/
|
||||
add(new Label("splitInfo", Model.of(ldModel.getObject() == SplittableStatus.OK ? "" :
|
||||
ldModel.getObject().getMessage())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -73,14 +64,4 @@ public class AdminSplitProjectPanel extends Panel {
|
||||
super.onConfigure();
|
||||
setVisibilityAllowed(SciProSession.get().authorizedForRole(Roles.ADMIN));
|
||||
}
|
||||
|
||||
private SplittableStatus getSplitStatus(final Project project) {
|
||||
if (project.getProjectParticipants().size() != 2) {
|
||||
return SplittableStatus.NOT_TWO_PARTICIPANTS;
|
||||
} else if (project.getProjectStatus() != ProjectStatus.ACTIVE) {
|
||||
return SplittableStatus.NOT_ACTIVE;
|
||||
} else {
|
||||
return SplittableStatus.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user