示例#1
0
        public decimal Drain(int SiteId, decimal Amount)
        {
            using (var context = new GridBankDb())
            {
                var site = context.GridBankSites.Find(SiteId);
                if (site == null)
                {
                    throw new Exception("Site not found!");
                }

                var lastReading =
                    site.Usages
                    .OrderByDescending(x => x.TimeStamp)
                    .FirstOrDefault();

                var updatedPower = (lastReading != null && lastReading.CurrentPower > Amount
                    ? lastReading.CurrentPower - Amount
                    : 0);

                var usage = new Usage
                {
                    IdGuid         = Guid.NewGuid(),
                    GridBankSiteId = SiteId,
                    TimeStamp      = DateTime.Now,
                    CurrentPower   = updatedPower,
                    IsNew          = true
                };

                site.Usages.Add(usage);
                context.SaveChanges();

                return(usage.CurrentPower);
            }
        }
示例#2
0
        public static void Create()
        {
            using (var context = new GridBankDb())
            {
                context.GridBankSites.AddOrUpdate(x => x.Id,
                                                  new GridBankSite {
                    Id = 1, Description = "Hwy49-Harrisburg"
                },
                                                  new GridBankSite {
                    Id = 2, Description = "Hwy29-Concord"
                }
                                                  );

                context.SaveChanges();
            }
        }
示例#3
0
        public decimal GetCurrentPower(int siteId)
        {
            using (var context = new GridBankDb())
            {
                var site = context.GridBankSites.Find(siteId);
                if (site == null)
                {
                    throw new Exception("Site not found!");
                }

                var lastUsage = site.Usages.OrderByDescending(x => x.TimeStamp).FirstOrDefault();
                var lastPower = lastUsage != null ? lastUsage.CurrentPower : 0;

                return(lastPower);
            }
        }
示例#4
0
        public List <UsageEntry> GetEntries(int SiteId, DateTime detailsStartingDateTime)
        {
            using (var context = new GridBankDb())
            {
                var usageEntries =
                    context.Usages
                    .Where(x => x.GridBankSiteId == SiteId && x.TimeStamp > detailsStartingDateTime)
                    .OrderBy(x => x.TimeStamp)
                    .Select(x => new UsageEntry
                {
                    IdGuid       = x.IdGuid,
                    TimeStamp    = x.TimeStamp,
                    CurrentPower = x.CurrentPower
                })
                    .ToList();

                return(usageEntries);
            }
        }