Пример #1
0
        //Обновляем счётчик онлайн игроков
        private void SaveOnlineCounters()
        {
#if !DEBUG
            using (GamePortalEntities db = new GamePortalEntities())
            {
                //удаляем устаревшие данные
                DateTimeOffset             time     = DateTimeOffset.UtcNow - _CounterLiveTime;
                IQueryable <OnlineCounter> oldLikes = db.OnlineCounters.Where((p) => p.id != Guid.Empty && p.dateTime < time);
                db.OnlineCounters.RemoveRange(oldLikes);

                //Добавляем новое значение
                OnlineCounter newCounter = new OnlineCounter()
                {
                    id = Guid.NewGuid(), dateTime = DateTimeOffset.UtcNow, count = _OnlineUsers.Count
                };
                db.OnlineCounters.Add(newCounter);

                //изменяем максимум
                OnlineCounter maxCounter = db.OnlineCounters.Single((p) => p.id == Guid.Empty);
                if (newCounter.count >= maxCounter.count)
                {
                    maxCounter.count    = newCounter.count;
                    maxCounter.dateTime = newCounter.dateTime;
                }

                db.SaveChanges();
            }
#endif
        }
Пример #2
0
        public Message GetOnlineCounters()
        {
            //try
            //{
            WebOperationContext current = WebOperationContext.Current;

            //return await GamePortalServer.TaskFactory.StartNew<Message>(() =>
            //{
            try
            {
                using (GamePortalEntities db = new GamePortalEntities())
                {
                    List <OnlineCounter> items      = db.OnlineCounters.OrderBy(p => p.dateTime).ToList();
                    OnlineCounter        maxCounter = items.Single((p) => p.id == Guid.Empty);
                    items.Remove(maxCounter);

                    OnlineCounterModel result = new OnlineCounterModel
                    {
                        Items = items.Select(p => new OnlineCounterItemModel()
                        {
                            DateTime = p.dateTime, Count = p.count
                        }).ToList(),
                        MaxItem = new OnlineCounterItemModel()
                        {
                            DateTime = maxCounter.dateTime, Count = maxCounter.count
                        }
                    };
                    return(ExtHttp.GetJsonStream(result, current));
                }
            }
            catch
            {
                return(null);
            }
            //    });
            //}
            //catch
            //{
            //    return null;
            //}
        }