package net.techreadiness.plugin.action; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; import javax.inject.Inject; import net.techreadiness.navigation.taskflow.org.OrgTaskFlowData; import net.techreadiness.navigation.taskflow.org.dataentry.DataEntryTaskFlowDefinition; import net.techreadiness.navigation.taskflow.org.survey.SurveyQuestionsTaskFlowDefinition; import net.techreadiness.persistence.criteriaquery.QueryResult; import net.techreadiness.plugin.service.SnapshotWindowService; import net.techreadiness.plugin.service.object.SnapshotWindow; import net.techreadiness.plugin.service.reports.MinimumRecommendedFlag; import net.techreadiness.plugin.service.reports.ReportsService; import net.techreadiness.service.OrganizationService; import net.techreadiness.service.exception.ServiceException; import net.techreadiness.service.object.Org; import net.techreadiness.ui.BaseAction; import net.techreadiness.ui.task.Task; import net.techreadiness.ui.task.TaskFlowState; import org.apache.commons.lang3.StringUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @Results({ @Result(name = "success", location = "/net/techreadiness/plugin/action/readiness-index.jsp") }) public class ReadinessIndexAction extends BaseAction { private static final long serialVersionUID = 1L; @Inject private ReportsService reportService; @Inject private SnapshotWindowService snapshotWindowService; @Inject private OrganizationService organizationService; @Inject private OrgTaskFlowData orgTaskFlowData; @Inject private DataEntryTaskFlowDefinition dataEntryTasks; @Inject private SurveyQuestionsTaskFlowDefinition surveyTasks; private Map<String, String> minSummary; private Map<String, String> recSummary; private SnapshotWindow snapshot; private Org org; @Override public String execute() throws Exception { snapshot = snapshotWindowService.getByScopeIdAndName(getServiceContext(), getServiceContext().getScopeId(), ReportsService.DEFAULT_SNAPSHOT_WINDOW); if (snapshot != null) { QueryResult<Map<String, String>> minResult = reportService.retrieveSummaryForOrg(snapshot.getSnapshotWindowId(), getServiceContext().getOrgId(), MinimumRecommendedFlag.MINIMUM); minSummary = Iterables.getFirst(minResult.getRows(), Collections.<String, String> emptyMap()); QueryResult<Map<String, String>> recResult = reportService.retrieveSummaryForOrg(snapshot.getSnapshotWindowId(), getServiceContext().getOrgId(), MinimumRecommendedFlag.RECOMMENDED); recSummary = Iterables.getFirst(recResult.getRows(), Collections.<String, String> emptyMap()); } org = organizationService.getById(getServiceContext(), getServiceContext().getOrgId()); return SUCCESS; } @Action(value = "data-entry-task", results = { @Result(name = "success", type = "redirect", location = "/task/dataentry/altDataEntryTaskFlowBegin") }) public String dataEntryTask() throws ServiceException { Set<Org> orgs = new HashSet<>(); orgs.add(organizationService.getById(getServiceContext(), getServiceContext().getOrgId())); Task task = dataEntryTasks.getTask("ready.org.task.dataEntry"); TaskFlowState state = new TaskFlowState(); state.setTasks(Lists.newArrayList(task)); orgTaskFlowData.setTaskFlowState(state); orgTaskFlowData.setOrgs(orgs); return SUCCESS; } @Action(value = "survey-task", results = { @Result(name = "success", type = "redirect", location = "/task/org/survey/altSurveyTaskFlowBegin") }) public String surveyTask() throws ServiceException { Set<Org> orgs = new HashSet<>(); orgs.add(organizationService.getById(getServiceContext(), getServiceContext().getOrgId())); Task task = surveyTasks.getTask("ready.org.task.surveyQ"); TaskFlowState state = new TaskFlowState(); state.setTasks(Lists.newArrayList(task)); orgTaskFlowData.setTaskFlowState(state); orgTaskFlowData.setOrgs(orgs); return SUCCESS; } public Map<String, String> getMinSummary() { return minSummary; } public Map<String, String> getRecSummary() { return recSummary; } public SnapshotWindow getSnapshot() { return snapshot; } public Org getOrg() { return org; } public int getNumberOfUnansweredSurveys() { int i = 0; Collection<String> answers = Lists.newArrayList(org.getSurveyAdminCount(), org.getSurveyAdminTraining(), org.getSurveyAdminUnderstanding(), org.getSurveyTechstaffCount(), org.getSurveyTechstaffTraining(), org.getSurveyTechstaffUnderstanding(), org.getInternetSpeed(), org.getInternetUtilization(), org.getNetworkSpeed(), org.getNetworkUtilization(), org.getWirelessAccessPoints(), org.getTestingWindowLength(), org.getSessionsPerDay(), org.getSchoolType()); for (String answer : answers) { if (StringUtils.isBlank(answer)) { i++; } } Collection<String> enrollments = Lists.newArrayList(org.getEnrollmentCount1(), org.getEnrollmentCount10(), org.getEnrollmentCount11(), org.getEnrollmentCount12(), org.getEnrollmentCount2(), org.getEnrollmentCount3(), org.getEnrollmentCount4(), org.getEnrollmentCount5(), org.getEnrollmentCount6(), org.getEnrollmentCount7(), org.getEnrollmentCount8(), org.getEnrollmentCount9(), org.getEnrollmentCountK()); boolean allBlank = true; for (String enrollment : enrollments) { if (StringUtils.isNotBlank(enrollment)) { allBlank = false; break; } } if (allBlank) { i++; } return i; } }