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
|
@Override
|
||||||
public Pair<SplittableStatus, Project> getSplittableStatus(int projectId) {
|
public Pair<SplittableStatus, Project> getSplittableStatus(long projectId) {
|
||||||
Project project = projectService.findOne(Long.valueOf(projectId));
|
Project project = projectService.findOne(projectId);
|
||||||
if (project == null)
|
if (project == null)
|
||||||
return new Pair<>(SplittableStatus.NOT_EXIST, null);
|
return new Pair<>(SplittableStatus.NOT_EXIST, null);
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ public class SplitOrRestartProjectServiceImpl implements SplitOrRestartProjectSe
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void splitProject(int projectId) {
|
public void splitProject(long projectId) {
|
||||||
Pair<SplittableStatus, Project> result = getSplittableStatus(projectId);
|
Pair<SplittableStatus, Project> result = getSplittableStatus(projectId);
|
||||||
if (result.getHead() != SplittableStatus.OK) {
|
if (result.getHead() != SplittableStatus.OK) {
|
||||||
throw new IllegalStateException("Project must to be verified to be able to split " +
|
throw new IllegalStateException("Project must to be verified to be able to split " +
|
||||||
|
@ -1,29 +1,40 @@
|
|||||||
package se.su.dsv.scipro.admin.pages;
|
package se.su.dsv.scipro.admin.pages;
|
||||||
|
|
||||||
|
import jakarta.inject.Inject;
|
||||||
import org.apache.wicket.behavior.AttributeAppender;
|
import org.apache.wicket.behavior.AttributeAppender;
|
||||||
import org.apache.wicket.markup.html.basic.Label;
|
import org.apache.wicket.markup.html.basic.Label;
|
||||||
import org.apache.wicket.markup.html.link.AbstractLink;
|
import org.apache.wicket.markup.html.link.AbstractLink;
|
||||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||||
import org.apache.wicket.markup.html.panel.Panel;
|
import org.apache.wicket.markup.html.panel.Panel;
|
||||||
import org.apache.wicket.model.IModel;
|
import org.apache.wicket.model.IModel;
|
||||||
|
import org.apache.wicket.model.LoadableDetachableModel;
|
||||||
import org.apache.wicket.model.Model;
|
import org.apache.wicket.model.Model;
|
||||||
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
import org.apache.wicket.request.mapper.parameter.PageParameters;
|
||||||
import se.su.dsv.scipro.project.Project;
|
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.security.auth.roles.Roles;
|
||||||
import se.su.dsv.scipro.session.SciProSession;
|
import se.su.dsv.scipro.session.SciProSession;
|
||||||
import se.su.dsv.scipro.util.PageParameterKeys;
|
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 {
|
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) {
|
public AdminSplitProjectPanel(String id, final IModel<Project> projectModel) {
|
||||||
super(id, projectModel);
|
super(id, projectModel);
|
||||||
|
|
||||||
Project project = projectModel.getObject();
|
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();
|
final PageParameters pp = new PageParameters();
|
||||||
pp.set(PageParameterKeys.MAP.get(Project.class), project.getId());
|
pp.set(PageParameterKeys.MAP.get(Project.class), project.getId());
|
||||||
@ -33,7 +44,7 @@ public class AdminSplitProjectPanel extends Panel {
|
|||||||
protected void onConfigure() {
|
protected void onConfigure() {
|
||||||
super.onConfigure();
|
super.onConfigure();
|
||||||
|
|
||||||
if (splittableStatus == SplittableStatus.OK) {
|
if (ldModel.getObject() == SplittableStatus.OK) {
|
||||||
setEnabled(true);
|
setEnabled(true);
|
||||||
this.add(new AttributeAppender("class", Model.of(" btn-success")));
|
this.add(new AttributeAppender("class", Model.of(" btn-success")));
|
||||||
} else {
|
} else {
|
||||||
@ -42,30 +53,10 @@ public class AdminSplitProjectPanel extends Panel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
add(splitProjectLink);
|
add(splitProjectLink);
|
||||||
|
|
||||||
if (splittableStatus == SplittableStatus.NOT_TWO_PARTICIPANTS) {
|
add(new Label("splitInfo", Model.of(ldModel.getObject() == SplittableStatus.OK ? "" :
|
||||||
add(new Label("splitInfo", Model.of("To be able to split a project, it needs to have 2 participants.")));
|
ldModel.getObject().getMessage())));
|
||||||
} 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -73,14 +64,4 @@ public class AdminSplitProjectPanel extends Panel {
|
|||||||
super.onConfigure();
|
super.onConfigure();
|
||||||
setVisibilityAllowed(SciProSession.get().authorizedForRole(Roles.ADMIN));
|
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