public ReturnData AJAX_GetDetail(int idRole) { try { DataClassesDataContext db = new DataClassesDataContext(); Class_Role role = new Class_Role(); Class_Menu menu = new Class_Menu(); Class_Order_Status orderStatus = new Class_Order_Status(); Dictionary <string, dynamic> data = new Dictionary <string, dynamic>(); data.Add("Role", Dynamic_GetDetail(db, idRole)); data.Add("TreeMenus", role.GetTree_Menu(db, idRole)); data.Add("SelectedMenus", role.Dynamic_GetData_Menu_ByIDRole(idRole)); data.Add("TreeOrderStatus", GetTree_OrderStatus(db, idRole)); data.Add("SelectedOrderStatus", Dynamic_GetData_OrderStatus_ByIDRole(idRole)); data.Add("Notification", Dynamic_GetNotification_OrderStatus(db, idRole)); return(ReturnData.MessageSuccess("OK", data)); } catch (Exception ex) { Class_Log_Error log = new Class_Log_Error(); log.Insert(ex.Message, ex.StackTrace); return(ReturnData.MessageFailed(ex.Message, null)); } }
private IEnumerable <WITLibrary.JsTreeModel> GenerateUL(DataClassesDataContext db, Class_Menu _menu, IEnumerable <TBMenu> menus, int idRole) { List <WITLibrary.JsTreeModel> _newMenu = new List <WITLibrary.JsTreeModel>(); foreach (var menu in menus) { if (menu.TBMenus.AsEnumerable().Any()) { _newMenu.Add(new WITLibrary.JsTreeModel { text = menu.Name, state = new WITLibrary.JsTreeState { selected = menu.TBRole_Menus.AsEnumerable().FirstOrDefault(x => x.IDRole == idRole) != null }, li_attr = new WITLibrary.JsTreeAttr { id = menu.IDMenu.ToString() }, children = GenerateUL(db, _menu, _menu.GetDataBy_IDMenuParent(db, menu.IDMenu), idRole).ToArray() }); } else { _newMenu.Add(new WITLibrary.JsTreeModel { text = menu.Name, li_attr = new WITLibrary.JsTreeAttr { id = menu.IDMenu.ToString() }, state = new WITLibrary.JsTreeState { selected = menu.TBRole_Menus.AsEnumerable().FirstOrDefault(x => x.IDRole == idRole) != null }, children = GenerateUL(db, _menu, _menu.GetDataBy_IDMenuParent(db, menu.IDMenu), idRole).ToArray() }); } } return(_newMenu.ToArray()); }
public IEnumerable <dynamic> GetTree_Menu(DataClassesDataContext db, int idRole) { Class_Menu _menu = new Class_Menu(); return(GenerateUL(db, _menu, _menu.GetDataBy_IDMenuParent(db, 0), idRole)); }
public ReturnData AJAX_Update_Menu(int idRole, int[] menus) { try { using (DataClassesDataContext db = new DataClassesDataContext()) { List <int> disctMenu = new List <int>(); disctMenu = menus.Distinct().ToList(); if (disctMenu.Count() == 0) { return(ReturnData.MessageFailed("No selected menu to insert.", null)); } dynamic _role = Dynamic_GetDetail(db, idRole); if (_role == null) { return(ReturnData.MessageFailed("The requested resource does not exist.", null)); } TBRole_Menu[] _oldMenu = GetData_Menu_ByIDRole(db, _role.IDRole); List <TBMenu> _menus = new List <TBMenu>(); Class_Menu _menu = new Class_Menu(); foreach (int item in disctMenu) { if (_oldMenu.AsEnumerable().Where(x => x.IDMenu == item).FirstOrDefault() == null) { TBMenu _newData = _menu.GetDetail(db, item); if (_menu == null) { return(ReturnData.MessageFailed("Some menu does not exists.", null)); } _menus.Add(_newData); } } foreach (TBRole_Menu item in _oldMenu) { dynamic _item = disctMenu.Where(x => x == item.IDMenu).FirstOrDefault(); if (_item == 0) { db.TBRole_Menus.DeleteOnSubmit(item); } //else //{ // if (!item.TBCategory.Active) // return ReturnData.MessageFailed(item.TBCategory.Name + " failed to insert, because " + item.TBCategory.Name + " does not active.", null); //} } db.SubmitChanges(); foreach (dynamic item in _menus) { TBRole_Menu _newData = GetData_Menu_ByIDRole(db, idRole).Where(x => x.IDMenu == item.IDMenu && x.IDRole == idRole).FirstOrDefault(); if (_newData == null) { _newData = new TBRole_Menu { IDRole = idRole, IDMenu = item.IDMenu, DateInsert = DateTime.Now, DateLastUpdate = DateTime.Now, }; db.TBRole_Menus.InsertOnSubmit(_newData); } } db.SubmitChanges(); Dictionary <string, dynamic> _result = new Dictionary <string, dynamic>(); _result.Add("Role", Dynamic_GetDetail(db, idRole)); _result.Add("SelectedMenus", Dynamic_GetData_Menu_ByIDRole(idRole)); _result.Add("SelectedOrderStatus", Dynamic_GetData_OrderStatus_ByIDRole(idRole)); _result.Add("TreeMenus", GetTree_Menu(db, idRole)); _result.Add("TreeOrderStatus", GetTree_OrderStatus(db, idRole)); _result.Add("Notification", Dynamic_GetNotification_OrderStatus(db, idRole)); return(ReturnData.MessageSuccess(disctMenu.Count() + " menus has been successfully updated.", _result)); } } catch (Exception ex) { Class_Log_Error log = new Class_Log_Error(); log.Insert(ex.Message, ex.StackTrace); return(ReturnData.MessageFailed(ex.Message, null)); } }