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
                        });
                    }
                }
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }