Exemplo n.º 1
0
        static void test(EfSensorDataRepository repository)
        {
            //var data = repository.GetData("Oleksandr", 1, 10);

            var startTime = new DateTime(2016, 05, 26);
            var request   = new GetGroupedSensorDataRequest
            {
                UserName     = "******",
                FromDate     = startTime,
                ToDate       = startTime.AddDays(3),
                GroupByTime  = GroupByTime.Hour,
                FilterByTime = FilterByTime.Day
            };
            var data = repository.GetData(request);

            data.SensorIdLabels.Count();

            //var data = repository.GetData("Oleksandr", startTime, startTime.AddDays(1), GroupByTime.Hour);
            //PrintData(data);

            //data = repository.GetData("Oleksandr", startTime, startTime.AddDays(3), GroupByTime.DayNight);
            //PrintData(data);

            //data = repository.GetData("Oleksandr", startTime, startTime.AddDays(3), GroupByTime.Daily);
            //PrintData(data);

            //data = repository.GetData("Oleksandr", startTime.AddDays(-14), startTime.AddDays(3), GroupByTime.Week);
            //PrintData(data);

            //data = repository.GetData("Oleksandr", startTime.AddDays(-40), startTime.AddDays(3), GroupByTime.Month);
            //PrintData(data);
        }
Exemplo n.º 2
0
        private SensorDataViewModel GetSensorData(string userName, DateTime fromDate, DateTime toDate, FilterByTime filter, GroupByTime group)
        {
            var request = new GetGroupedSensorDataRequest
            {
                UserName     = userName,
                FromDate     = fromDate,
                ToDate       = toDate,
                GroupByTime  = group,
                FilterByTime = filter
            };

            var data  = dataReposytory.GetData(request);
            var model = ChartHelper.GetDataSets(data);

            return(model);
        }
        public GetGroupedSensorDataResponse GetData(GetGroupedSensorDataRequest request)
        {
            var sensorIds = context.Users.Where(x => x.Login == request.UserName)
                            .SelectMany(x => x.Devices
                                        .SelectMany(y => y.Sensors.Select(z => z.Id))).ToArray();
            var data = context.SensorDataView
                       .Where(x => x.EventDateTime >= request.FromDate && x.EventDateTime <= request.ToDate &&
                              sensorIds.Contains(x.SensorId))
                       .AsNoTracking();

            if (request.FilterByTime == FilterByTime.Day)
            {
                data = data.Where(x => x.time >= Constants.SunRize && x.time < Constants.SunSet);
            }
            else if (request.FilterByTime == FilterByTime.Night)
            {
                data = data.Where(x => x.time >= Constants.SunSet && x.time < Constants.SunRize);
            }


            var grouped = GroupSensorDataQuery(data, request.GroupByTime)
                          .ToList();

            var dates = grouped.Select(x => x.EventTime).Distinct().ToList();

            EnrichWithEmptyPoints(grouped, dates, sensorIds);

            var lables = context.Sensors.Where(x => sensorIds.Contains(x.Id))
                         .Select(x => new
            {
                SensorId   = x.Id,
                DeviceName = x.Device.Name,
                SensorName = x.Name,
                Dimension  = x.SensorType.Dimension
            })
                         .ToDictionary(x => x.SensorId, x =>
                                       NameHelper.GetDataChartLineName(x.DeviceName, x.SensorName, x.Dimension)
                                       );

            var response = new GetGroupedSensorDataResponse
            {
                GroupedData    = grouped.OrderBy(x => x.EventTime),
                SensorIdLabels = lables
            };

            return(response);
        }