package fi.otavanopisto.muikku.plugins.timed.notifications; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.List; import javax.enterprise.context.Dependent; import javax.enterprise.inject.Any; import javax.enterprise.inject.Instance; import javax.inject.Inject; import fi.otavanopisto.muikku.model.users.EnvironmentRoleArchetype; import fi.otavanopisto.muikku.plugins.timed.notifications.dao.AssessmentRequestNotificationDAO; import fi.otavanopisto.muikku.plugins.timed.notifications.model.AssesmentRequestNotification; import fi.otavanopisto.muikku.schooldata.SchoolDataIdentifier; import fi.otavanopisto.muikku.search.SearchProvider; import fi.otavanopisto.muikku.search.SearchResult; @Dependent public class AssesmentRequestNotificationController { @Inject @Any private Instance<SearchProvider> searchProviders; @Inject private AssessmentRequestNotificationDAO assessmentRequestNotificationDAO; public SearchResult searchActiveStudentIds(Collection<Long> groups, int firstResult, int maxResults, List<SchoolDataIdentifier> excludeSchoolDataIdentifiers, Date startedStudiesBefore){ SearchProvider searchProvider = getProvider("elastic-search"); return searchProvider.searchUsers(null, null, Collections.singleton(EnvironmentRoleArchetype.STUDENT), groups, null, null, false, true, true, firstResult, maxResults, Collections.singleton("id"), excludeSchoolDataIdentifiers, startedStudiesBefore); } public AssesmentRequestNotification createAssesmentRequestNotification(SchoolDataIdentifier studentIdentifier){ return assessmentRequestNotificationDAO.create(studentIdentifier.toId(), new Date()); } public List<SchoolDataIdentifier> listNotifiedSchoolDataIdentifiers(){ List<SchoolDataIdentifier> results = new ArrayList<>(); List<AssesmentRequestNotification> assessmentRequestNotifications = assessmentRequestNotificationDAO.listAll(); for(AssesmentRequestNotification assessmentRequestNotification : assessmentRequestNotifications){ results.add(SchoolDataIdentifier.fromId(assessmentRequestNotification.getStudentIdentifier())); } return results; } private SearchProvider getProvider(String name) { for (SearchProvider searchProvider : searchProviders) { if (name.equals(searchProvider.getName())) { return searchProvider; } } return null; } }