public MovementTransport(ReadingBase reader, int clientbuild, bool readTime2)
        {
            var position = reader.Position;

            reader.Position = position;

            if (clientbuild <= 9551)
            {
                TransportGUID = new WoWGuid(reader.ReadUInt64("Transport GUID"));
            }
            else
            {
                TransportGUID = reader.ReadPackedWoWGuid("Transport GUID");
            }
            TransportOffset = reader.ReadVector4();
            TransportTime = reader.ReadUInt32("Transport Time");

            if (clientbuild >= 9183)
                TransportSeat = reader.ReadByte("Transport Seat");
            else
                TransportSeat = 0;

            if (readTime2)
                TransportTime2 = reader.ReadUInt32("Transport Time2");
        }
Esempio n. 2
0
        public static Dictionary <string, List <ReadingBase> > GetDailySummary(WeatherValueType valueType, int deviceId, DateTime startDate, DateTime endDate)
        {
            var summaryList = new Dictionary <string, List <ReadingBase> >();

            summaryList["Average"] = new List <ReadingBase>();
            summaryList["Minimum"] = new List <ReadingBase>();
            summaryList["Maximum"] = new List <ReadingBase>();

            for (var year = startDate.Year; year <= endDate.Year; year++)
            {
                using (var archiveData = new WeatherArchiveData(year))
                {
                    var groupList = archiveData.Readings
                                    .Where(r => r.ReadTime >= startDate &&
                                           r.ReadTime <= endDate &&
                                           r.DeviceId == deviceId &&
                                           r.Type == (int)valueType)
                                    .GroupBy(r => DbFunctions.TruncateTime(r.ReadTime))
                                    .Select(g => new
                    {
                        ReadTime = g.Key,
                        Readings = g.Select(r => r.Value)
                    }).ToList();

                    summaryList["Average"].AddRange(groupList.Select(d => ReadingBase.CreateReading(valueType, d.ReadTime.Value.DateTime, d.Readings.Average())));
                    summaryList["Minimum"].AddRange(groupList.Select(d => ReadingBase.CreateReading(valueType, d.ReadTime.Value.DateTime, d.Readings.Min())));
                    summaryList["Maximum"].AddRange(groupList.Select(d => ReadingBase.CreateReading(valueType, d.ReadTime.Value.DateTime, d.Readings.Max())));
                }
            }

            return(summaryList);
        }
        public MovementTransport(ReadingBase reader, int clientbuild, bool readTransportTime2)
        {
            TransportGUID = reader.ReadPackedGuid("Transport GUID");
            TransportOffset = reader.ReadVector4();
            TransportTime = reader.ReadUInt32("Transport Time");

            if (clientbuild >= 9183)
                TransportSeat = reader.ReadByte("Transport Seat");
            else
                TransportSeat = 0;

            if (readTransportTime2)
                TransportTime2 = reader.ReadUInt32("Transport Time2");
        }
Esempio n. 4
0
        private static List <ReadingBase> LoadHistory(WeatherValueType valueType, int deviceId, DateTimeOffset start, DateTimeOffset end)
        {
            var history = new List <ReadingBase>();

            for (var year = start.Year; year <= end.Year; year++)
            {
                using (var archiveData = new WeatherArchiveData(year))
                {
                    var readings = archiveData.Readings;

                    var yearlyHistory = readings.Where(r => r.DeviceId == deviceId && r.Type == (int)valueType && r.ReadTime >= start && r.ReadTime <= end).ToList();

                    history.AddRange(yearlyHistory.Select(r => ReadingBase.CreateReading(valueType, r.ReadTime.DateTime, r.Value)));
                }
            }

            return(history);
        }
 public override void SplitReadingSub(ReadingBase oldReading, DateTime splitTime, ReadingBase newReading1, ReadingBase newReading2)
 {
     if (((EnergyReading)newReading1).EnergyToday.HasValue && ((EnergyReading)newReading2).EnergyDelta >= InverterAlgorithm.EnergyTodayEnergyMargin)
         ((EnergyReading)newReading1).EnergyToday -= ((EnergyReading)newReading2).EnergyDelta;
     if (((EnergyReading)newReading1).EnergyTotal.HasValue && ((EnergyReading)newReading2).EnergyDelta >= InverterAlgorithm.EnergyTotalEnergyMargin)
         ((EnergyReading)newReading1).EnergyTotal -= ((EnergyReading)newReading2).EnergyDelta;
 }
 public override void SplitReadingSub(ReadingBase oldReading, DateTime splitTime, ReadingBase newReading1, ReadingBase newReading2)
 {
     newReading1.IsConsolidationReading = true;
     newReading2.IsConsolidationReading = true;
     if (((EnergyReading)newReading1).EnergyToday.HasValue)
         ((EnergyReading)newReading1).EnergyToday -= ((EnergyReading)newReading2).EnergyDelta;
     if (((EnergyReading)newReading1).EnergyTotal.HasValue)
         ((EnergyReading)newReading1).EnergyTotal -= ((EnergyReading)newReading2).EnergyDelta;
 }