private async Task <ServiceResponse> InteractivePokemonResolve(Type textResource, ZonedDateTime requestStartInUtc, DateTimeZone userZone, TimeSpan timeLeft, RaidOcrResult raidOcrResult, FenceConfiguration[] fences, int interactiveLimit) { if (InteractiveServiceHelper.UseInteractiveMode(raidOcrResult.Pokemon.Results)) { var pokemonCallbacks = InteractiveServiceHelper.GenericCreateCallbackAsync(interactiveLimit, (selectedPokemon) => InteractiveGymResolve(textResource, requestStartInUtc, userZone, timeLeft, GetRaidbossPokemonById(selectedPokemon, raidOcrResult).Raidboss.Level, GetRaidbossPokemonById(selectedPokemon, raidOcrResult), raidOcrResult, fences, interactiveLimit), pokemon => pokemon.Pokemon.Id, (pokemon, list) => Task.FromResult(pokemon.Pokemon.Name), list => LocalizationService.Get(textResource, "Pokemon_Errors_ToManyFound", list.Count, raidOcrResult.Pokemon.OcrValue, interactiveLimit, "raidboss-"), list => LocalizationService.Get(textResource, "Pokemon_Errors_InteractiveMode", list.Count, raidOcrResult.Pokemon.OcrValue, "raidboss-"), raidOcrResult.Pokemon.Results.Select(e => e.Key).ToList()); return(await pokemonCallbacks); } var raidbossPokemon = raidOcrResult.Pokemon.GetFirst(); return(await InteractiveGymResolve(textResource, requestStartInUtc, userZone, timeLeft, raidbossPokemon.Raidboss.Level, raidbossPokemon, raidOcrResult, fences, interactiveLimit)); }
private async Task <ServiceResponse> InteractiveGymResolve(Type textResource, ZonedDateTime requestStartInUtc, DateTimeZone userZone, TimeSpan timeLeft, int level, RaidbossPokemon raidbossPokemon, RaidOcrResult raidOcrResult, FenceConfiguration[] fences, int interactiveLimit) { if (!InteractiveServiceHelper.UseInteractiveMode(raidOcrResult.Gym.Results)) { return(await AddRaidAsync(textResource, requestStartInUtc, userZone, raidOcrResult.Gym.GetFirst().Id, level, raidbossPokemon, timeLeft, raidOcrResult, fences, interactiveLimit)); } if (raidOcrResult.Gym.Results == null || raidOcrResult.Gym.Results.Length == 0) { return(new ServiceResponse(false, LocalizationService.Get(textResource, "Gyms_Errors_NothingFound", raidOcrResult.Gym.OcrValue))); } var gymCallbacks = InteractiveServiceHelper.GenericCreateCallbackAsync(interactiveLimit, (selectedGym) => AddRaidAsync(textResource, requestStartInUtc, userZone, selectedGym, level, raidbossPokemon, timeLeft, raidOcrResult, fences, interactiveLimit), gym => gym.Id, (gym, list) => GymService.GetGymNameWithAdditionAsync(gym, list), list => LocalizationService.Get(textResource, "Gyms_Errors_ToManyFound", list.Count, raidOcrResult.Gym.OcrValue, interactiveLimit), list => LocalizationService.Get(textResource, "Gyms_Errors_InteractiveMode", list.Count, raidOcrResult.Gym.OcrValue), raidOcrResult.Gym.Results.Select(e => e.Key).ToList()); return(await gymCallbacks); }