public void DbFunctionsTests_AddSeconds_DateTime_Test()
        {
            var result = this.GetOrderQuery().Select(x => (DateTime)DbFunctions.AddSeconds(this.TestDateTime, 1)).First();

            Assert.AreEqual(YEAR, result.Year);
            Assert.AreEqual(MONTH, result.Month);
            Assert.AreEqual(DAY, result.Day);
            Assert.AreEqual(HOUR, result.Hour);
            Assert.AreEqual(MINUTE, result.Minute);
            Assert.AreEqual(SECOND + 1, result.Second);
        }
Esempio n. 2
0
        public async Task UpdateSensors()
        {
            var sensorsForUpdate = this.context.Sensors
                                   .Where(s => (DbFunctions.AddSeconds(s.LastUpdate, s.PollingInterval) <= DateTime.Now))
                                   .ToList();

            foreach (Sensor s in sensorsForUpdate)
            {
                var url = s.URL;

                var resp = await httpClient.GetAsync(url);

                var content = await resp.Content.ReadAsStringAsync();

                var updatedValue    = JsonConvert.DeserializeObject <SensorApiUpdate>(content);
                int pollingInterval = s.PollingInterval;

                if (s.IsBoolType)
                {
                    if (s.BoolTypeSensor.CurrentValue != bool.Parse(updatedValue.Value))
                    {
                        var valueHistory = new ValueHistory()
                        {
                            BoolSensor = s.BoolTypeSensor,
                            Date       = updatedValue.TimeStamp,
                            Value      = updatedValue.Value.ToLower() == "true" ? 1 : 0
                        };
                        s.BoolTypeSensor.BoolHistory.Add(valueHistory);
                        s.BoolTypeSensor.CurrentValue = bool.Parse(updatedValue.Value);
                    }
                }
                else
                {
                    if (s.ValueTypeSensor.CurrentValue != double.Parse(updatedValue.Value))
                    {
                        var valueHistory = new ValueHistory()
                        {
                            ValueSensor = s.ValueTypeSensor,
                            Date        = updatedValue.TimeStamp,
                            Value       = double.Parse(updatedValue.Value)
                        };
                        s.ValueTypeSensor.ValueHistory.Add(valueHistory);
                        s.ValueTypeSensor.CurrentValue = double.Parse(updatedValue.Value);

                        SendEmailIfNeeded(s);
                    }
                }

                s.LastUpdate = updatedValue.TimeStamp;
            }

            this.context.SaveChanges();
        }
 public List <Device> GetDisconnectedDevices(string offlineStatus)
 {
     using (var context = new DeviceHiveContext())
     {
         return(context.Devices
                .Include(e => e.Network)
                .Include(e => e.DeviceClass.Equipment)
                .Where(d => d.Status != offlineStatus)
                .Where(e => e.DeviceClass.OfflineTimeout != null)
                .Where(d => d.LastOnline == null || DbFunctions.AddSeconds(d.LastOnline, d.DeviceClass.OfflineTimeout) < SqlFunctions.GetUtcDate())
                .ToList());
     }
 }
        public void DateFunctions()
        {
            using (var context = new BloggingContext(ConnectionString))
            {
                IQueryable <int> oneRow = context.Posts.Where(p => false).Select(p => 1).Concat(new int[] { 1 });

                var dateAdds = oneRow.Select(p => new List <DateTime?>
                {
                    DbFunctions.AddDays(new DateTime(2014, 2, 28), 1),
                    DbFunctions.AddHours(new DateTime(2014, 2, 28, 23, 0, 0), 1),
                    DbFunctions.AddMinutes(new DateTime(2014, 2, 28, 23, 59, 0), 1),
                    DbFunctions.AddSeconds(new DateTime(2014, 2, 28, 23, 59, 59), 1),
                    DbFunctions.AddMilliseconds(new DateTime(2014, 2, 28, 23, 59, 59, 999), 2 - p),
                    DbFunctions.AddMicroseconds(DbFunctions.AddMicroseconds(new DateTime(2014, 2, 28, 23, 59, 59, 999), 500), 500),
                    DbFunctions.AddNanoseconds(new DateTime(2014, 2, 28, 23, 59, 59, 999), 999999 + p),
                    DbFunctions.AddMonths(new DateTime(2014, 2, 1), 1),
                    DbFunctions.AddYears(new DateTime(2013, 3, 1), 1)
                }).First();
                foreach (var result in dateAdds)
                {
                    Assert.IsTrue(result.Value == new DateTime(2014, 3, 1, 0, 0, 0));
                }

                var dateDiffs = oneRow.Select(p => new {
                    a = DbFunctions.DiffDays(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    b = DbFunctions.DiffHours(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    c = DbFunctions.DiffMinutes(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    d = DbFunctions.DiffSeconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    e = DbFunctions.DiffMilliseconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    f = DbFunctions.DiffMicroseconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    g = DbFunctions.DiffNanoseconds(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(2000, 1, 1, 0, 0, 0)),
                    h = DbFunctions.DiffMonths(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(3000, 1, 1, 0, 0, 0)),
                    i = DbFunctions.DiffYears(new DateTime(1999, 12, 31, 23, 59, 59, 999), new DateTime(3000, 1, 1, 0, 0, 0)),
                    j = DbFunctions.DiffYears(null, new DateTime(2000, 1, 1)),
                    k = DbFunctions.DiffMinutes(new TimeSpan(1, 2, 3), new TimeSpan(4, 5, 6)),
                    l = DbFunctions.DiffMinutes(new TimeSpan(1, 2, 3), null)
                }).First();
                Assert.AreEqual(dateDiffs.a, 1);
                Assert.AreEqual(dateDiffs.b, 1);
                Assert.AreEqual(dateDiffs.c, 1);
                Assert.AreEqual(dateDiffs.d, 1);
                Assert.AreEqual(dateDiffs.e, 1);
                Assert.AreEqual(dateDiffs.f, 1000);
                Assert.AreEqual(dateDiffs.g, 1000000);
                Assert.AreEqual(dateDiffs.h, 12001);
                Assert.AreEqual(dateDiffs.i, 1001);
                Assert.AreEqual(dateDiffs.j, null);
                Assert.AreEqual(dateDiffs.k, 183);
                Assert.AreEqual(dateDiffs.l, null);
            }
        }
        public void TimeAddSeconds()
        {
            TimeSpan time = stored.Add(TimeSpan.FromSeconds(-1));

#if !EFOLD
            var q = this.Entities
                    .Where(x =>
                           DbFunctions.AddSeconds(x.Time, -1) == time);
#else
            var q = this.Entities
                    .Where(x =>
                           EntityFunctions.AddSeconds(x.Time, -1) == time);
#endif

            q.Should().NotBeEmpty();
        }
        public void DateTimeAddSeconds()
        {
            DateTime date = stored.AddSeconds(-1);

#if !EFOLD
            var q = this.Entities
                    .Where(x =>
                           DbFunctions.AddSeconds(x.DateTime, -1) == date);
#else
            var q = this.Entities
                    .Where(x =>
                           EntityFunctions.AddSeconds(x.DateTime, -1) == date);
#endif

            q.Should().NotBeEmpty();
        }
        public virtual IEnumerable <LastValueReadFromDbcs> GetAllSensorsLastValues()
        {
            IEnumerable <LastValueReadFromDbcs> allSensors = new List <LastValueReadFromDbcs>();

            allSensors = this.dbContext.LastValues
                         .Where(x => DbFunctions.AddSeconds(x.LastUpdatedOn.Value, x.PollingInterval) < DateTime.Now)
                         .Select(x => new LastValueReadFromDbcs
            {
                SensorId    = x.SensorId,
                SensorIdICB = x.SensorIdICB,
                Value       = x.Value
            })
                         .ToList();

            return(allSensors);
        }
Esempio n. 8
0
        public void DateTimeOffsetAddSeconds()
        {
            DateTimeOffset offset = stored.AddSeconds(-1);

#if !EFOLD
            var q = this.Entities
                    .Where(x =>
                           DbFunctions.AddSeconds(x.Offset, -1) == offset);
#else
            var q = this.Entities
                    .Where(x =>
                           EntityFunctions.AddSeconds(x.Offset, -1) == offset);
#endif

            q.Should().NotBeEmpty();
        }
Esempio n. 9
0
        public virtual IEnumerable <LastValue> GetAllSensorsLastValues()
        {
            IEnumerable <LastValue> allSensors = this.dbContext.LastValues
                                                 .Where(x => DbFunctions.AddSeconds(x.From.Value, x.PollingInterval) < DateTime.Now)
                                                 .Select(x => new
            {
                SensorId    = x.SensorId,
                SensorIdICB = x.SensorIdICB,
                Value       = x.Value,
                From        = x.From
            })
                                                 .ToList()
                                                 .Select(x => new LastValue
            {
                SensorId    = x.SensorId,
                SensorIdICB = x.SensorIdICB,
                Value       = x.Value,
                From        = x.From
            });

            return(allSensors);
        }
        /// <summary>
        /// Return all entries available to user.
        /// </summary>
        public async Task <Entry[]> ListAsync(DateTime?dateFrom, DateTime?dateTo, TimeSpan?timeFrom, TimeSpan?timeTo)
        {
            var entries = getEntries();

            if (dateFrom.HasValue)
            {
                entries = entries.Where(e => DbFunctions.TruncateTime(e.Date) >= dateFrom);
            }
            if (dateTo.HasValue)
            {
                entries = entries.Where(e => DbFunctions.TruncateTime(e.Date) <= dateTo);
            }
            if (timeFrom.HasValue)
            {
                var seconds = (int)timeFrom.Value.TotalSeconds;
                entries = entries.Where(e => e.Date >= DbFunctions.AddSeconds(DbFunctions.TruncateTime(e.Date), seconds));
            }
            if (timeTo.HasValue)
            {
                var seconds = (int)timeTo.Value.TotalSeconds;
                entries = entries.Where(e => e.Date <= DbFunctions.AddSeconds(DbFunctions.TruncateTime(e.Date), seconds));
            }
            return(await entries.OrderBy(e => e.Date).ToArrayAsync());
        }
Esempio n. 11
0
        public override async Task UserTextMessage(Murmur.User user, Murmur.TextMessage message)
        {
            using (var context = await FancyContext.Connect())
                using (var transact = context.Database.BeginTransaction())
                {
                    User senderEntity = null;
                    if (user.userid > 0)
                    {
                        senderEntity = await context.Users.FindAsync(user.userid);
                    }

                    var qtext = message.text.Replace("&quot;", "\"");
                    var msg   = CommandPattern.Matches(qtext).Cast <Match>().Select(m => m.Value).ToArray();
                    if (message.channels.Any())
                    {
                        if (msg[0] == "@fancy-ng")
                        {
                            await CommandMgr.HandleCommand(SteamListener, Server, user, msg.Skip(1));
                        }

                        if (senderEntity != null)
                        {
                            context.Logs.Add(new LogEntry.ChatMessage
                            {
                                When    = DateTimeOffset.Now,
                                Who     = senderEntity,
                                Where   = await context.Channels.SingleAsync(x => x.ServerId == user.channel),
                                Message = message.text
                            });
                        }
                    }

                    if (senderEntity != null)
                    {
                        var messagesInTheLastSeconds = await context.Logs.OfType <LogEntry.ChatMessage>()
                                                       .Where(x => x.Who.Id == senderEntity.Id && x.When > DbFunctions.AddSeconds(DateTimeOffset.Now, -5)).CountAsync();

                        if (messagesInTheLastSeconds >= 3)
                        {
                            await Server.KickUser(user.session, "Who are you, my evil twin?! [stop spamming]");
                        }
                    }

                    await context.SaveChangesAsync();

                    transact.Commit();
                }
        }
Esempio n. 12
0
        public int CountMessagesByTimeSec(int sec, HubCallerContext hubCallerContext)
        {
            int count = context.Messages.Where(p => p.MessageDate > DbFunctions.AddSeconds(DateTime.Now, -sec)).Where(p => p.Name == hubCallerContext.User.Identity.Name).Count();

            return(count);
        }
Esempio n. 13
0
        public int GetNumMessages(int secSearch)
        {
            int messagesPM = context.Messages.Where(p => p.MessageDate > DbFunctions.AddSeconds(DateTime.Now, -secSearch)).Count();

            return(messagesPM);
        }
 public void DbFunctionsTests_AddSeconds_DateTimeOffset_Test()
 {
     this.AssertException <NotSupportedException>(() => {
         this.GetOrderQuery().Select(x => DbFunctions.AddSeconds(this.TestDateTimeOffset, 1)).First();
     });
 }