private ScheduleDetailQueryRow ProcessMultiResults(DynamicSql query, object[] objs) { var row = new ScheduleDetailQueryRow(); for (var i = 0; i < query.MultiResults.Count; i++) { var r = query.MultiResults[i]; switch (r.Key) { case ScheduleDetailQueryProjection.INFO: row.ScheduleDetail = objs[i] as ScheduleDetail; break; case ScheduleDetailQueryProjection.SCHEDULE: row.Schedule = objs[i] as ScheduleRelationship; break; } } return(row); }
public IDictionary <string, object> GetScheduleDetailDynamic( ScheduleDetailQueryRow row, ScheduleDetailQueryProjection projection, ScheduleDetailQueryOptions options) { var obj = new Dictionary <string, object>(); foreach (var f in projection.GetFieldsArr()) { switch (f) { case ScheduleDetailQueryProjection.INFO: { var entity = row.ScheduleDetail; obj["id"] = entity.Id; obj["name"] = entity.Name; var fromTime = entity.FromTime? .ToTimeZone(options.time_zone, options.culture); var fromTimeStr = fromTime? .ToString(options.date_format, options.culture); var toTime = entity.ToTime? .ToTimeZone(options.time_zone, options.culture); var toTimeStr = toTime? .ToString(options.date_format, options.culture); obj["from_time"] = new { display = fromTimeStr, iso = $"{fromTime?.ToUniversalTime():s}Z" }; obj["to_time"] = new { display = toTimeStr, iso = $"{toTime?.ToUniversalTime():s}Z" }; obj["is_default"] = entity.IsDefault; obj["schedule_id"] = entity.ScheduleId; } break; case ScheduleDetailQueryProjection.CONFIGS: { var entities = row.ScheduleDetail.ScheduleWeekConfigs; obj["schedule_week_configs"] = entities? .Select(c => new { to_time = c.ToTime, to_day_of_week = c.ToDayOfWeek, id = c.Id, from_time = c.FromTime, from_day_of_week = c.FromDayOfWeek, all_day = c.AllDay, config_id = c.ConfigId }).ToList(); } break; case ScheduleDetailQueryProjection.SCHEDULE: { var entity = row.Schedule; obj["schedule"] = new { id = entity.Id, name = entity.Name, code = entity.Code }; } break; } } return(obj); }