public async Task <IActionResult> ViewMyChannels(ViewMyChannelsAddressModel model) { var appid = _tokenManager.ValidateAccessToken(model.AccessToken); var appLocal = await _dbContext.Apps.SingleOrDefaultAsync(t => t.Id == appid); if (appLocal == null) { appLocal = new StargateApp { Id = appid, Channels = new List <Channel>() }; _dbContext.Apps.Add(appLocal); await _dbContext.SaveChangesAsync(); } var channels = await _dbContext .Channels .Where(t => t.AppId == appid) .ToListAsync(); var viewModel = new ViewMyChannelsViewModel { AppId = appLocal.Id, Channels = channels .Select(t => new ChannelDetail(t, _connectedCountService.GetConnectedCount(t.Id), _lastAccessService.GetLastAccessTime(t.Id))) .ToList(), Code = ErrorType.Success, Message = "Successfully get your channels!" }; return(Json(viewModel)); }
public async Task <IActionResult> ViewMyChannels(ViewMyChannelsAddressModel model) { var app = await ApiService.ValidateAccessTokenAsync(model.AccessToken); var appLocal = await _dbContext.Apps.SingleOrDefaultAsync(t => t.Id == app.AppId); if (appLocal == null) { appLocal = new StargateApp { Id = app.AppId, Channels = new List <Channel>() }; _dbContext.Apps.Add(appLocal); await _dbContext.SaveChangesAsync(); } var channels = await _dbContext .Channels .Where(t => t.AppId == app.AppId) .ToListAsync(); var viewModel = new ViewMyChannelsViewModel { AppId = appLocal.Id, Channel = channels, code = ErrorType.Success, message = "Successfully get your channels!" }; return(Json(viewModel)); }
public async Task <IActionResult> ViewMyChannels(ViewMyChannelsAddressModel model) { var appid = _tokenManager.ValidateAccessToken(model.AccessToken); var appLocal = await _dbContext.Apps.SingleOrDefaultAsync(t => t.Id == appid); if (appLocal == null) { appLocal = new StargateApp { Id = appid }; await _dbContext.Apps.AddAsync(appLocal); await _dbContext.SaveChangesAsync(); } var channels = _stargateMemory .GetChannelsUnderApp(appid); var viewModel = new ViewMyChannelsViewModel { AppId = appid, Channels = channels, Code = ErrorType.Success, Message = "Successfully get your channels!" }; return(Ok(viewModel)); }
public async Task <IActionResult> PushMessage(PushMessageAddressModel model) { //Ensure app is created var app = await ApiService.ValidateAccessTokenAsync(model.AccessToken); var appLocal = await _dbContext.Apps.SingleOrDefaultAsync(t => t.Id == app.AppId); if (appLocal == null) { appLocal = new StargateApp { Id = app.AppId, Channels = new List <Channel>() }; _dbContext.Apps.Add(appLocal); await _dbContext.SaveChangesAsync(); } //Ensure channel var channel = await _dbContext.Channels.SingleOrDefaultAsync(t => t.Id == model.ChannelId); if (channel == null) { return(Json(new AiurProtocal { code = ErrorType.NotFound, message = "We can not find your channel!" })); } if (channel.AppId != app.AppId) { return(Json(new AiurProtocal { code = ErrorType.Unauthorized, message = "The channel you wanna create message is not your app's channel!" })); } //Create Message var message = new Message { Id = Startup.MessageIdCounter.GetUniqueNo, ChannelId = channel.Id, Content = model.MessageContent }; StargateMemory.Messages.Add(message); return(Json(new AiurProtocal { code = ErrorType.Success, message = $"You have successfully created a message at channel:{channel.Id}!" })); }
public async Task AllClean(StargateDbContext dbContext) { try { var middleMessage = _memoryContext.Messages.Average(t => t.Id); _memoryContext.Messages.RemoveAll(t => t.Id < middleMessage); dbContext.Channels.RemoveRange(dbContext.Channels.Where(t => DateTime.UtcNow > t.CreateTime + TimeSpan.FromSeconds(t.LifeTime))); await dbContext.SaveChangesAsync(); } catch (Exception e) { _logger.LogError(e, "Cleaner crashed!"); } }
private async Task AllClean(StargateDbContext dbContext) { try { if (_memoryContext.Messages.Any()) { var middleMessage = _memoryContext.Messages.Average(t => t.Id); _memoryContext.Messages.RemoveAll(t => t.Id < middleMessage); } var toDelete = dbContext .Channels .ToList() .Where(t => _channelLiveJudge.IsDead(t.Id)) .ToList(); dbContext.Channels.RemoveRange(toDelete); await dbContext.SaveChangesAsync(); } catch (Exception e) { _logger.LogError(e, "Cleaner crashed!"); } }