/// <summary> /// Realiza a consulta de registros specificados no Paper e estoca os registros /// obtidos no cache indicado. /// </summary> /// <param name="paper">A instância de IPaper que contém as consultas a dados.</param> /// <param name="cache">O cache para estocagem dos registros consultados.</param> public static void CacheData(IPaper paper, EntryCollection cache) { if (paper._Has("GetCards")) { var data = paper._Call("GetCards"); if (data != null) { var dataWrapper = DataWrapperEnumerable.Create(data); cache.Set(CacheKeys.Cards, dataWrapper); } } }
public static Sort AddFieldsFrom(this Sort sort, object data) { if (data is IEnumerable && !(data is IDictionary)) { var wrapper = DataWrapperEnumerable.Create(data); sort.AddRange(wrapper.EnumerateKeys()); } else { var wrapper = DataWrapper.Create(data); sort.AddRange(wrapper.EnumerateKeys()); } return(sort); }
private static void AddRowsAndLinks(IPaper paper, Entity entity, PaperContext ctx, DataWrapperEnumerable cards) { var keys = cards.EnumerateKeys().ToArray(); foreach (DataWrapper card in cards) { var rowEntity = new Entity(); rowEntity.AddRel(Rel.Card); foreach (var key in keys) { var value = card.GetValue(key); rowEntity.AddProperty(key, value); } var linkRenderers = paper._Call <IEnumerable <ILink> >("GetCardLinks", card.DataSource); if (linkRenderers != null) { foreach (var linkRenderer in linkRenderers) { var link = linkRenderer.RenderLink(ctx); if (link != null) { link.Rel?.Remove(RelNames.Link); var isSelf = (link.Rel?.Contains(RelNames.Self) == true); if (!isSelf) { link.AddRel(RelNames.Self); } rowEntity.AddLink(link); } } } entity.AddEntity(rowEntity); } }
private static void AddRowHeaders(IPaper paper, Entity entity, PaperContext ctx, DataWrapperEnumerable rows) { // Adicionando os campos autodetectados // var keys = rows.EnumerateKeys().ToArray(); foreach (var key in keys) { var header = rows.GetHeader(key); entity.AddRowHeader(header); } // Adicionando os campos personalizados // var headers = paper._Call <IEnumerable <HeaderInfo> >("GetRowHeaders", rows.DataSource); if (headers != null) { if (!(headers is IList)) { headers = headers.ToArray(); } entity.AddRowHeaders(headers); // Ocultando as colunas não personalizadas // entity.ForEachRowHeader((e, h) => { h.Hidden = !headers.Any(x => x.Name.EqualsIgnoreCase(h.Name)); }); } // Adicionando informação de ordenação // var sort = paper._Get <Sort>("Sort"); if (sort != null) { entity.ForEachRowHeader((e, h) => AddRowHeaderSortInfo(paper, ctx, sort, e, h) ); } }