public static IEnumerable <T> GetModels <T>(this SharedLinkPost model, Func <T, bool> where = null, Func <T, int> orderBy = null, bool asc = true) where T : ISharedLink { if (where == null) { where = b => b.Displayed; } if (orderBy == null) { orderBy = b => b.DisplayOrder; } var query = model.Models.Where(b => where ((T)b)).Select(b => (T)b); if (asc) { return(query.OrderBy(orderBy)); } return(query.OrderByDescending(orderBy)); }
public static SharedLinkPost GetSharedLinkPost(this ContentProperty model, int?lang = null) { var type = model.RelatedType; var allowChild = type.GetCustomAttribute <AllowChildrenAttribute>(); var header = allowChild?.TableList ?? Enumerable.Empty <string>(); var image = allowChild?.TableList ?? Enumerable.Empty <string>(); var models = PassModeConvert.GetSharedLinks(type, lang, model.IsSingleRecord, model.IsLinkedRecord, model.ModelId); var result = new SharedLinkPost { Headers = header, Images = image, Models = models, Lang = lang, TypeName = type?.FullName, AssemblyName = type?.Assembly.FullName, IsRelated = model.IsLinkedRecord, RelatedId = model.ModelId, View = new SharedLinkView(Newtonsoft.Json.JsonConvert.SerializeObject(models), model.Key) }; return(result); }