public static IQueryable <AppClient> Project( this IQueryable <AppClient> query, AppClientQueryProjection projection) { foreach (var f in projection.GetFieldsArr()) { if (AppClientQueryProjection.MAPS.ContainsKey(f)) { foreach (var prop in AppClientQueryProjection.MAPS[f]) { query = query.Include(prop); } } } return(query); }
public IDictionary <string, object> GetAppClientDynamic( AppClient row, AppClientQueryProjection projection, AppClientQueryOptions options) { var obj = new Dictionary <string, object>(); foreach (var f in projection.GetFieldsArr()) { switch (f) { case AppClientQueryProjection.INFO: { var entity = row; obj["id"] = entity.Id; obj["client_name"] = entity.ClientName; obj["description"] = entity.Description; obj["secret_key"] = entity.SecretKey; var time = entity.CreatedTime .ToDefaultTimeZone(); var timeStr = time.ToString(options.date_format); obj["created_time"] = new { display = timeStr, iso = $"{time.ToUniversalTime():s}Z" }; time = entity.LastUpdated .ToDefaultTimeZone(); timeStr = time.ToString(options.date_format); obj["last_updated"] = new { display = timeStr, iso = $"{time.ToUniversalTime():s}Z" }; } break; } } return(obj); }