/// <summary> /// Get paging by condition /// </summary> /// <param name="keyword"></param> /// <param name="parentId"></param> /// <param name="isPanel"></param> /// <param name="group"></param> /// <param name="status"></param> /// <param name="userId"></param> /// <param name="isDeleted"></param> /// <param name="order"></param> /// <param name="start"></param> /// <param name="limit"></param> /// <returns></returns> public static PageResult <MenuModel> GetPaging(string keyword, int?parentId, bool?isPanel, MenuGroup?group, MenuStatus?status, int?userId, bool?isDeleted, string order, int start, int limit) { // init condition var condition = "1=1"; // keyword if (!string.IsNullOrEmpty(keyword)) { condition += " AND ([MenuName] LIKE N'%{0}%' OR [TabName] LIKE N'%{0}%')".FormatWith(keyword.EscapeQuote()); } // parent id if (parentId != null) { condition += " AND [ParentId]={0}".FormatWith(parentId.Value); } // is panel if (isPanel != null) { condition += " AND [IsPanel]={0}".FormatWith(isPanel.Value ? 1 : 0); } // group if (group != null) { condition += " AND [Group]={0}".FormatWith((int)group.Value); } // status if (status != null) { condition += " AND [Status]={0}".FormatWith((int)status.Value); } // userId if (userId != null) { condition += @" AND [Id] IN (" + " SELECT [MenuId] FROM [MenuRole] WHERE [RoleId] IN (" + " SELECT [RoleId] FROM [UserRole] WHERE [UserId]='{0}'))".FormatWith(userId.Value); } // deleted if (isDeleted != null) { condition += " AND [IsDeleted]={0}".FormatWith(isDeleted.Value ? 1 : 0); } // get result var result = MenuServices.GetPaging(condition, order, start, limit); // return return(new PageResult <MenuModel>(result.Total, result.Data.Select(r => new MenuModel(r)).ToList())); }