public void SendMoneyGift(Entity source, Entity destination, Currency currency, decimal amount) { var money = new Money(currency, amount); using (var trs = transactionScopeProvider.CreateTransactionScope()) { transactionsService.MakeGift(source, destination, money); var sourceLink = EntityLinkCreator.Create(source); string msg = $"You received {money.Amount} {currency.Symbol} from {sourceLink}."; warningService.AddWarning(destination.EntityID, msg); if (destination.Is(EntityTypeEnum.Company)) { var company = destination.Company; companyFinanceSummaryService.AddFinances(company, new GiftBalanceFinance(amount, currency.ID)); } if (source.Is(EntityTypeEnum.Company)) { var company = source.Company; companyFinanceSummaryService.AddFinances(company, new GiftBalanceFinance(-amount, currency.ID)); } trs.Complete(); } }
public void InformAboutSalaryChange(CompanyEmployee employee) { var company = employee.Company; var currencyID = company.Region.Country.CurrencyID; var currency = Persistent.Currencies.First(c => c.ID == currencyID); var msg = string.Format("Your salary in {0} changed to {1} {2}", company.Entity.Name, employee.Salary, currency.Symbol); warningService.AddWarning(employee.CitizenID, msg); }
public void RemoveJournalist(NewspaperJournalist journalist) { using (var transaction = transactionScopeProvider.CreateTransactionScope()) { string message = string.Format("You are no longer journalist in {0}.", journalist.Newspaper.Entity.Name); newspaperRepository.RemoveJournalist(journalist); warningService.AddWarning(journalist.CitizenID, message); newspaperRepository.SaveChanges(); transaction.Complete(); } }
public void RefuseMPP(MilitaryProtectionPactOffer offer) { transactionsService.GetGoldForDeclineMPP(offer.FirstCountry, offer.SecondCountry, offer.ReservedGold); var otherLink = EntityLinkCreator.Create(offer.SecondCountry.Entity); var msg = $"{otherLink} declined your MPP offer."; warningService.AddWarning(offer.FirstCountryID, msg); militaryProtectionPactOfferRepository.Remove(offer); militaryProtectionPactOfferRepository.SaveChanges(); }
public void RemoveCompany(Company company) { using (var trs = transactionScopeProvider.CreateTransactionScope()) { var employees = company.CompanyEmployees.ToList(); var companyLink = EntityLinkCreator.Create(company.Entity); foreach (var employee in employees) { string message = $"Company {companyLink} was removed. You were fired due to this reason."; warningService.AddWarning(employee.CitizenID, message); entityRepository.RemoveSpecific(employee); } foreach (var manager in company.CompanyManagers.ToList()) { string message = $"Company {companyLink} was removed. You are not longer a manager in this company."; warningService.AddWarning(manager.EntityID, message); entityRepository.RemoveSpecific(manager); } foreach (var offer in company.MarketOffers.ToList()) { entityRepository.RemoveSpecific(offer); } foreach (var offer in company.JobOffers.ToList()) { if (offer.ContractJobOffer != null) { entityRepository.RemoveSpecific(offer.ContractJobOffer); } if (offer.NormalJobOffer != null) { entityRepository.RemoveSpecific(offer.NormalJobOffer); } entityRepository.RemoveSpecific(offer); } if (company.Hospital != null) { entityRepository.RemoveSpecific(company.Hospital); } var entity = company.Entity; using (NoSaveChanges) entityRepository.RemoveSpecific(company); RemoveEntity(entity); entityRepository.SaveChanges(); trs.Complete(); } }
public void DeclineInvite(PartyInvite invite) { var message = $"{invite.Citizen.Entity.Name} declined party invite."; using (NoSaveChanges) warningService.AddWarning(invite.PartyID, message); partyInviteRepository.Remove(invite); ConditionalSaveChanges(partyInviteRepository); }
public void RemoveFriend(Citizen first, Citizen second) { var friendship = friendRepository.GetFriend(first.ID, second.ID); using (NoSaveChanges) { string link = EntityLinkCreator.Create(first.Entity).ToHtmlString(); warningService.AddWarning(second.ID, $"{link} removed you as friend."); } friendRepository.Remove(friendship); friendRepository.SaveChanges(); }
public void ProcessPresidentVoting(int newDay, Country country, PresidentVoting presidentVoting) { if (presidentVoting.VotingStatusID == (int)VotingStatusEnum.NotStarted) { if (presidentVoting.PresidentCandidates.Count == 0) { presidentVoting.StartDay = GameHelper.CurrentDay + 7; } else if (newDay >= presidentVoting.StartDay) { dismissPresident(country); presidentVoting.VotingStatusID = (int)VotingStatusEnum.Ongoing; } } else if (presidentVoting.VotingStatusID == (int)VotingStatusEnum.Ongoing) { var votes = presidentVoting.PresidentVotes .GroupBy(v => v.CandidateID) .Select(v => new { CandidateID = v.Key, VoteCount = v.Count() }) .OrderByDescending(v => v.VoteCount) .ToList(); foreach (var vote in votes) { var candidate = presidentVotingRepository.GetCandidateByID(vote.CandidateID); candidate.CandidateStatusID = (int)PresidentCandidateStatusEnum.Rejected; } if (votes.Count == 0) { presidentVoting.VotingStatusID = (int)VotingStatusEnum.Finished; CreateNewPresidentVoting(country, newDay + 7); var message = $"No one was elected in last president elections in {presidentVoting.Country.Entity.Name} due to lack of votes on candidates. If you still want to be a president candidate you need to candidate again"; foreach (var candidate in presidentVoting.PresidentCandidates) { warningService.AddWarning(candidate.CandidateID, message); } } else if (votes.Count != 1 && votes[0].VoteCount == votes[1].VoteCount) { //reelection in next week presidentVoting.VotingStatusID = (int)VotingStatusEnum.Finished; CreateNewPresidentVoting(country, newDay + 7); } else { var policy = country.CountryPolicy; var candidate = presidentVotingRepository.GetCandidateByID(votes[0].CandidateID); country.PresidentID = candidate.CandidateID; var gold = countryPresidentService.GetGoldForCadency(policy.PresidentCadenceLength); citizenService.ReceivePresidentMedal(candidate.Citizen, gold); CreateNewPresidentVoting(country, newDay + policy.PresidentCadenceLength); presidentVoting.VotingStatusID = (int)VotingStatusEnum.Finished; candidate.CandidateStatusID = (int)PresidentCandidateStatusEnum.Approved; } } }
private async Task AddWarning(SocketGuildUser user, UserWarnings userData, FilterType warningType) { // Add warning to database. var newWarning = await _warningService.AddWarning(user, warningType); // Update cached version. userData.Warnings.Add(newWarning); }
public void DissmissAllWorkersDueToBuildingFinish(Construction construction) { foreach (var employee in construction.Company.CompanyEmployees.ToList()) { var message = $"You are no longer building {construction.Company.Entity.Name} because construction has been finished!"; warningService.AddWarning(employee.CitizenID, message); constructionRepository.RemoveSpecific(employee); } }
public void ParticipateInBattle(Citizen citizen, Battle battle, bool isAttacker, int weaponQuality) { var damage = CalculateDamage(citizen, battle, weaponQuality, isAttacker); if (isAttacker) { battle.WallHealth -= (decimal)damage; } else { battle.WallHealth += (decimal)damage; } var currentRank = MilitaryRankEnumExtensions.GetRankForMilitaryRank((double)citizen.MilitaryRank); citizen.MilitaryRank += (decimal)damage; citizen.HitPoints -= 10; var newRank = MilitaryRankEnumExtensions.GetRankForMilitaryRank((double)citizen.MilitaryRank); if (currentRank != newRank) { var msg = string.Format("You were promoted to {0}.", newRank.ToHumanReadable()); warningService.AddWarning(citizen.ID, msg); } if (weaponQuality > 0) { equipmentRepository.RemoveEquipmentItem(citizen.Entity.EquipmentID.Value, (int)ProductTypeEnum.Weapon, weaponQuality); } var participant = new BattleParticipant() { BattleID = battle.ID, CitizenID = citizen.ID, DamageDealt = (decimal)damage, IsAttacker = isAttacker, WeaponQualityUsed = weaponQuality, Day = GameHelper.CurrentDay, DateTime = DateTime.Now }; battleRepository.AddParticipant(participant); ConditionalSaveChanges(battleRepository); }
public virtual void AbortTrade(Trade trade, string reason) { using (NoSaveChanges) { returnProductAndMoneyFromTrade(trade); trade.Set(TradeStatusEnum.Abort); var tradeLink = TradeLinkCreator.Create(trade); var msg = $"{tradeLink} was aborted due to {reason}."; warningService.AddWarning(trade.SourceEntityID.Value, msg); warningService.AddWarning(trade.DestinationEntityID.Value, msg); } tradeRepository.SaveChanges(); }
private void terminateContract(CompanyEmployee employee, JobContract contract) { contractRepository.Remove(contract.ID); employee.JobContractID = null; ConditionalSaveChanges(contractRepository); warningService.AddWarning(employee.CitizenID, "Your contract has ended."); }
public void DeclareEmbargo(Country declaringCountry, Country embargoedCountry) { using (var trs = transactionScopeProvider.CreateTransactionScope()) { var embargo = new Embargo() { Active = true, CreatorCountryID = declaringCountry.ID, EmbargoedCountryID = embargoedCountry.ID, StartDay = GameHelper.CurrentDay, StartTime = DateTime.Now }; embargoRepository.Add(embargo); embargoRepository.SaveChanges(); string message = string.Format("Your country was embargoed by {0}", declaringCountry.Entity.Name); warningService.AddWarning(embargoedCountry.ID, message); MakeEmbargoCostTransaction(embargo, false); trs.Complete(); } }
public double ReceiveHardWorker(Citizen citizen) { using (var trs = transactionScopeProvider.CreateTransactionScope()) { citizen.HardWorkerMedals += 1; double goldReceived = 5; if (citizen.DayWorkedRow > 365) { goldReceived += 10; } ReceiveGoldForMedal(citizen, goldReceived, medalName: "Hard worker"); using (NoSaveChanges) warningService.AddWarning(citizen.ID, $"You received hard worker medal and {goldReceived} gold."); trs?.Complete(); return(goldReceived); } }
public void SendMessageToEveryoneInWar(War war, string message, params int[] excluding) { List <int> recipientsIDs = new List <int>() { war.AttackerCountryID, war.DefenderCountryID, }; recipientsIDs.AddRange(war.CountryInWars.Select(c => c.CountryID).ToList()); recipientsIDs = recipientsIDs.Where(id => excluding.Contains(id) == false).Distinct().ToList(); foreach (var id in recipientsIDs) { warningService.AddWarning(id, message); } }
public void AddManager(Company company, Citizen citizen, CompanyRights rights) { CompanyManager manager = new CompanyManager() { EntityID = citizen.ID, CompanyID = company.ID, }; var companyLink = EntityLinkCreator.Create(company.Entity); var msg = $"From this day on you are new manager of {companyLink}"; using (NoSaveChanges) warningService.AddWarning(citizen.ID, msg); rights.FillEntity(ref manager); companyManagerRepository.Add(manager); ConditionalSaveChanges(companyManagerRepository); }
public void WriteComment(DevIssue issue, Citizen citizen, string content, VisibilityOptionEnum visibility) { var comment = new DevIssueComment() { CitizenID = citizen.ID, Day = GameHelper.CurrentDay, Time = DateTime.Now, VisibilityOptionID = (int)visibility, DevIssueID = issue.ID, Content = content }; var entityLink = EntityLinkCreator.Create(citizen.Entity); var issueLink = DevIssueLinkCreator.Create(issue); var msg = $"{entityLink} commented your issue - {issueLink}"; warningService.AddWarning(issue.CreatedByID, msg); devIssueCommentRepository.Add(comment); devIssueCommentRepository.SaveChanges(); }
public ActionResult ChangeRoles(List <ManagePartyMemberViewModel> members, int partyID) { var party = partyRepository.GetById(partyID); var citizen = SessionHelper.LoggedCitizen; var partyMember = citizen.PartyMember; if (partyMember == null || partyMember.PartyID != partyID) { return(RedirectIfNotMember(partyID)); } var partyRole = (PartyRoleEnum)partyMember.PartyRoleID; var partyMembers = partyRepository.GetMembers(partyID); if (partyRole < PartyRoleEnum.Manager) { AddError("You cannot manage this party!"); return(RedirectToAction("View", new { partyID = partyID })); } var partyLink = EntityLinkCreator.Create(party.Entity); foreach (var member in members) { var domainModel = partyMembers.FirstOrDefault(m => m.CitizenID == member.CitizenID); if (partyRole == PartyRoleEnum.President) { if (domainModel == null) { AddError(string.Format("Party member with {0} ID does not exists!", member.CitizenID)); continue; } if (domainModel.PartyRoleID != (int)member.PartyRole) { warningService.AddWarning(domainModel.CitizenID, string.Format($"Your role in party changed from {0} to {1} in party {partyLink}", member.PartyRole.ToHumanReadable(), party.Entity.Name)); domainModel.PartyRoleID = (int)member.PartyRole; } } if (partyRole >= PartyRoleEnum.Manager) { if (domainModel == null) { AddError(string.Format("Party member with {0} ID does not exists!", member.CitizenID)); continue; } if (partyRole <= member.PartyRole) { AddError("You cannot kick this user!"); continue; } if (member.Kick) { partyService.ResignFromParty(member.CitizenID); } } } AddInfo("Party members updated"); partyRepository.SaveChanges(); return(RedirectToAction("View", new { partyID = partyID })); }