public IActionResult Update(InputChannelEvent model) { if (!ModelState.IsValid) { return(BadRequest("Model is incomplete")); } var bearerValid = IsBearerValid(Request, model.Name); if (!bearerValid) { return(BadRequest("Authorisation Error")); } try { var newStatusContent = _updateStatusContent.AddOrUpdate(model); UpdateIsFreeSocket(newStatusContent); return(Ok(newStatusContent.Weight)); } catch (ApplicationException) { return(new StatusCodeResult(500)); } catch (NotImplementedException) { return(BadRequest("Name does not exist")); } }
public ChannelEvent AddOrUpdate(InputChannelEvent inputChannelEventContent) { if (IsUserInDatabase(inputChannelEventContent.Name)) { var channelUserId = GetChannelUserIdByUrlSafeName(inputChannelEventContent.Name, true); var userid = channelUserId.NameId; var getLastMinuteContent = GetLastMinute(userid); var lastMinuteContent = getLastMinuteContent.ToList(); var firstLastMinuteContent = lastMinuteContent.FirstOrDefault(); if (!lastMinuteContent.Any()) { var newStatusContent = new ChannelEvent { ChannelUserId = userid, Status = inputChannelEventContent.Status, DateTime = DateTime.UtcNow, Weight = 1 }; _context.ChannelEvent.Add(newStatusContent); _context.SaveChanges(); // update isfree cache CacheIsFreeUpdateItem(channelUserId.NameId, newStatusContent); return(newStatusContent); } if (firstLastMinuteContent == null) { throw new ApplicationException("", new Exception("request from database went wrong")); } firstLastMinuteContent.Weight++; firstLastMinuteContent.DateTime = DateTime.UtcNow; _context.Attach(firstLastMinuteContent).State = EntityState.Modified; _context.SaveChanges(); // update isfree cache CacheIsFreeUpdateItem(channelUserId.NameId, firstLastMinuteContent); return(firstLastMinuteContent); } else { throw new NotImplementedException("", new Exception("fail")); } }
public void IsFreeFalseRecentCallTest() { var userid = AddTestAccountUserAndGetId(); var newUpdateStatus = new InputChannelEvent { Status = 1, Name = "testaccount" }; _sqlStatus.AddOrUpdate(newUpdateStatus); var isFreeNow = _sqlStatus.IsFree(userid); Assert.AreEqual(isFreeNow.IsFree, false); }
public ApiControllerTest() { var builder = new DbContextOptionsBuilder <AppDbContext>(); builder.UseInMemoryDatabase(nameof(ApiControllerTest)); var options = builder.Options; var provider = new ServiceCollection() .AddMemoryCache() .BuildServiceProvider(); _memoryCache = provider.GetService <IMemoryCache>(); var services = new ServiceCollection(); // services.AddSingleton<IHubClients, FakeIHubClients>(); // services.AddSingleton<IHubContext<DataHub>, FakeDataHub>(); _context = new AppDbContext(options); _sqlStatus = new SqlUpdateStatus(_context, _memoryCache); var serviceProvider = services.BuildServiceProvider(); // _hubClients = serviceProvider.GetRequiredService<IHubClients>(); // _dataHubContext = serviceProvider.GetRequiredService<IHubContext<DataHub>>(); // Add example data var existAccount = _sqlStatus.GetChannelUserIdByUrlSafeName("testaccount", true); if (existAccount != null) { return; } _sqlStatus.AddUser("Test Account"); var newUpdateStatus = new InputChannelEvent { Status = 1, Name = "testaccount", }; _sqlStatus.AddOrUpdate(newUpdateStatus); }
public void IsFreeTrueEventLongTimeAgoTest() { var userid = AddTestAccountUserAndGetId(); var newUpdateStatus = new InputChannelEvent { Status = 1, Name = "testaccount" }; var newAddedObject = _sqlStatus.AddOrUpdate(newUpdateStatus); newAddedObject.DateTime = new DateTime(2015, 01, 01, 00, 00, 00); _sqlStatus.Update(newAddedObject); var isFreeNow = _sqlStatus.IsFree(userid); Assert.AreEqual(isFreeNow.IsFree, true); }
public void AddOrUpdateTest() { AddTestAccountUserAndGetId(); var newUpdateStatus = new InputChannelEvent() { Status = 1, Name = "testaccount" }; _sqlStatus.AddOrUpdate(newUpdateStatus); var countItemsInDatabase = _context.ChannelEvent.OrderBy(r => r.Id).Count(); Assert.AreEqual(countItemsInDatabase, 1); _sqlStatus.AddOrUpdate(newUpdateStatus); countItemsInDatabase = _context.ChannelEvent.OrderBy(r => r.Id).Count(); Assert.AreEqual(countItemsInDatabase, 1); }