package net.techreadiness.customer.action.task.user.delete;
import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_USER_DELETE;
import java.util.HashMap;
import java.util.Map;
import net.techreadiness.annotation.CoreSecured;
import net.techreadiness.service.object.User;
import net.techreadiness.ui.action.task.user.UserTaskFlowAction;
import net.techreadiness.ui.tags.datagrid.DataGridState;
import net.techreadiness.ui.util.ConversationScoped;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.util.Element;
import com.opensymphony.xwork2.util.Key;
@Results({
@Result(name = Action.SUCCESS, type = "redirectAction", params = { "actionName", "delete", "namespace",
"/task/user/delete" }), @Result(name = "invalid", type = "lastAction", params = { "actionName", "delete" }) })
public class SaveAction extends UserTaskFlowAction implements Preparable {
private static final long serialVersionUID = 1L;
@ConversationScoped
private DataGridState<User> deleteUsersDataGrid;
@ConversationScoped
private DataGridState<User> userGrid;
@Key(Long.class)
@Element(Boolean.class)
private Map<Long, Boolean> userStates;
@Override
@CoreSecured({ CORE_CUSTOMER_USER_DELETE })
public String execute() {
for (User user : getTaskFlowData().getUsers()) {
if (userStates.containsKey(user.getUserId())) {
userService.delete(getServiceContext(), user);
} else {
userService.unDelete(getServiceContext(), user);
}
}
if (hasErrors()) {
return "invalid";
}
return SUCCESS;
}
public DataGridState<User> getDeleteUsersDataGrid() {
return deleteUsersDataGrid;
}
public void setDeleteUsersDataGrid(DataGridState<User> deleteUsersDataGrid) {
this.deleteUsersDataGrid = deleteUsersDataGrid;
}
public Map<Long, Boolean> getUserStates() {
return userStates;
}
public void setUserStates(Map<Long, Boolean> userStates) {
this.userStates = userStates;
}
@Override
public void prepare() throws Exception {
userStates = new HashMap<>();
}
}