private FilterGroup GetDateTimeAxisFilter(DbContext db, ReportArg arg, object dbValue) { FilterGroup filterGroup = new FilterGroup(); if (new string[4] { "year", "month", "day", "week" }.Contains(arg.axisFieldType)) { RangeDateValue rangeDateValue = dbValue as RangeDateValue; filterGroup.rules.Add(new FilterRule { field = arg.axisField, value = rangeDateValue.Min, op = "greaterthanorequal" }); filterGroup.rules.Add(new FilterRule { field = arg.axisField, value = rangeDateValue.Max, op = "lessthanorequal" }); } else if (arg.axisFieldType == "ref") { Field field = (from a in reportModelConfig.fields where a.name == arg.axisField select a).FirstOrDefault(); if (field.type == "many2one") { filterGroup.rules.Add(new FilterRule { field = field.dbName, value = dbValue, op = "equal" }); } } else { filterGroup.rules.Add(new FilterRule { field = arg.axisField, value = dbValue, op = "equal" }); } return(filterGroup); }
private List <RangeDateItem> GetRangeDates(DbContext dbContext_3, string string_7, string string_8, string string_9) { RangeDateValue rangeDateValue = GetRangeDateValue(dbContext_3, string_7, string_8); DateTime t = rangeDateValue.Min; DateTime t2 = rangeDateValue.Max; List <RangeDateItem> list = new List <RangeDateItem>(); if (string_9 == "year") { t = new DateTime(t.Year, 1, 1, 0, 0, 0); t2 = new DateTime(t2.Year, 1, 1, 0, 0, 0).AddYears(1).AddSeconds(-1.0); DateTime dateTime = new DateTime(t.Year, 1, 1, 0, 0, 0); while (dateTime >= t && dateTime <= t2) { list.Add(new RangeDateItem { name = dateTime.ToString("yyyy"), value = new RangeDateValue(dateTime, dateTime.AddYears(1).AddSeconds(-1.0)) }); dateTime = dateTime.AddYears(1); } } if (string_9 == "month") { t = new DateTime(t.Year, t.Month, 1, 0, 0, 0); t2 = new DateTime(t2.Year, t2.Month, 1, 0, 0, 0).AddMonths(1).AddSeconds(-1.0); DateTime dateTime = new DateTime(t.Year, t.Month, 1, 0, 0, 0); while (dateTime >= t && dateTime <= t2) { list.Add(new RangeDateItem { name = dateTime.ToString("yyyy-MM"), value = new RangeDateValue(dateTime, dateTime.AddMonths(1).AddSeconds(-1.0)) }); dateTime = dateTime.AddMonths(1); } } if (string_9 == "day") { t = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0); t2 = new DateTime(t2.Year, t2.Month, t2.Day, 0, 0, 0).AddDays(1.0).AddSeconds(-1.0); DateTime dateTime = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0); while (dateTime >= t && dateTime <= t2) { list.Add(new RangeDateItem { name = dateTime.ToString("yyyy-MM-dd"), value = new RangeDateValue(dateTime, dateTime.AddDays(1.0).AddSeconds(-1.0)) }); dateTime = dateTime.AddDays(1.0); } } if (string_9 == "week") { t = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0).AddDays((double)(-1 * (int)t.DayOfWeek)); t2 = new DateTime(t2.Year, t2.Month, t2.Day, 0, 0, 0).AddDays((double)(6 - t2.DayOfWeek)); DateTime dateTime = new DateTime(t.Year, t.Month, t.Day, 0, 0, 0); while (dateTime >= t && dateTime <= t2) { list.Add(new RangeDateItem { name = dateTime.ToString("yyyy-MM-dd") + "至" + dateTime.AddDays(7.0).AddSeconds(-1.0).ToString("yyyy-MM-dd"), value = new RangeDateValue(dateTime, dateTime.AddDays(7.0).AddSeconds(-1.0)) }); dateTime = dateTime.AddDays(7.0); } } return(list); }
private FilterGroup GetDateTimeLegendFilter(DbContext db, ReportArg arg, object xValue, object yValue) { FilterGroup filterGroup = new FilterGroup(); if (new string[4] { "year", "month", "day", "week" }.Contains(arg.legendFieldType)) { RangeDateValue rangeDateValue = xValue as RangeDateValue; filterGroup.rules.Add(new FilterRule { field = arg.legendField, value = rangeDateValue.Min, op = "greaterthanorequal" }); filterGroup.rules.Add(new FilterRule { field = arg.legendField, value = rangeDateValue.Max, op = "lessthanorequal" }); } else if (arg.legendFieldType == "ref") { Field field = (from a in reportModelConfig.fields where a.name == arg.legendField select a).FirstOrDefault(); if (field.type == "many2one") { filterGroup.rules.Add(new FilterRule { field = field.dbName, value = xValue, op = "equal" }); } } else { filterGroup.rules.Add(new FilterRule { field = arg.legendField, value = xValue, op = "equal" }); } if (arg.dataFilter != null && (arg.dataFilter.rules.Any() || arg.dataFilter.groups.Any())) { filterGroup.groups.Add(arg.dataFilter); } if (!string.IsNullOrEmpty(arg.axisField) && arg.legendType != "pie") { FilterGroup filterGroup2 = GetDateTimeAxisFilter(db, arg, yValue); foreach (FilterRule rule in filterGroup2.rules) { filterGroup.rules.Add(rule); } } return(filterGroup); }