package fi.otavanopisto.muikku.plugins.evaluation;
import javax.ejb.Stateful;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.commons.lang3.StringUtils;
import org.ocpsoft.rewrite.annotation.Join;
import org.ocpsoft.rewrite.annotation.Matches;
import org.ocpsoft.rewrite.annotation.Parameter;
import org.ocpsoft.rewrite.annotation.RequestAction;
import fi.otavanopisto.muikku.jsf.NavigationRules;
import fi.otavanopisto.muikku.model.users.UserEntity;
import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity;
import fi.otavanopisto.muikku.schooldata.WorkspaceController;
import fi.otavanopisto.muikku.schooldata.WorkspaceEntityController;
import fi.otavanopisto.muikku.schooldata.entity.Workspace;
import fi.otavanopisto.muikku.session.SessionController;
import fi.otavanopisto.security.LoggedIn;
@Named
@Stateful
@RequestScoped
@Join(path = "/evaluation2", to = "/jsf/evaluation/main-view.jsf")
@LoggedIn
public class EvaluationMainViewBackingBean {
@Parameter ("workspaceEntityId")
@Matches ("[0-9]{1,}")
private Long workspaceEntityId;
private String workspaceName;
@Inject
private SessionController sessionController;
@Inject
private WorkspaceController workspaceController;
@Inject
private WorkspaceEntityController workspaceEntityController;
@RequestAction
public String init() {
UserEntity userEntity = sessionController.getLoggedUserEntity();
if (userEntity == null) {
return NavigationRules.ACCESS_DENIED;
}
WorkspaceEntity workspaceEntity = null;
if (workspaceEntityId != null) {
workspaceEntity = workspaceEntityController.findWorkspaceEntityById(workspaceEntityId);
if (workspaceEntity == null) {
return NavigationRules.NOT_FOUND;
}
Workspace workspace = workspaceController.findWorkspace(workspaceEntity);
if (workspace == null) {
return NavigationRules.NOT_FOUND;
}
setWorkspaceName(workspace.getName());
if (!StringUtils.isEmpty(workspace.getNameExtension())) {
setWorkspaceName(getWorkspaceName() + String.format(" (%s)", workspace.getNameExtension()));
}
}
if (workspaceEntity == null) {
if (!sessionController.hasEnvironmentPermission(EvaluationResourcePermissionCollection.EVALUATION_VIEW_INDEX)) {
return NavigationRules.ACCESS_DENIED;
}
}
else {
if (!sessionController.hasWorkspacePermission(EvaluationResourcePermissionCollection.EVALUATION_VIEW_INDEX, workspaceEntity)) {
return NavigationRules.ACCESS_DENIED;
}
}
return null;
}
public Long getWorkspaceEntityId() {
return workspaceEntityId;
}
public void setWorkspaceEntityId(Long workspaceEntityId) {
this.workspaceEntityId = workspaceEntityId;
}
public String getWorkspaceName() {
return workspaceName;
}
public void setWorkspaceName(String workspaceName) {
this.workspaceName = workspaceName;
}
}