package net.techreadiness.customer.action.task.user.update;
import static net.techreadiness.security.CorePermissionCodes.CORE_CUSTOMER_USER_UPDATE;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import net.techreadiness.annotation.CoreSecured;
import net.techreadiness.persistence.datagrid.UserByUserItemProvider;
import net.techreadiness.service.ConfigService;
import net.techreadiness.service.common.ViewDef;
import net.techreadiness.service.common.ViewDef.ViewDefTypeCode;
import net.techreadiness.service.object.User;
import net.techreadiness.ui.action.task.user.UserTaskFlowAction;
import net.techreadiness.ui.tags.taskview.TaskViewState;
import net.techreadiness.ui.util.ConversationScoped;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.Preparable;
import com.opensymphony.xwork2.util.Element;
import com.opensymphony.xwork2.util.Key;
@Results({ @Result(name = "success", location = "/task/user/edit.jsp"),
@Result(name = "nouser", location = "/task/user/nouser.jsp") })
public class EditAction extends UserTaskFlowAction implements Preparable {
private static final long serialVersionUID = 1L;
private ViewDef detailsViewDef;
private ViewDef gridViewDef;
@Inject
private ConfigService configService;
@Inject
private UserByUserItemProvider itemProvider;
@Key(Long.class)
@Element(User.class)
private Map<Long, User> users;
@ConversationScoped
private TaskViewState<User> editUserGrid;
@Override
@CoreSecured({ CORE_CUSTOMER_USER_UPDATE })
public String execute() {
if (getTaskFlowData().getUsers() == null || getTaskFlowData().getUsers().isEmpty()) {
return "nouser";
}
detailsViewDef = configService.getViewDefinition(getServiceContext(), ViewDefTypeCode.USER_DATAGRID_EDIT);
gridViewDef = configService.getViewDefinition(getServiceContext(), ViewDefTypeCode.USER_DATAGRID_EDIT);
itemProvider.setUserIds(getTaskFlowData().getUserIds());
return SUCCESS;
}
@Override
public void prepare() {
users = new HashMap<>();
}
public Map<Long, User> getUsers() {
return users;
}
public void setItemProvider(UserByUserItemProvider itemProvider) {
this.itemProvider = itemProvider;
}
public UserByUserItemProvider getItemProvider() {
return itemProvider;
}
public void setEditUserGrid(TaskViewState<User> editUserGrid) {
this.editUserGrid = editUserGrid;
}
public TaskViewState<User> getEditUserGrid() {
return editUserGrid;
}
public ViewDef getDetailsViewDef() {
return detailsViewDef;
}
public void setDetailsViewDef(ViewDef detailsViewDef) {
this.detailsViewDef = detailsViewDef;
}
public ViewDef getGridViewDef() {
return gridViewDef;
}
public void setGridViewDef(ViewDef gridViewDef) {
this.gridViewDef = gridViewDef;
}
}