package net.techreadiness.customer.action.task.user.orgassign; import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_USER_ORG_UPDATE; import java.util.Collection; import javax.inject.Inject; import net.techreadiness.annotation.CoreSecured; import net.techreadiness.service.UserService; import net.techreadiness.service.object.Org; import net.techreadiness.service.object.User; import net.techreadiness.service.object.UserOrg; import net.techreadiness.ui.action.task.user.UserTaskFlowAction; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.opensymphony.xwork2.Preparable; import com.opensymphony.xwork2.util.Element; import com.opensymphony.xwork2.util.Key; @Results({ @Result(name = "success", location = "/task/user/orgassign.jsp"), @Result(name = "nouser", location = "/task/user/nouser.jsp") }) public class EditAction extends UserTaskFlowAction implements Preparable { private static final long serialVersionUID = 1L; @Key(Long.class) @Element(Long.class) private Multimap<Long, Long> assignments; @Inject private UserService userService; @Override @CoreSecured({ CORE_CUSTOMER_USER_ORG_UPDATE }) public String execute() { if (getTaskFlowData().getUsers() == null || getTaskFlowData().getUsers().isEmpty()) { return "nouser"; } if (!getTaskFlowData().getTaskFlowState().isInitialized()) { getTaskFlowData().getOrgs().addAll( userService.findOrgsForUsers(getServiceContext(), getServiceContext().getOrgId(), getServiceContext() .getScopeId(), getTaskFlowData().getUserIds())); getTaskFlowData().getTaskFlowState().initialized(); } for (User user : getTaskFlowData().getUsers()) { for (UserOrg userOrg : user.getUserOrgs()) { assignments.put(user.getUserId(), userOrg.getOrgId()); } } conversation.put("orgFilterSelectionHandler", "orgFilterSelectionHandlerForUserOrgAssign"); return SUCCESS; } @Override public void prepare() throws Exception { assignments = HashMultimap.create(); } public Multimap<Long, Long> getAssignments() { return assignments; } public Collection<User> getUsers() { return getTaskFlowData().getUsers(); } public Collection<Org> getOrgs() { return getTaskFlowData().getOrgs(); } }