package com.example.expense.plan.web;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.springframework.beans.factory.annotation.Autowired;
import com.example.expense.entity.Plan;
import com.example.expense.entity.PlanItem;
import com.example.expense.plan.service.PlanManager;
import com.norteksoft.acs.entity.authorization.Role;
import com.norteksoft.acs.service.authorization.StandardRoleManager;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.util.ContextUtils;
import com.norteksoft.product.util.JsTreeUtils;
import com.norteksoft.product.util.JsonParser;
import com.norteksoft.product.util.PageUtils;
import com.norteksoft.product.util.tree.ZTreeNode;
import com.norteksoft.product.web.struts2.CrudActionSupport;
import com.norteksoft.product.web.struts2.Struts2Utils;
@Namespace("/plan")
@ParentPackage("default")
public class PlanAction extends CrudActionSupport<Plan> {
private static final long serialVersionUID = 1L;
private Long id;
private String deleteIds;
private Plan plan;
private Page<Plan> page;
private Page<PlanItem> pageItem;
private String permissionFlag;
private String position;
@Autowired
private PlanManager planManager;
@Autowired
private StandardRoleManager standardRoleManager;
public Plan getModel() {
return plan;
}
@Override
protected void prepareModel() throws Exception {
if(id==null){
plan=new Plan();
}else {
plan=planManager.getPlan(id);
}
}
@Action("input")
@Override
public String input() throws Exception {
return SUCCESS;
}
public void prepareView() throws Exception {
prepareModel();
}
@Action("view")
public String view() throws Exception {
return SUCCESS;
}
@Action("save")
@Override
public String save() throws Exception {
List<PlanItem> items=new ArrayList<PlanItem>();
List<Object> objects=JsonParser.getFormTableDatas(PlanItem.class);
for (Object obj : objects) {
PlanItem planItem=(PlanItem)obj;
planItem.setPlan(plan);
items.add(planItem);
}
plan.setPlanItems(items);
planManager.savePlan(plan);
addActionMessage("<font class=\"onSuccess\"><nobr>保存成功!</nobr></font>");
return "input";
}
@Action("delete")
@Override
public String delete() throws Exception {
addActionMessage("<font class=\"onSuccess\"><nobr>"+planManager.deletePlan(deleteIds)+"</nobr></font>");
return "list";
}
@Action("list")
@Override
public String list() throws Exception {
return SUCCESS;
}
@Action("list-datas")
public String getListDatas() throws Exception {
page = planManager.list(page);
renderText(PageUtils.pageToJson(page));
return null;
}
@Action("list-plan-item")
public String getItemDatas() throws Exception {
pageItem = planManager.getPlanItemList(pageItem,id);
renderText(PageUtils.pageToJson(pageItem));
return null;
}
@Action("select-role")
public String selectRole() throws Exception {
List<ZTreeNode> treeNodes = new ArrayList<ZTreeNode>();
List<Role> roles=standardRoleManager.getAllStandardRole(ContextUtils.getSystemId("ems"));
if(roles.size()<=0){
ZTreeNode root = new ZTreeNode("_role","0","角色", "false", "false", "", "", "folder", "");
treeNodes.add(root);
}else{
ZTreeNode root = new ZTreeNode("_role","0","角色", "true", "false", "", "", "folder", "");
treeNodes.add(root);
roles(roles,treeNodes,"_role");
}
this.renderText(JsonParser.object2Json(treeNodes));
return null;
}
private void roles(List<Role> roles,List<ZTreeNode> treeNodes,String parentId){
for(Role role:roles){
ZTreeNode root = new ZTreeNode("role~~"+role.getId()+"~~"+role.getName(),parentId,role.getName(), "false", "false", "", "", "folder", "");
treeNodes.add(root);
}
}
@Action("delete-planItem")
public String deletePlanItem() throws Exception {
planManager.deletePlanItem(id);
String callback=Struts2Utils.getParameter("callback");
this.renderText(callback+"({msg:'删除成功!'})");
return null;
}
@Action("validate-permission")
public String validatePermission(){
boolean flag = false;
plan=planManager.getPlan(id);
if("view".equals(permissionFlag)){
flag = planManager.getViewPermission(plan);
}else if("update".equals(permissionFlag)){
flag = planManager.getUpdatePermission(plan);
}
renderText(flag+"_"+id);
return null;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDeleteIds() {
return deleteIds;
}
public void setDeleteIds(String deleteIds) {
this.deleteIds = deleteIds;
}
public Page<Plan> getPage() {
return page;
}
public void setPage(Page<Plan> page) {
this.page = page;
}
public Plan getPlan() {
return plan;
}
public Page<PlanItem> getPageItem() {
return pageItem;
}
public void setPageItem(Page<PlanItem> pageItem) {
this.pageItem = pageItem;
}
public String getPermissionFlag() {
return permissionFlag;
}
public void setPermissionFlag(String permissionFlag) {
this.permissionFlag = permissionFlag;
}
public void setPosition(String position) {
this.position = position;
}
public String getPosition() {
return position;
}
}