public MethodResult CanCreateCountryCompany(Entity entity, Country country, Citizen loggedCitizen) { if (country == null) { return(new MethodResult("Country is not defined!")); } var policy = (LawAllowHolderEnum)countryRepository.GetCountryPolicySetting(country.ID, pol => pol.CountryCompanyBuildLawAllowHolder); if (entity.GetEntityType() != EntityTypeEnum.Citizen) { return(new MethodResult("Only citizens can create national companies!")); } if (country.PresidentID == entity.EntityID && policy == LawAllowHolderEnum.Congress) { return(new MethodResult("Only congress can create companies in your country!")); } if (congressVotingService.IsCongressman(loggedCitizen, country) && policy == LawAllowHolderEnum.President) { return(new MethodResult("Only president can create companies in your country!")); } var neededGold = ConfigurationHelper.Configuration.CompanyCountryFee; var treasureGold = walletService.GetWalletMoney(country.Entity.WalletID, GameHelper.Gold.ID); if (treasureGold.Amount < neededGold) { return(new MethodResult($"Not enough gold to construct company. You need {neededGold} gold and your country only have {treasureGold.Amount} gold")); } return(MethodResult.Success); }
public ActionResult StartVoting(int countryID) { var entity = SessionHelper.CurrentEntity; if (entity.Is(EntityTypeEnum.Citizen) == false) { return(RedirectBackWithError("You are not a citizen.")); } var citizen = entity.Citizen; var country = countryRepository.GetById(countryID); if (country == null) { return(RedirectBackWithError("Country does not exist!")); } if (congressVotingService.IsCongressman(citizen, country) == false) { return(RedirectBackWithError("You are not a party member of this country!")); } if (citizen.Congressmen.First(c => c.CountryID == countryID).LastVotingDay >= GameHelper.CurrentDay) { AddError("You started voting today!"); return(RedirectToAction("Votings", new { countryID = countryID })); } if (country.Congressmen.Count < 3) { AddWarning("You cannot vote when there is less than 3 congressmen. [Feature will be enabled in release version. You can vote without problems]"); } var votingTypes = congressVotingRepository.GetVotingTypes(); var commentRestrictions = congressVotingRepository.GetCommentRestrictions(); var vm = new CongressStartVotingViewModel(votingTypes, commentRestrictions, country); return(View(vm)); }