//Обновляем счётчик онлайн игроков 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 }
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; //} }