public void GetMeterDataForChart(int meterId) { using (var context = new TownUtilityBillSystemV2Entities()) { List <MeterItem> meterItems = new List <MeterItem>(); DateTime presDate = DateTime.Today; DateTime startDate = new DateTime(); DateTime finishDate = new DateTime(); int startDay = 1; int presYear = presDate.Year; int presMonth = presDate.Month; int prevYear = presYear - 1; int prevMonth = presMonth - 1; int nextMonth = presMonth + 1; float valueDifference; string monthName; startDate = new DateTime(prevYear, nextMonth, startDay); finishDate = new DateTime(presYear, presMonth, startDay); meterItems = context.METER_ITEMs.Where(mi => mi.METER_ID == meterId).Select(MeterItem.GetMeterItemWithOutMeter).ToList(); if (meterItems.Count != 0) { for (; startDate <= finishDate; startDate = startDate.AddMonths(1)) { var startValue = meterItems.Where(m => m.Date == startDate.AddMonths(-1)).FirstOrDefault().Value; var finishValue = meterItems.Where(m => m.Date == startDate).FirstOrDefault().Value; valueDifference = (float)Math.Round(finishValue - startValue, 2); if (startDate.Month != 1) { Months month = (Months)(startDate.Month - 1); monthName = HelperMethod.GetResourceNameForMonth(month.ToString()) + " " + startDate.Year; } else { Months month = Months.December; monthName = HelperMethod.GetResourceNameForMonth(month.ToString()) + " " + startDate.AddYears(-1).Year; } ChartData.Add(new ChartData() { MonthName = monthName, Value = valueDifference }); } } } }
internal object GetAllUtilitiesDataForChart(int addressId) { using (var context = new TownUtilityBillSystemV2Entities()) { List <ChartData> chartData = new List <ChartData>(); List <MeterItem> elMeterItems = new List <MeterItem>(); List <MeterItem> waterMeterItems = new List <MeterItem>(); List <MeterItem> heatMeterItems = new List <MeterItem>(); List <MeterItem> gasMeterItems = new List <MeterItem>(); List <int> metersListIds = new List <int>(); DateTime presDate = DateTime.Today; DateTime startDate = new DateTime(); DateTime finishDate = new DateTime(); int startDay = 1; int presYear = presDate.Year; int presMonth = presDate.Month; int prevYear = presYear - 1; int nextMonth = presMonth + 1; float valueElDifference; float valueWaterDifference; float valueHeatDifference; float valueGasDifference; int elIndex; int waterIndex; int heatIndex; int gasIndex; string monthName; startDate = new DateTime(prevYear, nextMonth, startDay); finishDate = new DateTime(presYear, presMonth, startDay); metersListIds = context.METERs.Where(m => m.ADDRESS_ID == addressId).Select(m => m.ID).ToList(); elIndex = metersListIds[(int)Utilities.Electricity - 1]; waterIndex = metersListIds[(int)Utilities.Water - 1]; elMeterItems = context.METER_ITEMs.Where(mi => mi.METER_ID == elIndex).Select(MeterItem.GetMeterItemWithOutMeter).ToList(); waterMeterItems = context.METER_ITEMs.Where(mi => mi.METER_ID == waterIndex).Select(MeterItem.GetMeterItemWithOutMeter).ToList(); if (metersListIds.Count > 2) { heatIndex = metersListIds[(int)Utilities.Heating - 1]; heatMeterItems = context.METER_ITEMs.Where(mi => mi.METER_ID == heatIndex).Select(MeterItem.GetMeterItemWithOutMeter).ToList(); } if (metersListIds.Count > 3) { gasIndex = metersListIds[(int)Utilities.Gas - 1]; gasMeterItems = context.METER_ITEMs.Where(mi => mi.METER_ID == gasIndex).Select(MeterItem.GetMeterItemWithOutMeter).ToList(); } if (elMeterItems.Count != 0 && waterMeterItems.Count != 0 && heatMeterItems.Count != 0 && gasMeterItems.Count != 0) { for (; startDate <= finishDate; startDate = startDate.AddMonths(1)) { var startElValue = elMeterItems.FirstOrDefault(m => m.Date == startDate.AddMonths(-1)).Value; var finishElValue = elMeterItems.FirstOrDefault(m => m.Date == startDate).Value; valueElDifference = (float)Math.Round(finishElValue - startElValue, 2); var startWaterValue = waterMeterItems.Where(m => m.Date == startDate.AddMonths(-1)).FirstOrDefault().Value; var finishWaterValue = waterMeterItems.Where(m => m.Date == startDate).FirstOrDefault().Value; valueWaterDifference = (float)Math.Round(finishWaterValue - startWaterValue, 2); var startHeatValue = heatMeterItems.Where(m => m.Date == startDate.AddMonths(-1)).FirstOrDefault().Value; var finishHeatValue = heatMeterItems.Where(m => m.Date == startDate).FirstOrDefault().Value; valueHeatDifference = (float)Math.Round(finishHeatValue - startHeatValue, 2); var startGasValue = gasMeterItems.Where(m => m.Date == startDate.AddMonths(-1)).FirstOrDefault().Value; var finishGasValue = gasMeterItems.Where(m => m.Date == startDate).FirstOrDefault().Value; valueGasDifference = (float)Math.Round(finishGasValue - startGasValue, 2); if (startDate.Month != 1) { Months month = (Months)(startDate.Month - 1); monthName = HelperMethod.GetResourceNameForMonth(month.ToString()) + " " + startDate.Year; } else { Months month = Months.December; monthName = HelperMethod.GetResourceNameForMonth(month.ToString()) + " " + startDate.AddYears(-1).Year; } chartData.Add(new ChartData() { MonthName = monthName, ElectricValue = valueElDifference, WaterValue = valueWaterDifference, HeatValue = valueHeatDifference, GasValue = valueGasDifference }); } return(chartData.Select(x => new { name = x.MonthName, elValue = x.ElectricValue, waterValue = x.WaterValue, heatValue = x.HeatValue, gasValue = x.GasValue })); } return(null); } }
public List <TemperatureModel> GetTemperatureChartData(int?townId) { using (var context = new TownUtilityBillSystemV2Entities()) { List <Temperature> temperaturesDB = new List <Temperature>(); DateTime presDate = DateTime.Today; DateTime startDate = new DateTime(); DateTime finishDate = new DateTime(); int startDay = 1; int presYear = presDate.Year; int presMonth = presDate.Month; int prevYear = presYear - 1; int prevMonth = presMonth - 1; float valueSum; float averageValue; int daysInMonth; string defaultChartTown = "Copenhagen"; var data = new List <TEMPERATURE>(); startDate = new DateTime(prevYear, presMonth, startDay); finishDate = new DateTime(presYear, prevMonth, System.DateTime.DaysInMonth(presYear, prevMonth)); if (townId != null) { data = context.TEMPERATUREs.Where(d => d.TOWN_ID == townId).ToList(); } else { var defaultChartTownDB = (from t in context.TOWNs where t.NAME.Contains(defaultChartTown) select t).FirstOrDefault(); data = context.TEMPERATUREs.Where(d => d.TOWN_ID == defaultChartTownDB.ID).ToList(); } foreach (var d in data) { temperaturesDB.Add(new Temperature() { Id = d.ID, Date = d.DATE, MinValue = d.MINVALUE, MaxValue = d.MAXVALUE, TownId = d.TOWN_ID }); } while (startDate < finishDate) { daysInMonth = System.DateTime.DaysInMonth(presYear, startDate.Month); valueSum = 0; for (int j = 0; j < daysInMonth; j++, startDate = startDate.AddDays(1)) { valueSum += (float)(temperaturesDB.Where(t => t.Date == startDate).FirstOrDefault().MinValue + temperaturesDB.Where(t => t.Date == startDate).FirstOrDefault().MaxValue) / 2; } averageValue = (float)Math.Round(valueSum / daysInMonth, 1); if (startDate.Month != 1) { Months month = (Months)(startDate.Month - 1); string monthName = HelperMethod.GetResourceNameForMonth(month.ToString()) + " " + startDate.Year; TemperaturesModel.Add(new TemperatureModel() { Date = new DateTime(startDate.Year, (startDate.Month - 1), startDay), AverageValue = averageValue, MonthName = monthName }); } else { Months month = Months.December; string monthName = HelperMethod.GetResourceNameForMonth(month.ToString()) + " " + startDate.AddYears(-1).Year; TemperaturesModel.Add(new TemperatureModel() { Date = new DateTime(startDate.Year, (int)Months.December, startDay), AverageValue = averageValue, MonthName = monthName }); } } return(TemperaturesModel); } }