예제 #1
0
        private void GetProjectTree(HttpContext context)
        {
            int    CompanyID = WebUtil.GetIntValue(context, "CompanyID");
            int    ID        = WebUtil.GetIntValue(context, "ID");
            string Keywords  = context.Request.Params["Keywords"];
            int    RoleID    = WebUtil.GetIntValue(context, "RoleID");
            int    UserID    = WebUtil.GetIntValue(context, "UserID");

            ProjectTree[] list = ProjectTree.GetProjectTreeListByRoleIDAndUserID(ID, Keywords, RoleID, UserID, CompanyID: CompanyID).ToArray();
            List <Dictionary <string, object> > items = null;
            var dic = new Dictionary <string, object>();

            if (string.IsNullOrEmpty(Keywords))
            {
                items = list.Select(p =>
                {
                    dic             = p.ToJsonObject();
                    dic["type"]     = Utility.EnumModel.ProjectTreeTypeDefine.project.ToString();
                    dic["name"]     = p.Name;
                    dic["id"]       = p.ID;
                    dic["pId"]      = p.ParentID == 1 ? Utility.EnumModel.ProjectTreeTypeDefine.company.ToString() + "_" + p.CompanyID : p.ParentID.ToString();
                    dic["iconSkin"] = "Icon_" + p.IconID;
                    dic["open"]     = true;
                    dic["checked"]  = false;
                    if (RoleID > 0)
                    {
                        dic["checked"] = RoleID == p.RoleID;
                    }
                    if (UserID > 0)
                    {
                        dic["checked"] = UserID == p.UserID;
                    }
                    return(dic);
                }).ToList();
                if (CompanyID <= 0 && ID <= 0)
                {
                    var companyList     = Foresight.DataAccess.Company.GetCompanies().ToArray();
                    var companyRoleList = Foresight.DataAccess.UserCompany.GetUserCompanies().ToArray();
                    if (RoleID > 0)
                    {
                        companyRoleList = companyRoleList.Where(p => p.RoleID == RoleID).ToArray();
                    }
                    else
                    {
                        companyRoleList = companyRoleList.Where(p => p.UserID == UserID).ToArray();
                    }
                    var companyItems = companyList.Select(p =>
                    {
                        var myCompanyRole = companyRoleList.FirstOrDefault(q => q.CompanyID == p.CompanyID);
                        var type          = Utility.EnumModel.ProjectTreeTypeDefine.company.ToString();
                        dic                = new Dictionary <string, object>();
                        dic["ID"]          = p.CompanyID;
                        dic["ParentID"]    = 1;
                        dic["Name"]        = p.CompanyName;
                        dic["FullName"]    = p.CompanyName;
                        dic["isParent"]    = true;
                        dic["CompanyID"]   = p.CompanyID;
                        dic["id"]          = type + "_" + p.CompanyID;
                        dic["pId"]         = 1;
                        dic["name"]        = p.CompanyName;
                        dic["type"]        = Utility.EnumModel.ProjectTreeTypeDefine.company.ToString();
                        dic["iconSkin"]    = "Icon_0";
                        dic["open"]        = "true";
                        dic["isRoom"]      = false;
                        dic["IsLocked"]    = false;
                        dic["chkDisabled"] = false;
                        dic["checked"]     = myCompanyRole != null;
                        return(dic);
                    }).ToList();
                    items.AddRange(companyItems);
                    dic                = new Dictionary <string, object>();
                    dic["ID"]          = 1;
                    dic["ParentID"]    = 0;
                    dic["Name"]        = new Utility.SiteConfig().CompanyName;
                    dic["FullName"]    = string.Empty;
                    dic["isParent"]    = true;
                    dic["CompanyID"]   = 0;
                    dic["id"]          = 1;
                    dic["pId"]         = 0;
                    dic["name"]        = new Utility.SiteConfig().CompanyName;
                    dic["type"]        = Utility.EnumModel.ProjectTreeTypeDefine.company.ToString();
                    dic["iconSkin"]    = "Icon_0";
                    dic["open"]        = "true";
                    dic["isRoom"]      = false;
                    dic["IsLocked"]    = false;
                    dic["chkDisabled"] = false;
                    items.Add(dic);
                }
            }
            else
            {
                items = list.Select(p =>
                {
                    dic = p.ToJsonObject();
                    if (p.ID == 1)
                    {
                        var company = Company.GetCompany(CompanyID);
                        dic["name"] = company.CompanyName;
                    }
                    else
                    {
                        dic["name"] = p.FullName + p.Name;
                    }
                    dic["id"]       = p.ID;
                    dic["pId"]      = p.ParentID;
                    dic["iconSkin"] = "Icon_" + p.IconID;
                    dic["open"]     = true;
                    dic["checked"]  = false;
                    if (RoleID > 0)
                    {
                        dic["checked"] = RoleID == p.RoleID;
                    }
                    if (UserID > 0)
                    {
                        dic["checked"] = UserID == p.UserID;
                    }
                    return(dic);
                }).ToList();
            }
            WebUtil.WriteJson(context, items);
        }