private async Task <bool> UpdateTravianUser() { var result = false; if (this._travianUser == null) { try { this._travianUser = await this._travianUserRepo.GetActiveUser(this._botUser.UserName); if (this._travianUser == null) { await _bot.SendTextMessageAsync(this._chatId, $"Unable to find active user to start watching. Please configure the travian user first. Error Id: {10}"); } else { result = true; } } catch (Exception exc) { await _bot.SendTextMessageAsync( this._chatId, $"Unable to find active user to start watching. Please configure the travian user first. Error Id: {10}"); this._logger.LogError(10, $"{exc.Message}: \r\n {exc.StackTrace}"); } } else { result = true; } return(result); }
public async Task <IEnumerable <JobInfoViewModel> > GetJobsDetailsForPlayer(TravianUser player) { var groupName = SchedulerService.BuildGroupKey(player.UserName, player.BotUserName); var matcher = GroupMatcher <JobKey> .GroupContains(groupName); var result = new List <JobInfoViewModel>(); foreach (var key in await _scheduler.GetJobKeys(matcher)) { var triggers = await _scheduler.GetTriggersOfJob(key); var detail = await _scheduler.GetJobDetail(key); var nextTime = triggers.FirstOrDefault()?.GetNextFireTimeUtc(); if (!nextTime.HasValue) { var cmd = detail.JobDataMap[AbstractJob.JobExecutionDataKey] as IQueueableCommand; nextTime = cmd.Start; } result.Add(new JobInfoViewModel { Name = key.Name, Group = key.Group, NextExecutionTime = nextTime.Value.ToDisplayStringApplyTimeZone(player.PlayerData.TimeZone) }); } return(result); }
public Task <BaseScenarioResult> RunScan(TravianUser user, bool details = false) { var player = _mapper.Map <Player>(user); var result = BuildScanResult(); result.Player = player; return(Task.FromResult(result)); }
public Task <BaseScenarioResult> RunWatch(TravianUser user) { var player = _mapper.Map <Player>(user); var result = BuildWatchResult(); result.Player = player; return(Task.FromResult(result)); }
private Player Map(TravianUser user) { return(new Player { UserName = user.UserName, Password = user.Password, TimeZone = user.PlayerData.TimeZone, Uri = new Uri(user.Url) }); }
public Task <BaseScenarioResult> RunUpdateUserInfo(TravianUser user) { var player = _mapper.Map <Player>(user); var result = new BaseScenarioResult { Player = player }; return(Task.FromResult(result)); }
public Task <BaseScenarioResult> ExecuteActions <T>(TravianUser user, IEnumerable <T> actions) where T : GameAction { var player = _mapper.Map <Player>(user); var result = new BaseScenarioResult { Player = player }; return(Task.FromResult(result)); }
public async Task <BaseScenarioResult> RunWatch(TravianUser user) { await Task.Delay(10000); var player = _mapper.Map <Player>(user); var result = BuildWatchResult(); result.Player = player; _logger.LogDebug($"Fake watch command completed"); return(result); }
public async Task <IActionResult> Create(TravianUser model) { if (ModelState.IsValid) { try { var existing = await _repo.GetUserByName(model.UserName, User.Identity.Name); if (existing != null) { ModelState.AddModelError("UserName", "Player with this name already exists"); return(View(model)); } } catch (Exception exc) { this._logger.LogError(LoggingEvents.GetItemException, exc, $"Unable to update travian user [{model.UserName}] of bot user [{User.Identity.Name}]"); } if (model.IsActive) { var existingActive = await _repo.GetActiveUser(User.Identity.Name); if (existingActive != null) { existingActive.IsActive = false; try { await _client.Logout(existingActive); await _repo.Update(existingActive); } catch (Exception exc) { this._logger.LogError(LoggingEvents.UpdateItemException, exc, $"Unable to update travian user [{model.UserName}] of bot user [{User.Identity.Name}]"); } } } try { await _repo.Insert(model); } catch (Exception exc) { this._logger.LogError(LoggingEvents.InsertItemException, exc, $"Unable to update travian user [{model.UserName}] of bot user [{User.Identity.Name}]"); } return(RedirectToAction("List")); } return(View(model)); }
public async Task <IEnumerable <GameAction> > GetActionsForPlayer(TravianUser user) { var playerData = user.PlayerData; var villages = await _villageRepository.GetVillages(user.UserName); if (!villages.Any(x => x.IsSaveResourcesFeatureOn || x.IsSaveTroopsFeatureOn)) { return(null); } var capital = villages.FirstOrDefault(x => x.IsCapital); var result = new List <GameAction>(); if (capital?.Attacks != null && capital.Attacks.Any()) { if (capital.IsSaveTroopsFeatureOn) { result.Add(new SendArmyAction { Action = GameActionType.SEND_ARMY, Village = _mapper.Map <Village>(capital), To = new Village { Name = SendArmyKey }, SendAll = true, Type = SendArmyType.RAID }); } if (capital.IsSaveResourcesFeatureOn) { var capitalActions = await Task.WhenAll( //CreateActionsForTroops(capital, playerData.Tribe, VillageActionType.UPGRADE_ARMY), CreateActionsForTroops(capital, playerData.Tribe, GameActionType.TRAIN_ARMY)); result.AddRange(capitalActions); // send resources is not needed } } // we don't send resources from capital for now result.AddRange(await CreateActionsForOtherVillages(villages, capital, playerData.Tribe)); return(result); }
public Task <BaseScenarioResult> GetTargetsFromMessage(TravianUser user, string messageUrl) { var result = Builder <BaseScenarioResult> .CreateNew() .With(x => x.Success = true) .With(x => x.Villages = Builder <Village> .CreateListOfSize(2) .All() .With(y => y.Alliance = "TestAlliance") .TheFirst(1) .With(y => y.CoordinateX = 10) .With(y => y.CoordinateY = 10) .TheNext(1) .With(y => y.CoordinateX = -10) .With(y => y.CoordinateY = -10) .Build().ToList()) .Build(); return(Task.FromResult(result)); }
public async Task <IActionResult> Edit(TravianUser model) { if (ModelState.IsValid) { try { await _repo.Update(model); } catch (Exception exc) { this._logger.LogError(LoggingEvents.UpdateItemException, exc, $"Unable to update travian user [{model.UserName}] of bot user [{User.Identity.Name}]"); } return(RedirectToAction("List")); } return(View(model)); }
public FakeServiceProviderBuilderForJob AddTravianUser(TravianUser travianUser = null) { if (BotUser == null) { throw new InvalidOperationException("Can not add travian user before bot user. Define the bot user first."); } if (travianUser == null) { travianUser = FakeDataProvider.GetUser(PlayerStatus.ALL_QUIET); } TravianUser = travianUser; var travianUserRepoMock = new Mock <ITravianUserRepository>(); travianUserRepoMock.Setup(x => x.GetActiveUser(BotUser.UserName)) .Returns(Task.FromResult(travianUser)); return(this.WithService(travianUserRepoMock.Object)); }
public async Task Execute(JobExecutionData jobExecutionData) { try { _botUser = await _botUserProvider.FindByNameAsync(jobExecutionData.TravianUser.BotUserName); _travianUser = jobExecutionData.TravianUser; } catch (Exception exc) { this._logger.LogError(LoggingEvents.BackgroundJobExecutingException, exc, "Unable to get parameters from JobExecutionContext."); return; } try { await ExecuteJob(jobExecutionData); } catch (Exception exc) { this._logger.LogError(LoggingEvents.BackgroundJobExecutingException, exc, "Unexpected error occurred during the job execution."); } }
public async Task <BaseScenarioResult> RunWatch(TravianUser user) { var player = Map(user); return(await _api.Watch(player)); }
public async Task <BaseScenarioResult> RunUpdateUserInfo(TravianUser user) { var player = Map(user); return(await _api.UpdateUserInfo(player)); }
public async Task <BaseScenarioResult> RunScan(TravianUser user, bool details = false) { var player = Map(user); return(await _api.Scan(player, details)); }
public async Task <BaseScenarioResult> ExecuteActions <T>(TravianUser user, IEnumerable <T> actions) where T : GameAction { var player = Map(user); return(await _api.RunScenarioWithActions(player, actions)); }
public async Task <BaseScenarioResult> Logout(TravianUser user) { var player = Map(user); return(await _api.Logout(player)); }
public Task <BaseScenarioResult> GetTargetsFromMessage(TravianUser user, string messageUrl) { var player = Map(user); return(_api.GetTargetsFromMessage(player, messageUrl)); }
public async Task <BaseScenarioResult> RunGetVillagesInfo(TravianUser user) { var player = Map(user); return(await _api.GetVillagesInfo(player)); }
public Task <BaseScenarioResult> GetTargetsFromMessage(TravianUser user, string messageUrl) { return(Task.FromResult(new BaseScenarioResult())); }
public Task <BaseScenarioResult> Logout(TravianUser user) { return(Task.FromResult(new BaseScenarioResult())); }
public Task <BaseScenarioResult> RunGetVillagesInfo(TravianUser user) { throw new NotImplementedException(); }
public Task <BaseScenarioResult> Logout(TravianUser user) { throw new NotImplementedException(); }