public async Task <IActionResult> List() { IEnumerable <BuildingPlanViewModel> model = null; try { var buildingPlans = (await _buildingPlanRepository.GetBuildingPlans(User.Identity.Name)).ToList(); var @default = await _buildingPlanRepository.GetBuildingPlans(BuildingPlanRepository.DefaultPlanUserName); @default.ToList().ForEach(x => x.BotUserName = string.Empty); buildingPlans.AddRange(@default); model = buildingPlans.Select(x => _mapper.Map <BuildingPlanViewModel>(x)); } catch (Exception exc) { _logger.LogError(LoggingEvents.GetItemException, exc, exc.Message); } return(View(model)); }
public async Task <(bool HasMoreToBuild, IEnumerable <BuildAction> Actions)> GetBuildActions(Village village, IEnumerable <BuildingModel> allBuildings = null) { var result = new List <BuildAction>(); var buildings = (allBuildings ?? await _buildingRepository.GetAllBuildings()).ToList(); var dorf1BuildingToBuild = GetResourceFieldToBuildNext(village, buildings); if (dorf1BuildingToBuild != null) { result.Add(new BuildAction { BuildingId = dorf1BuildingToBuild.BuildingId, Action = GameActionType.BUILD, BuildingSlot = dorf1BuildingToBuild.Id, Village = village }); } BuildingPlanModel plan = null; if (!string.IsNullOrEmpty(village.BuildingPlanId)) { plan = await _buildingPlanRepository.GetBuildingPlan(village.BuildingPlanId); } if (plan == null) { plan = (await _buildingPlanRepository.GetBuildingPlans(BuildingPlanRepository.DefaultPlanUserName)).FirstOrDefault(); } var hasMoreBuildingsToBuild = TryGetNextBuildingInVillageToBuildFromBuildingPlan(village, buildings, plan, out var dorf2Building); if (dorf2Building != null) { var slot2 = village.BuildingSlots .Where(x => x.BuildingId == dorf2Building.BuildingId) .OrderBy(x => x.Level) .FirstOrDefault(); result.Add(new BuildAction { BuildingId = dorf2Building.BuildingId, Action = GameActionType.BUILD, BuildingSlot = string.IsNullOrEmpty(slot2?.Id) ? dorf2Building.PrefferedBuildingSlot : slot2.Id, Village = village }); } return(hasMoreBuildingsToBuild || dorf1BuildingToBuild != null, result); }
public async Task <IActionResult> Settings(string username, [FromQuery] string villageId) { VillageViewModel model = null; try { var villages = await _villageRepository.GetVillages(username); var village = villages.FirstOrDefault(x => x.VillageId == villageId); //await _villageRepository.GetVillage(villageId); if (village.PlayerName != username) { return(NotFound($"Unable to find village [{villageId}] for travian user [{username}]")); } var user = await _travianUserRepository.GetUserByName(username, User.Identity.Name); var units = await _unitRepository.GetUnitsByTribe(user.PlayerData.Tribe); units = units.Where(x => x.UnitType != UnitType.EXPANSION && x.Name != "trader"); var buildingPlans = await _buildingPlanRepository.GetBuildingPlans(User.Identity.Name); ViewData["buildingPlans"] = buildingPlans; ViewData["villageId"] = villageId; ViewData["username"] = username; ViewData["units"] = units; ViewData["trainUnits"] = village.PreferableUnits; ViewData["spamUnits"] = village.SpamUnits; ViewData["timeZone"] = string.IsNullOrEmpty(user.PlayerData.TimeZone) ? "UTC+0" : user.PlayerData.TimeZone; model = _mapper.Map <VillageViewModel>(village); } catch (Exception exc) { _logger.LogError(LoggingEvents.UpdateItemException, exc, exc.Message); } return(View(model)); }