Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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();
            }
        }
Exemple #4
0
        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();
        }
Exemple #8
0
        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);
        }
Exemple #12
0
        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();
        }
Exemple #13
0
        private void terminateContract(CompanyEmployee employee, JobContract contract)
        {
            contractRepository.Remove(contract.ID);
            employee.JobContractID = null;
            ConditionalSaveChanges(contractRepository);

            warningService.AddWarning(employee.CitizenID, "Your contract has ended.");
        }
Exemple #14
0
        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);
            }
        }
Exemple #16
0
        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);
        }
Exemple #18
0
        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 }));
        }