Пример #1
0
        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);
        }
Пример #2
0
        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);
        }