using Infrastructure; using OpenAuth.App; using OpenAuth.App.SSO; using OpenAuth.Mvc.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Mvc; using OpenAuth.App.Response; using OpenAuth.Repository.Domain; namespace OpenAuth.Mvc.Controllers { public class ModuleManagerController : BaseController { public ModuleManagerApp App { get; set; } // GET: /ModuleManager/ [Authenticate] public ActionResult Index() { return View(); } public ActionResult Assign(string firstId, string key) { ViewBag.FirstId = firstId; ViewBag.ModuleType = key; var moduleWithChildren = AuthUtil.GetCurrentUser().Modules .GenerateTree(u =>u.Id, u =>u.ParentId); var modules = key == "UserModule" ? App.LoadForUser(firstId) : App.LoadForRole(firstId); CheckModule(moduleWithChildren, modules); ViewBag.Modules = BuilderModules(moduleWithChildren); return View(); } private void CheckModule(IEnumerable> moduleWithChildren, List modules) { foreach (var module in moduleWithChildren) { if (module.Children.Any()) { CheckModule(module.Children, modules); } if (modules.Select(u => u.Id).Contains(module.Item.Id)) { module.Item.Checked = true; } } } public string BuilderModules(IEnumerable> modules) { StringBuilder sb = new StringBuilder(); foreach (var moduleView in modules) { if (moduleView.Children.Any()) { sb.Append("
\r\n"); sb.Append(""); BuildCheckbox(sb, moduleView); sb.Append("\r\n"); sb.Append("
\r\n"); sb.Append(BuilderModules(moduleView.Children)); sb.Append("
\r\n"); sb.Append("
\r\n"); //sb.Append("
\r\n"); //BuildCheckbox(sb, moduleView); //sb.Append("
\r\n"); //sb.Append(BuilderModules(moduleView.Children)); //sb.Append("
\r\n"); //sb.Append("
\r\n"); } else { BuildCheckbox(sb, moduleView); } } return sb.ToString(); } private void BuildCheckbox(StringBuilder sb, TreeItem moduleView) { sb.Append("\r\n"); } /// /// 加载用户模块 /// /// The user identifier. /// System.String. public string LoadForUser(string firstId) { var orgs = App.LoadForUser(firstId); return JsonHelper.Instance.Serialize(orgs); } /// /// 加载角色模块 /// /// The role identifier. /// System.String. public string LoadForRole(string firstId) { var orgs = App.LoadForRole(firstId); return JsonHelper.Instance.Serialize(orgs); } #region 添加编辑模块 //添加模块 [HttpPost] [ValidateInput(false)] public string Add(Module model) { try { App.Add(model); } catch (Exception ex) { Result.Code = 500; Result.Message = ex.Message; } return JsonHelper.Instance.Serialize(Result); } //修改模块 [HttpPost] [ValidateInput(false)] public string Update(Module model) { try { App.Update(model); } catch (Exception ex) { Result.Code = 500; Result.Message = ex.Message; } return JsonHelper.Instance.Serialize(Result); } [HttpPost] public string Delete(string[] ids) { try { App.Delete(ids); } catch (Exception e) { Result.Code = 500; Result.Message = e.Message; } return JsonHelper.Instance.Serialize(Result); } #endregion 添加编辑模块 /// /// 加载当前用户可访问模块的菜单 /// /// The module identifier. /// System.String. public string LoadMenus(string moduleId) { var user = AuthUtil.GetCurrentUser(); var module = user.Modules.Single(u => u.Id == moduleId); var data = new TableData { data = module.Elements, count = module.Elements.Count(), }; return JsonHelper.Instance.Serialize(data); } //添加菜单 [HttpPost] [ValidateInput(false)] public string AddMenu(ModuleElement model) { try { App.AddMenu(model); } catch (Exception ex) { Result.Code = 500; Result.Message = ex.Message; } return JsonHelper.Instance.Serialize(Result); } /// /// 删除菜单 /// [HttpPost] public string DelMenu(params string[] ids) { try { App.DelMenu(ids); } catch (Exception e) { Result.Code = 500; Result.Message = e.Message; } return JsonHelper.Instance.Serialize(Result); } } }