Ejemplo n.º 1
0
        public PagedResult <KeyValuePair <DateTime, IList <ReadingViewModel> > > GetReadingsPaged(ReadingsQuery query)
        {
            var datesPaged = Readings.Where(r => r.Measurement.Id == query.MeasurementId &&
                                            (query.FromTime == null || r.ReadingTime >= query.FromTime) &&
                                            (query.ToTime == null || r.ReadingTime <= query.ToTime) &&
                                            (query.NewerThan == null || r.ReadingTime > query.NewerThan))
                             .OrderByIf(r => r.ReadingTime, () => query.Ascending)
                             .Select(r => r.ReadingTime)
                             .Distinct()
                             .GetPaged(query.Page, query.PageSize);
            var dates = datesPaged.Results;

            // Make sure readings get SensorRole and Calculator loaded automatically
            // It's practically caching them for grouping query
            var measurement = Measurements.Include(m => m.SensorRoles)
                              .Include(m => m.Calculators)
                              .FirstOrDefault(m => m.Id == query.MeasurementId);

            var grouped = Readings.Where(r =>
                                         (r.Measurement.Id == query.MeasurementId) &&
                                         (dates == null || dates.Contains(r.ReadingTime))
                                         )
                          .OrderByIf(r => r.ReadingTime, () => query.Ascending)
                          .ToList()
                          .AsQueryable()
                          .ProjectTo <ReadingViewModel>()
                          .GroupBy(r => r.ReadingTime)
                          .Select(g => new KeyValuePair <DateTime, IList <ReadingViewModel> > (
                                      g.Key,
                                      g.OrderBy(r => r.Name).ToList()
                                      ))
                          .ToList();

            var result = new PagedResult <KeyValuePair <DateTime, IList <ReadingViewModel> > >();

            result.CurrentPage = datesPaged.CurrentPage;
            result.PageCount   = datesPaged.PageCount;
            result.PageSize    = datesPaged.PageSize;
            result.RowCount    = datesPaged.RowCount;
            result.Results     = grouped;

            return(result);
        }
Ejemplo n.º 2
0
        public static void Get_Current_Month(ReadingCell.ReadingUnitType unit)
        {
            Temperature_Readings = new List <DataPoint>();
            Humidity_Readings    = new List <DataPoint>();
            SetPoint_Readings    = new List <DataPoint>();

            int index = Current_Month;

            if (Current_Month == Total_Months)
            {
                index--;
            }

            DateTime start = Month_Start_Days[index];
            DateTime end   = start.AddMonths(1);

            foreach (ReadingCell cell in Readings.Where(x => x.Occurence >= start && x.Occurence <= end))
            {
                Temperature_Readings.Add(new DataPoint
                                         (

                                             DateTimeAxis.ToDouble(cell.Occurence),
                                             cell.Get_Temperature(unit)

                                         ));

                Humidity_Readings.Add(new DataPoint
                                      (

                                          DateTimeAxis.ToDouble(cell.Occurence),
                                          cell.Humidity

                                      ));

                SetPoint_Readings.Add(new DataPoint
                                      (

                                          DateTimeAxis.ToDouble(cell.Occurence),
                                          cell.Set_Point

                                      ));
            }
        }