Пример #1
0
        public Beacon StoreBeacon(Beacon beacon)
        {
            using (var db = new Context())
            {
                var oldBeacon = db.Beacons.Find(beacon.UUID, beacon.Major, beacon.Minor);

                if (oldBeacon != null)
                {

                    ((IObjectContextAdapter)db).ObjectContext.Detach(oldBeacon);
                    db.Beacons.Attach(beacon);
                    db.Entry(beacon).State = System.Data.Entity.EntityState.Modified;
                }
                else
                {
                    db.Beacons.Add(beacon);
                }

                db.SaveChanges();

                return oldBeacon;
            }
        }
Пример #2
0
        public object GetClient(Guid clientid, int? major = null)
        {
            using (var db = new Context())
            {
                db.Configuration.LazyLoadingEnabled = false;
                db.Configuration.ProxyCreationEnabled = false;

                var client = db.Clients.Find(clientid);

                if (client == null)
                {
                    throw new HttpResponseException(HttpStatusCode.NotFound);
                }

                var subq = db
                    .Entry(client)
                    .Collection(c => c.BeaconPings)
                    .Query()
                    .Include(c => c.Beacon)
                    .Where(c => c.Date >= ThirtyMinutesAgo);

                if (major.HasValue)
                {
                    subq = subq.Where(c => c.Beacon.Major == major.Value);
                }

                subq = subq
                    .OrderBy(c => c.Date);

                subq.Load();

                return client;
            }
        }