package edu.asu.spring.quadriga.web.manageusers;
import java.security.Principal;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import edu.asu.spring.quadriga.domain.IQuadrigaRole;
import edu.asu.spring.quadriga.domain.IUser;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.service.IQuadrigaRoleManager;
import edu.asu.spring.quadriga.service.IUserManager;
import edu.asu.spring.quadriga.web.manageusers.beans.ApproveAccount;
/**
* The controller to manage the user management part of the Quadriga.
* Can be called only by pages accessible by admins
*
* @author Ram Kumar Kumaresan
*
*/
@Controller
public class ListUsersController {
@Autowired
private IUserManager usermanager;
@Autowired
private IQuadrigaRoleManager rolemanager;
/**
* Admins are provided with the list of open user requets, active users and inactive users
*
* @return Return to the user management page of the quadriga
*/
@RequestMapping(value = "auth/users/manage", method = RequestMethod.GET)
public String manageUsers(ModelMap model, Principal principal) throws QuadrigaStorageException
{
//Get all User Requests
List<IUser> userRequestsList = usermanager.getUserRequests();
model.addAttribute("userRequestsList", userRequestsList);
//Get all Active Users
List<IUser> activeUserList = usermanager.getAllActiveUsers();
model.addAttribute("activeUserList", activeUserList);
//Get all Inactive Users
List<IUser> inactiveUserList = usermanager.getAllInActiveUsers();
model.addAttribute("inactiveUserList", inactiveUserList);
//Get all Quadriga roles
List<IQuadrigaRole> quadrigaRoles = rolemanager.getQuadrigaRoles(IQuadrigaRoleManager.MAIN_ROLES);
model.addAttribute("quadrigaroles",quadrigaRoles);
model.addAttribute("quadrolessize",quadrigaRoles.size());
model.addAttribute("userRoles", rolemanager.getSelectableQuarigaRoles(IQuadrigaRoleManager.MAIN_ROLES));
model.addAttribute("approveAccount", new ApproveAccount());
return "auth/users/manage";
}
}