private ScheduleQueryRow ProcessMultiResults(DynamicSql query, object[] objs) { var row = new ScheduleQueryRow(); for (var i = 0; i < query.MultiResults.Count; i++) { var r = query.MultiResults[i]; switch (r.Key) { case ScheduleQueryProjection.INFO: case ScheduleQueryProjection.SELECT: row.Schedule = objs[i] as Schedule; break; case ScheduleQueryProjection.LOCATION: row.Location = objs[i] as LocationRelationship; break; } } return(row); }
public IDictionary <string, object> GetScheduleDynamic( ScheduleQueryRow row, ScheduleQueryProjection projection, ScheduleQueryOptions options) { var obj = new Dictionary <string, object>(); foreach (var f in projection.GetFieldsArr()) { switch (f) { case ScheduleQueryProjection.INFO: { var entity = row.Schedule; obj["id"] = entity.Id; obj["code"] = entity.Code; obj["name"] = entity.Name; obj["description"] = entity.Description; obj["location_id"] = entity.LocationId; } break; case ScheduleQueryProjection.DETAILS: { var entities = row.Schedule.ScheduleDetails; obj["schedule_details"] = entities?.Select(o => { var fromTime = o.FromTime? .ToTimeZone(options.time_zone, options.culture); var fromTimeStr = fromTime? .ToString(options.date_format, options.culture); var toTime = o.ToTime? .ToTimeZone(options.time_zone, options.culture); var toTimeStr = toTime? .ToString(options.date_format, options.culture); return(new { name = o.Name, from_time = new { display = fromTimeStr, iso = $"{fromTime?.ToUniversalTime():s}Z" }, to_time = new { display = toTimeStr, iso = $"{toTime?.ToUniversalTime():s}Z" }, id = o.Id, is_default = o.IsDefault, }); }); } break; case ScheduleQueryProjection.LOCATION: { var entity = row.Location; obj["location"] = new { id = entity.Id, name = entity.Name, code = entity.Code }; } break; case ScheduleQueryProjection.SELECT: { var entity = row.Schedule; obj["id"] = entity.Id; obj["name"] = entity.Name; obj["code"] = entity.Code; } break; } } return(obj); }