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); }
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); }