package fi.otavanopisto.muikku.plugins.workspace; import java.util.List; 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.Parameter; import org.ocpsoft.rewrite.annotation.RequestAction; import fi.otavanopisto.muikku.jsf.NavigationRules; import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity; import fi.otavanopisto.muikku.model.workspace.WorkspaceRoleArchetype; import fi.otavanopisto.muikku.model.workspace.WorkspaceUserEntity; import fi.otavanopisto.muikku.schooldata.WorkspaceController; import fi.otavanopisto.muikku.security.MuikkuPermissions; import fi.otavanopisto.muikku.session.SessionController; import fi.otavanopisto.muikku.users.WorkspaceUserEntityController; import fi.otavanopisto.security.LoggedIn; @Named @Stateful @RequestScoped @Join(path = "/workspace/{workspaceUrlName}/archiveallstudents", to = "/jsf/workspace/archive-all-students.jsf") @LoggedIn public class WorkspaceArchiveAllStudentsBackingBean { @Inject private SessionController sessionController; @Parameter private String workspaceUrlName; @Inject private WorkspaceController workspaceController; @Inject private WorkspaceUserEntityController workspaceUserEntityController; @Inject @Named private WorkspaceBackingBean workspaceBackingBean; @RequestAction public String init() { String urlName = getWorkspaceUrlName(); if (StringUtils.isBlank(urlName)) { return NavigationRules.NOT_FOUND; } WorkspaceEntity workspaceEntity = workspaceController.findWorkspaceEntityByUrlName(urlName); if (workspaceEntity == null) { return NavigationRules.NOT_FOUND; } workspaceEntityId = workspaceEntity.getId(); workspaceBackingBean.setWorkspaceUrlName(urlName); if (!sessionController.hasWorkspacePermission(MuikkuPermissions.ARCHIVE_ALL_WORKSPACE_STUDENTS, workspaceEntity)) { return NavigationRules.NOT_FOUND; } List<WorkspaceUserEntity> students = workspaceUserEntityController.listWorkspaceUserEntitiesByRoleArchetype(workspaceEntity, WorkspaceRoleArchetype.STUDENT); for (WorkspaceUserEntity student : students) { workspaceUserEntityController.archiveWorkspaceUserEntity(student); } return String.format("/jsf/workspace/users.jsf?faces-redirect=true&workspaceUrlName=%s", workspaceUrlName); } public void setWorkspaceUrlName(String workspaceUrlName) { this.workspaceUrlName = workspaceUrlName; } public String getWorkspaceUrlName() { return workspaceUrlName; } public Long getWorkspaceEntityId() { return workspaceEntityId; } private Long workspaceEntityId; }