public static DynamicSql SqlProjectFields( this DynamicSql query, FloorQueryProjection model) { query = DynamicSql.DeepClone(query); var finalFields = model.GetFieldsArr() .Where(f => FloorQueryProjection.Projections.ContainsKey(f)) .Select(f => FloorQueryProjection.Projections[f]); if (finalFields.Any()) { var projectionClause = string.Join(',', finalFields); query.DynamicForm = query.DynamicForm .Replace(DynamicSql.PROJECTION, projectionClause); } var finalResults = model.GetFieldsArr() .Where(f => FloorQueryProjection.Results.ContainsKey(f)) .Select(f => FloorQueryProjection.Results[f]); query.MultiResults.AddRange(finalResults); return(query); }
public IDictionary <string, object> GetFloorDynamic( FloorQueryRow row, FloorQueryProjection projection, FloorQueryOptions options) { var obj = new Dictionary <string, object>(); foreach (var f in projection.GetFieldsArr()) { switch (f) { case FloorQueryProjection.INFO: { var entity = row.Floor; obj["id"] = entity.Id; obj["code"] = entity.Code; obj["name"] = entity.Name; obj["location_id"] = entity.LocationId; obj["description"] = entity.Description; obj["buidling_id"] = entity.BuildingId; } break; case FloorQueryProjection.FLOOR_PLAN: { var entity = row.Floor; obj["floor_plan_svg"] = entity.FloorPlanSvg; } break; case FloorQueryProjection.SELECT: { var entity = row.Floor; obj["id"] = entity.Id; obj["code"] = entity.Code; obj["name"] = entity.Name; } break; case FloorQueryProjection.BUILDING: { var entity = row.Building; obj["building"] = new { id = entity.Id, name = entity.Name, code = entity.Code }; } break; } } return(obj); }
public static DynamicSql SqlJoin( this DynamicSql query, FloorQueryProjection model) { query = DynamicSql.DeepClone(query); var joins = model.GetFieldsArr() .Where(f => FloorQueryProjection.Joins.ContainsKey(f)) .Select(f => FloorQueryProjection.Joins[f]); if (joins.Any()) { var joinClause = string.Join('\n', joins); query.DynamicForm = query.DynamicForm .Replace(DynamicSql.JOIN, joinClause); } return(query); }