private async Task <RobotViewModel[]> RefreshCache() { var robots = await _robotService.GetRobotsBy(string.Empty, null); return(robots.Select(e => new RobotViewModel(e)).ToArray()); //TODO: determine better caching process, perhaps at the services layer instead the api boundary //return _helpersManager.Cache.Set((DateTime.Today, ActorType.Cyborg), robots.Select(e => new CyborgViewModel(e)).ToArray()); }
public override async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next) { //TODO: invalidate cache, this is inefficient var robots = await _robotService.GetRobotsBy(string.Empty, null); _helpersManager.Cache.Set((DateTime.Today, ActorType.Robot), robots.Select(e => new RobotViewModel(e)).ToArray()); await next(); }
private async Task <ICanPerformErrand> DeactivateRandomRobot(ICanPerformErrand actor) { var targettedActors = await _robotService.GetRobotsBy(string.Empty, null); int randomSkipCount = _randomGenerator.Next(0, targettedActors.Count()); var actorToDeactivate = targettedActors.Skip(randomSkipCount).Take(1).First(); if (actorToDeactivate != null) { actorToDeactivate.IsActive = false; actorToDeactivate.KilledById = actor.Id; return(actorToDeactivate); } else { return(null); } }