package fi.otavanopisto.pyramus.json.users; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import fi.internetix.smvc.controllers.JSONRequestContext; import fi.otavanopisto.pyramus.I18N.Messages; import fi.otavanopisto.pyramus.dao.DAOFactory; import fi.otavanopisto.pyramus.dao.users.StaffMemberDAO; import fi.otavanopisto.pyramus.domainmodel.users.Role; import fi.otavanopisto.pyramus.domainmodel.users.StaffMember; import fi.otavanopisto.pyramus.domainmodel.users.User; import fi.otavanopisto.pyramus.framework.JSONRequestController; import fi.otavanopisto.pyramus.framework.UserRole; import fi.otavanopisto.pyramus.persistence.search.SearchResult; public class SearchUsersJSONRequestController extends JSONRequestController { public void process(JSONRequestContext requestContext) { StaffMemberDAO userDAO = DAOFactory.getInstance().getStaffMemberDAO(); Integer resultsPerPage = requestContext.getInteger("maxResults"); if (resultsPerPage == null) { resultsPerPage = 10; } Integer page = requestContext.getInteger("page"); if (page == null) { page = 0; } String text = requestContext.getString("text"); Role role = (Role) requestContext.getEnum("role", Role.class); Role[] roles; if (role == null) { roles = new Role[] { Role.ADMINISTRATOR, Role.EVERYONE, Role.GUEST, Role.MANAGER, Role.USER, Role.TEACHER, Role.STUDY_GUIDER, Role.STUDY_PROGRAMME_LEADER }; } else { roles = new Role[] { role }; } SearchResult<StaffMember> searchResult = userDAO.searchUsers(resultsPerPage, page, text, text, text, text, roles); List<Map<String, Object>> results = new ArrayList<>(); List<StaffMember> users = searchResult.getResults(); for (User user : users) { Map<String, Object> info = new HashMap<>(); info.put("id", user.getId()); info.put("firstName", user.getFirstName()); info.put("lastName", user.getLastName()); results.add(info); } String statusMessage; Locale locale = requestContext.getRequest().getLocale(); if (searchResult.getTotalHitCount() > 0) { statusMessage = Messages.getInstance().getText( locale, "users.searchUsers.searchStatus", new Object[] { searchResult.getFirstResult() + 1, searchResult.getLastResult() + 1, searchResult.getTotalHitCount() }); } else { statusMessage = Messages.getInstance().getText(locale, "students.searchStudents.searchStatusNoMatches"); } requestContext.addResponseParameter("results", results); requestContext.addResponseParameter("statusMessage", statusMessage); requestContext.addResponseParameter("pages", searchResult.getPages()); requestContext.addResponseParameter("page", searchResult.getPage()); } public UserRole[] getAllowedRoles() { return new UserRole[] { UserRole.GUEST, UserRole.USER, UserRole.MANAGER, UserRole.STUDY_PROGRAMME_LEADER, UserRole.ADMINISTRATOR }; } }