package fi.otavanopisto.muikku.plugins.guidancerequest; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.inject.Inject; import fi.otavanopisto.muikku.model.users.UserEntity; import fi.otavanopisto.muikku.model.workspace.WorkspaceEntity; import fi.otavanopisto.muikku.plugins.guidancerequest.GuidanceRequest; import fi.otavanopisto.muikku.plugins.guidancerequest.WorkspaceGuidanceRequest; import fi.otavanopisto.muikku.plugins.wall.WallController; import fi.otavanopisto.muikku.plugins.wall.WallEntryProvider; import fi.otavanopisto.muikku.plugins.wall.WallFeedItem; import fi.otavanopisto.muikku.plugins.wall.model.UserWall; import fi.otavanopisto.muikku.plugins.wall.model.Wall; import fi.otavanopisto.muikku.plugins.wall.model.WallType; import fi.otavanopisto.muikku.plugins.wall.model.WorkspaceWall; import fi.otavanopisto.muikku.schooldata.WorkspaceController; import fi.otavanopisto.muikku.users.UserEntityController; public class GuidanceRequestWallEntryProvider implements WallEntryProvider { @Inject private WorkspaceController workspaceController; @Inject private UserEntityController userEntityController; @Inject private WallController wallController; @Inject private GuidanceRequestController guidanceRequestController; @Override public List<WallFeedItem> listWallEntryItems(Wall wall) { List<WallFeedItem> feedItems = new ArrayList<WallFeedItem>(); if (wall.getWallType() == WallType.WORKSPACE) { WorkspaceWall workspaceWall = wallController.findWorkspaceWallById(wall.getId()); WorkspaceEntity workspaceEntity = workspaceController.findWorkspaceEntityById(workspaceWall.getWorkspace()); // TODO: rights - workspace "manager" List<WorkspaceGuidanceRequest> requests = guidanceRequestController.listWorkspaceGuidanceRequestsByWorkspace(workspaceEntity); if (requests != null) { for (GuidanceRequest request : requests) { feedItems.add(new UserFeedGuidanceRequestItem(request)); } } } if (wall.getWallType() == WallType.USER) { UserWall userWall = wallController.findUserWallById(wall.getId()); UserEntity user = userEntityController.findUserEntityById(userWall.getUser()); List<GuidanceRequest> requests = guidanceRequestController.listGuidanceRequestsByStudent(user); for (GuidanceRequest request : requests) { // Skip workspace requests as they will be added while iterating workspace walls if (!(request instanceof WorkspaceGuidanceRequest)) feedItems.add(new UserFeedGuidanceRequestItem(request)); } List<GuidanceRequest> byManager = guidanceRequestController.listGuidanceRequestsByManager(user); if (byManager != null) { for (GuidanceRequest request : byManager) { feedItems.add(new UserFeedGuidanceRequestItem(request)); } } } return feedItems; } @Override public List<String> listRequiredJavaScripts() { return Arrays.asList( "scripts/gui/guidancerequest_wallentry.js" ); } }