private IQueryable <SensorDataGrouped> GroupSensorDataQuery(IQueryable <SensorDataView> data, GroupByTime groupByTime) { IQueryable <SensorDataGrouped> grouped = null; switch (groupByTime) { case GroupByTime.Minute: grouped = data.GroupBy( x => new { x.SensorId, x.date, x.hour, x.minute }, (group, groupedData) => new SensorDataGrouped { Date = group.date, Hour = group.hour, Minute = group.minute, AverageValue = groupedData.Average(x => x.Value), SensorId = group.SensorId, }); break; case GroupByTime.Hour: grouped = data.GroupBy( x => new { x.SensorId, x.date, x.hour }, (group, groupedData) => new SensorDataGrouped { Date = group.date, Hour = group.hour, AverageValue = groupedData.Average(x => x.Value), SensorId = group.SensorId, }); break; case GroupByTime.Daily: grouped = data.GroupBy(x => new { x.SensorId, x.date }, (group, groupedData) => new SensorDataGrouped { Date = group.date, AverageValue = groupedData.Average(x => x.Value), SensorId = group.SensorId, }); break; case GroupByTime.Week: grouped = data.GroupBy(x => new { x.SensorId, x.year, x.week }, (group, groupedData) => new SensorDataGrouped { Year = group.year, Week = group.week, AverageValue = groupedData.Average(x => x.Value), SensorId = group.SensorId, }); break; case GroupByTime.Month: grouped = data.GroupBy(x => new { x.SensorId, x.year, x.month }, (group, groupedData) => new SensorDataGrouped { Year = group.year, Month = group.month, AverageValue = groupedData.Average(x => x.Value), SensorId = group.SensorId, }); break; default: break; } return(grouped); }
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); }