package fi.otavanopisto.muikku.plugins.workspace; import javax.annotation.PostConstruct; import javax.ejb.Stateful; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; import org.apache.commons.lang3.StringUtils; import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity; import fi.otavanopisto.muikku.model.workspace.WorkspaceUserEntity; import fi.otavanopisto.muikku.plugins.assessmentrequest.AssessmentRequestController; import fi.otavanopisto.muikku.plugins.assessmentrequest.WorkspaceAssessmentState; import fi.otavanopisto.muikku.plugins.forum.ForumResourcePermissionCollection; import fi.otavanopisto.muikku.schooldata.SchoolDataBridgeSessionController; import fi.otavanopisto.muikku.schooldata.WorkspaceController; import fi.otavanopisto.muikku.schooldata.entity.Workspace; import fi.otavanopisto.muikku.security.MuikkuPermissions; import fi.otavanopisto.muikku.session.SessionController; import fi.otavanopisto.muikku.session.local.LocalSession; import fi.otavanopisto.muikku.users.WorkspaceUserEntityController; @Named @Stateful @RequestScoped public class WorkspaceBackingBean { @Inject private WorkspaceController workspaceController; @Inject private WorkspaceUserEntityController workspaceUserEntityController; @LocalSession @Inject private SessionController sessionController; @Inject private AssessmentRequestController assessmentRequestController; @Inject private WorkspaceToolSettingsController workspaceToolSettingsController; @Inject private SchoolDataBridgeSessionController schoolDataBridgeSessionController; @PostConstruct public void init() { homeVisible = true; guidesVisible = true; materialsVisible = true; discussionsVisible = true; usersVisible = true; journalVisible = true; workspaceEntityId = null; assessmentState = null; } public String getWorkspaceUrlName() { return workspaceUrlName; } @Deprecated public Long getWorkspaceId() { return workspaceEntityId; } public Long getWorkspaceEntityId() { return workspaceEntityId; } public WorkspaceEntity getWorkspaceEntity() { if (getWorkspaceEntityId() == null) { return null; } return workspaceController.findWorkspaceEntityById(getWorkspaceEntityId()); } public void setWorkspaceUrlName(String workspaceUrlName) { WorkspaceEntity workspaceEntity = resolveWorkspaceEntity(workspaceUrlName); if (workspaceEntity != null) { this.workspaceEntityId = workspaceEntity.getId(); this.workspaceUrlName = workspaceEntity.getUrlName(); } homeVisible = workspaceToolSettingsController.getToolVisible(workspaceEntity, "home"); guidesVisible = workspaceToolSettingsController.getToolVisible(workspaceEntity, "guides"); materialsVisible = workspaceToolSettingsController.getToolVisible(workspaceEntity, "materials"); discussionsVisible = sessionController.hasWorkspacePermission(ForumResourcePermissionCollection.FORUM_ACCESSWORKSPACEFORUMS, workspaceEntity) && workspaceToolSettingsController.getToolVisible(workspaceEntity, "discussions"); usersVisible = sessionController.hasWorkspacePermission(MuikkuPermissions.MANAGE_WORKSPACE_MEMBERS, workspaceEntity) && workspaceToolSettingsController.getToolVisible(workspaceEntity, "users"); journalVisible = sessionController.hasWorkspacePermission(MuikkuPermissions.ACCESS_WORKSPACE_JOURNAL, workspaceEntity) && workspaceToolSettingsController.getToolVisible(workspaceEntity, "journal"); // Assessment state if (sessionController.isLoggedIn() && sessionController.hasWorkspacePermission(MuikkuPermissions.REQUEST_WORKSPACE_ASSESSMENT, workspaceEntity)) { WorkspaceUserEntity workspaceUserEntity = workspaceUserEntityController.findWorkspaceUserByWorkspaceEntityAndUserIdentifier(workspaceEntity, sessionController.getLoggedUser()); if (workspaceUserEntity != null) { WorkspaceAssessmentState workspaceAssessmentState = assessmentRequestController.getWorkspaceAssessmentState(workspaceUserEntity); this.assessmentState = workspaceAssessmentState == null ? null : workspaceAssessmentState.getStateName(); } } else { this.assessmentState = null; } schoolDataBridgeSessionController.startSystemSession(); try { Workspace workspace = workspaceController.findWorkspace(workspaceEntity); if (workspace != null) { this.workspaceName = workspace.getName(); this.workspaceNameExtension = workspace.getNameExtension(); } } finally { schoolDataBridgeSessionController.endSystemSession(); } } private WorkspaceEntity resolveWorkspaceEntity(String workspaceUrlName) { if (StringUtils.isBlank(workspaceUrlName)) { return null; } WorkspaceEntity workspaceEntity = workspaceController.findWorkspaceEntityByUrlName(workspaceUrlName); if (workspaceEntity == null) { return null; } return workspaceEntity; } public String getAssessmentState() { return this.assessmentState; } public boolean getHomeVisible() { return homeVisible; } public boolean isGuidesVisible() { return guidesVisible; } public boolean isMaterialsVisible() { return materialsVisible; } public boolean isDiscussionsVisible() { return discussionsVisible; } public boolean isUsersVisible() { return usersVisible; } public boolean isJournalVisible() { return journalVisible; } public String getWorkspaceName() { return workspaceName; } public String getWorkspaceNameExtension() { return workspaceNameExtension; } private Long workspaceEntityId; private String workspaceUrlName; private String workspaceName; private String workspaceNameExtension; private boolean homeVisible; private boolean guidesVisible; private boolean materialsVisible; private boolean discussionsVisible; private boolean usersVisible; private boolean journalVisible; private String assessmentState; }