Example #1
0
        public Funding BuyPackageByUserId(int userId, int packageId)
        {
            var user          = dbContext.Set <User>().Where(u => u.Id == userId).Include(f => f.Fundings).SingleOrDefault();
            var fundingExists = dbContext.Set <Funding>().Where(u => u.UserId == userId).Where(p => p.PackageId == packageId).SingleOrDefault();

            if (fundingExists == null)
            {
                var newFund = new Funding()
                {
                    PackageId = packageId, UserId = userId
                };
                var package = dbContext.Set <Package>().Where(p => p.Id == packageId).Include(p => p.Project).SingleOrDefault();
                var project = dbContext.Set <Project>().Find(package.ProjectId);
                project.CurrentFund += package.Price;
                project.TimesFunded += 1;
                user.Fundings.Add(newFund);
                dbContext.Update(user);
                dbContext.Update(project);
                dbContext.SaveChanges();
                return(newFund);
            }
            else
            {
                return(null);
            }
        }
Example #2
0
 public List <Funding> ConvertFundingFromDTO(List <FundingDTO> fundingDTO)
 {
     using (var db = new CrowDoDB())
     {
         foreach (var item in fundingDTO)
         {
             Funding funding = new Funding
             {
                 Number = item.Number
             };
             Member member = db.Members.Where(x => x.Code.Equals(item.Backer)).FirstOrDefault();
             if (member == null)
             {
                 continue;
             }
             funding.Backer = member;
             Project project = db.Projects.Where(x => x.Code.Equals(item.Project)).FirstOrDefault();
             if (project == null)
             {
                 continue;
             }
             funding.Project = project;
             Packages packages = db.Packages.Where(x => x.Code.Equals(item.Package)).FirstOrDefault();
             if (packages == null)
             {
                 continue;
             }
             funding.Package = packages;
             db.Fundings.Add(funding);
         }
         db.SaveChanges();
         return(db.Fundings.ToList());
     }
 }
        /// <summary>
        /// Upgrades the tier to the next level.
        /// </summary>
        public void UnlockNextTier()
        {
            int tierCount = productionTiers.Count;

            //Pay for the upgrade
            if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
            {
                if (IsTechUnlocked() && Funding.CanAfford(unlockCost))
                {
                    Funding.Instance.AddFunds(-unlockCost, TransactionReasons.Vessels);
                }
                else
                {
                    ScreenMessages.PostScreenMessage(WBIRefinery.kCannotAffordUpgrade, WBIRefinery.kMessageDuration, ScreenMessageStyle.UPPER_CENTER);
                    return;
                }
            }

            //Now get the next tier and load it.
            if (!IsMaxTier())
            {
                currentTier += 1;
                Load(productionTiers[currentTier]);
            }
        }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="funding"></param>
        /// <returns></returns>
        public async Task <bool> FundNoobWallet(Funding funding)
        {
            var wallet = GetWalletById(funding.DestinationId);

            if (funding.CurrencyId == wallet.CurrencyId)
            {
                wallet.Balance += funding.Amount;

                _transactionRepository.CreateTransaction(TransactionType.Credit, funding.Amount, wallet.Id,
                                                         wallet.CurrencyId);
            }
            else
            {
                var targetCode = _currencyRepository.GetCurrencyCode(wallet.CurrencyId);
                var sourceCode = _currencyRepository.GetCurrencyCode(funding.CurrencyId);

                var newAmount = await CurrencyRate.ConvertCurrency(sourceCode, targetCode, funding.Amount);

                wallet.Balance += newAmount ?? 0;

                _transactionRepository.CreateTransaction(TransactionType.Credit, newAmount ?? 0, wallet.Id, funding.CurrencyId);
            }

            return(await UpdateWallet(wallet));
        }
Example #5
0
        public async Task AddAmountAsync_AllParamsAreCorrect_Ok()
        {
            //arrange
            Guid    fundingId  = Guid.NewGuid();
            Guid    investorId = Guid.NewGuid();
            decimal amount     = 5000;

            Funding funding = new Funding
            {
                Id          = Guid.NewGuid(),
                Name        = "Fund 1",
                Description = "The description of the Fund 1",
                GoalAmount  = 75000
            };

            _repository.GetFundingAsync(Arg.Any <Guid>()).Returns(funding);

            //act
            IFundingService service = new FundingService(_repository);
            await service.AddAmountAsync(fundingId, investorId, amount);

            //assert
            Assert.Equal(amount, funding.CollectedAmount);
            Assert.Contains(investorId, funding.InvestorIds);
            await _repository.Received(1).AddAmountAsync(funding, investorId, amount);
        }
        public void DeleteEnrollment_DeletesDanglingSubObjects()
        {
            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollment = new Enrollment();
                var child      = new Child();
                var funding    = new Funding();
                enrollment.Id        = 1;
                funding.Enrollment   = enrollment;
                funding.EnrollmentId = enrollment.Id;
                enrollment.Child     = child;

                var enrollmentRepo = new EnrollmentRepository(context);
                var fundingRepo    = new FundingRepository(context);
                enrollmentRepo.AddEnrollment(enrollment);

                Assert.Equal(EntityState.Added, context.Entry(enrollment).State);

                enrollmentRepo.DeleteEnrollment(enrollment);

                Assert.Equal(EntityState.Detached, context.Entry(funding).State);
                Assert.Equal(EntityState.Added, context.Entry(child).State);
                Assert.Equal(EntityState.Detached, context.Entry(enrollment).State);
            }
        }
Example #7
0
        public void SaveFundingTest()
        {
            String tempFolder = Path.GetTempPath();


            FundingsResult result = _api.GetFundings(new GetFundingsRequest {
                Page = 0
            });

            Assert.AreEqual(Result.Success, result.Result);
            Assert.AreEqual(1, result.Pages);
            Assert.IsTrue(result.Fundings.Count >= 1);

            Funding funding = result.Fundings[0];

            String name = tempFolder + funding.Filename + ".cvs";

            // Delete the file, if it exists:
            File.Delete(name);
            Assert.IsFalse(File.Exists(name));

            // Save the file and check its existence:
            _api.SaveFunding(funding, tempFolder);
            Assert.IsTrue(File.Exists(name));
        }
Example #8
0
        private void OnSubscription(SubscribedResponse response)
        {
            _streams.SubscriptionSubject.OnNext(response);

            var channelId = response.ChanId;

            // ********************
            // ADD HANDLERS BELOW
            // ********************

            switch (response.Channel)
            {
            case "ticker":
                _channelIdToHandler[channelId] = (data, config) =>
                                                 Ticker.Handle(data, response, config, _streams.TickerSubject);
                break;

            case "trades":
                //if pair is null means that is funding
                if (response.Pair == null)
                {
                    _channelIdToHandler[channelId] = (data, config) =>
                                                     Funding.Handle(data, response, config, _streams.FundingsSubject);
                }
                else
                {
                    _channelIdToHandler[channelId] = (data, config) =>
                                                     Trade.Handle(data, response, config, _streams.TradesSubject, _streams.TradesSnapshotSubject);
                }
                break;

            case "candles":
                _channelIdToHandler[channelId] = (data, config) =>
                                                 Candles.Handle(data, response, _streams.CandlesSubject);
                break;

            case "book":
                _channelIdToHandler[channelId] = (data, config) =>
                                                 Book.Handle(data, response, config, _streams.BookSubject, _streams.BookSnapshotSubject, _streams.BookChecksumSubject);
                break;

            case "status":
                if (response.Key.StartsWith("deriv"))
                {
                    _channelIdToHandler[channelId] = (data, config) =>
                                                     DerivativePairStatus.Handle(data, response, _streams.DerivativePairSubject);
                }

                if (response.Key.StartsWith("liq"))
                {
                    _channelIdToHandler[channelId] = (data, config) =>
                                                     LiquidationFeedStatus.Handle(data, response, _streams.LiquidationFeedSubject);
                }

                break;
                //default:
                //    Log.Warning($"Missing subscription handler '{response.Channel}'");
                //    break;
            }
        }
Example #9
0
        public void DeleteEnrollment_DeletesDanglingSubObjects()
        {
            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollment = new Enrollment();
                var child      = new Child();
                var funding    = new Funding();
                enrollment.Id        = 1;
                funding.Enrollment   = enrollment;
                funding.EnrollmentId = enrollment.Id;
                enrollment.Child     = child;

                var mapper = new MapperConfiguration(opts =>
                {
                    opts.AddProfile(new EnrollmentProfile());
                    opts.AddProfile(new FundingProfile());
                    opts.AddProfile(new ChildProfile());
                    opts.AddProfile(new FamilyProfile());
                    opts.AddProfile(new SiteProfile());
                }).CreateMapper();
                var enrollmentRepo = new EnrollmentRepository(context, mapper);
                var fundingRepo    = new FundingRepository(context);
                enrollmentRepo.AddEnrollment(enrollment);

                Assert.Equal(EntityState.Added, context.Entry(enrollment).State);

                enrollmentRepo.DeleteEnrollment(enrollment);

                Assert.Equal(EntityState.Detached, context.Entry(funding).State);
                Assert.Equal(EntityState.Added, context.Entry(child).State);
                Assert.Equal(EntityState.Detached, context.Entry(enrollment).State);
            }
        }
Example #10
0
        private static void ReContract(RMKerbal disputekerbal)
        {
            if (!Funding.CanAfford((float)disputekerbal.Salary + (float)disputekerbal.OwedSalary))
            {
                return;
            }

            Funding.Instance.AddFunds(-(disputekerbal.Salary + disputekerbal.OwedSalary), TransactionReasons.CrewRecruited);
            disputekerbal.Timelastsalary                 = Planetarium.GetUniversalTime();
            disputekerbal.SalaryContractDispute          = false;
            disputekerbal.SalaryContractDisputeProcessed = true;
            disputekerbal.SalaryContractDisputePeriods   = 0;
            disputekerbal.PayriseRequired                = 0d;
            disputekerbal.OwedSalary = 0d;
            //If they are a tourist (dispute) and not dead (DeepFreeze frozen/comatose) set them back to crew
            if (disputekerbal.Type != ProtoCrewMember.KerbalType.Tourist ||
                disputekerbal.Status == ProtoCrewMember.RosterStatus.Dead)
            {
                return;
            }

            disputekerbal.Type         = ProtoCrewMember.KerbalType.Crew;
            disputekerbal.Kerbal.type  = ProtoCrewMember.KerbalType.Crew;
            disputekerbal.Trait        = disputekerbal.RealTrait;
            disputekerbal.Kerbal.trait = disputekerbal.RealTrait;
            KerbalRoster.SetExperienceTrait(disputekerbal.Kerbal, disputekerbal.Kerbal.trait);
            RMKerbal.RegisterExperienceTrait(disputekerbal);
        }
Example #11
0
        public static Funding CreateFunding(
            HedwigContext context,
            FundingSource source  = FundingSource.CDC,
            Enrollment enrollment = null,
            ReportingPeriod firstReportingPeriod = null,
            ReportingPeriod lastReportingPeriod  = null,
            FundingSpace fundingSpace            = null
            )
        {
            enrollment   = enrollment ?? EnrollmentHelper.CreateEnrollment(context);
            fundingSpace = fundingSpace ??
                           FundingSpaceHelper.CreateFundingSpace(context, enrollment.Site.OrganizationId);
            var funding = new Funding
            {
                EnrollmentId           = enrollment.Id,
                Source                 = source,
                FirstReportingPeriodId = firstReportingPeriod != null ? firstReportingPeriod.Id : null as int?,
                LastReportingPeriodId  = lastReportingPeriod != null ? lastReportingPeriod.Id : null as int?,
                FundingSpaceId         = fundingSpace != null ? fundingSpace.Id : null as int?
            };

            context.Fundings.Add(funding);
            context.SaveChanges();
            return(funding);
        }
Example #12
0
        private async Task ValidateAsync(Funding funding, Guid investorId, decimal amount)
        {
            if (amount < MinInvestedAmount)
            {
                throw new ArgumentException("The invested amount cannot be smalled than 100€.");
            }

            if (amount > MaxInvestedAmount)
            {
                throw new ArgumentException("The invested amount cannot bigger than 10000€.");
            }

            if (funding == null)
            {
                throw new ArgumentException("Funding does not exist.");
            }

            if (funding.InvestorIds.Contains(investorId))
            {
                throw new ArgumentException("The investor already invested.");
            }

            if (funding.CollectedAmount + amount > funding.GoalAmount)
            {
                throw new ArgumentException("The goal amount exceeded.");
            }
        }
Example #13
0
 public void buySailSeconds()
 {
     if (timeToBuy > 0)
     {
         if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
         {
             if (Funding.CanAfford(timeToBuy * laserCost))
             {
                 secBought += timeToBuy;
                 print("[Sprite Mod] Bought " + timeToBuy + " seconds for " + (laserCost * timeToBuy) + " funds");
                 ScreenMessages.PostScreenMessage("-" + (laserCost * timeToBuy) + " funds", 2.0f, ScreenMessageStyle.UPPER_CENTER);
                 Funding.Instance.AddFunds(-(laserCost * timeToBuy), TransactionReasons.None);
                 timeToBuy = 0;
             }
             else
             {
                 ScreenMessages.PostScreenMessage("Not enough money", 5.0f, ScreenMessageStyle.UPPER_CENTER);
             }
         }
         else
         {
             secBought += timeToBuy;
             print("[Sprite Mod] Bought " + timeToBuy + " seconds");
             timeToBuy = 0;
         }
     }
 }
        /// <summary>
        /// Updates the production of the resource.
        /// </summary>
        public void UpdateProduction(double elapsedTime)
        {
            if (!isRunning)
            {
                return;
            }
            if (resourceDef == null)
            {
                return;
            }
            double unitsPerFrame = (unitsPerDay / WBIRefinery.SecondsPerDay) * elapsedTime;
            double resourceCost;

            //Make sure we have enough room
            if (unitsPerFrame + amount > maxAmount)
            {
                unitsPerFrame = maxAmount - amount;
            }

            //Add the produced units if we can afford them
            if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
            {
                resourceCost = resourceDef.unitCost * unitCostMultiplier * unitsPerFrame;
                if (Funding.CanAfford((float)resourceCost))
                {
                    Funding.Instance.AddFunds(-resourceCost, TransactionReasons.Vessels);
                    amount += unitsPerFrame;
                }

                //Can't afford it so stop production
                else
                {
                    isRunning = false;
                }
            }

            //Just add the units
            else
            {
                amount += unitsPerFrame;
            }

            //If we're full then we're done.
            if (amount >= maxAmount)
            {
                isRunning = false;
            }

            //If we have a limited production run then record what we've produced.
            if (limitProduction)
            {
                unitsToProduce -= unitsPerFrame;
                if (unitsToProduce <= 0)
                {
                    unitsToProduce = 0;
                    isRunning      = false;
                }
            }
        }
Example #15
0
        public void _15_Funding()
        {
            AttachToProcess(Processes.Encompass, 5);

            FundingWorksheet.OpenForm_FromToolsTab().txt_FundsOrdered_SendKeys("").txt_FundsSent_SendKeys("");

            Funding.Open_FromLogTab().chk_Finish_Check();
        }
        public async Task InsertOrReplaceAsync(Funding funding)
        {
            var entity = new FundingEntity(GetPartitionKey(), GetRowKey());

            Mapper.Map(funding, entity);

            await _storage.InsertOrReplaceAsync(entity);
        }
 public void AddFunding(Funding fund)
 {
     using (var db = new CrowDoDB())
     {
         db.Fundings.Add(fund);
         db.SaveChanges();
     }
 }
Example #18
0
 private void DepositFunds(int playerInput)
 {
     if (!Funding.CanAfford(playerInput))
     {
         return;
     }
     balance += playerInput;
     Funding.Instance.AddFunds(-playerInput, TransactionReasons.None);
 }
Example #19
0
        public void UpdateEnrollment_AddsFundings()
        {
            Enrollment   enrollment;
            FundingSpace fundingSpace;

            using (var context = new TestHedwigContextProvider().Context)
            {
                enrollment   = EnrollmentHelper.CreateEnrollment(context);
                fundingSpace = FundingSpaceHelper.CreateFundingSpace(
                    context,
                    organizationId: enrollment.Site.OrganizationId,
                    source: FundingSource.CDC,
                    ageGroup: enrollment.AgeGroup.Value
                    );
            }

            Funding funding = new Funding
            {
                EnrollmentId   = enrollment.Id,
                Source         = FundingSource.CDC,
                FundingSpaceId = fundingSpace.Id
            };

            Assert.Null(enrollment.Fundings);

            enrollment.Fundings = new List <Funding> {
                funding
            };

            var mapper = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new EnrollmentProfile());
                opts.AddProfile(new FundingProfile());
                opts.AddProfile(new ChildProfile());
                opts.AddProfile(new FamilyProfile());
                opts.AddProfile(new SiteProfile());
            }).CreateMapper();

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo = new EnrollmentRepository(context, mapper);

                var enrollmentDTO = mapper.Map <Enrollment, EnrollmentDTO>(enrollment);
                enrollmentRepo.UpdateEnrollment(enrollment, enrollmentDTO);
                context.SaveChanges();
            }

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo      = new EnrollmentRepository(context, mapper);
                var retrievedEnrollment = enrollmentRepo.GetEnrollmentById(enrollment.Id);
                Assert.NotEmpty(retrievedEnrollment.Fundings);

                var retrievedFunding = retrievedEnrollment.Fundings.FirstOrDefault();
                Assert.Equal(funding.Id, retrievedFunding.Id);
            }
        }
Example #20
0
        public async Task <Funding> SelectById(int id)
        {
            Funding funding = new Funding();

            funding = await db.Funding.AsNoTracking()
                      .FirstOrDefaultAsync(f => f.Id == id);

            return(funding);
        }
Example #21
0
        protected void drawRushJobButton(EditorBayItem editorBayItem)
        {
            //Rush jobs only apply to Career games.
            if (HighLogic.CurrentGame.Mode != Game.Modes.CAREER)
            {
                return;
            }

            Color         oldColor            = GUI.backgroundColor;
            ShipConstruct ship                = EditorLogic.fetch.ship;
            int           totalMaxReliability = 100 * editorBayItem.breakablePartCount;
            int           baseQuality         = editorBayItem.totalQuality + editorBayItem.totalIntegrationAdded;
            int           maxQuality          = editorBayItem.totalQuality + editorBayItem.totalIntegrationAdded + editorBayItem.totalIntegrationToAdd;
            float         rushJobCost         = editorBayItem.rushJobCost * (1.0f - ((float)baseQuality / (float)maxQuality));

            //Rush Job button (Career only?)
            GUILayout.BeginHorizontal();
            GUI.backgroundColor = XKCDColors.ColorTranslator.FromHtml("#c3fa70");
            if (GUILayout.Button(fundsIcon, buttonOptions))
            {
                //Can we afford it?
                if (Funding.CanAfford(rushJobCost))
                {
                    if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER && !BARISScenario.showDebug)
                    {
                        Funding.Instance.AddFunds(-rushJobCost, TransactionReasons.Any);
                    }

                    //Add the integration cap to the base quality, and clear the cap.
                    if (editorBayItem.totalIntegrationToAdd > 0)
                    {
                        editorBayItem.totalIntegrationAdded = editorBayItem.totalIntegrationToAdd;
                        editorBayItem.totalIntegrationToAdd = 0;
                    }

                    //Delete the KAC alarm if any
                    if (KACWrapper.AssemblyExists && KACWrapper.APIReady && !string.IsNullOrEmpty(editorBayItem.KACAlarmID))
                    {
                        KACWrapper.KAC.DeleteAlarm(editorBayItem.KACAlarmID);
                    }

                    //Load the vessel
                    loadVessel(editorBayItem, false);
                }
                else //Inform user
                {
                    BARISScenario.Instance.LogPlayerMessage(Localizer.Format(BARISScenario.CannotAffordRushMsg));
                }
            }
            GUI.backgroundColor = oldColor;
            fundsIcon           = selectFundsIcon();

            //Rush job cost
            GUILayout.Label("<color=white><b>" + Localizer.Format(BARISScenario.CostLabel) + "</b>" + string.Format("{0:n0}", rushJobCost) + "</color>");
            GUILayout.EndHorizontal();
        }
Example #22
0
        /// <inheritdoc />
        public async Task AddAmountAsync(Guid fundingId, Guid investorId, decimal amount)
        {
            Funding funding = await _repository.GetFundingAsync(fundingId);

            await ValidateAsync(funding, investorId, amount);

            funding.CollectedAmount += amount;
            funding.InvestorIds.Add(investorId);

            await _repository.AddAmountAsync(funding, investorId, amount);
        }
Example #23
0
        public bool PurchaseConfig(PartUpgradeHandler.Upgrade upgd)
        {
            if (Funding.CanAfford(upgd.entryCost))
            {
                Funding.Instance?.AddFunds(-upgd.entryCost, TransactionReasons.RnDPartPurchase);
                PartUpgradeManager.Handler.SetUnlocked(upgd.name, true);
                return(true);
            }

            return(false);
        }
 /// <summary>
 /// Determines whether or not the player can afford to unlock the node
 /// </summary>
 /// <returns>True if the player can afford the upgrade, false if not.</returns>
 public bool CanAffordUnlock()
 {
     if (HighLogic.CurrentGame.Mode != Game.Modes.CAREER && HighLogic.CurrentGame.Mode != Game.Modes.SCIENCE_SANDBOX)
     {
         return(true);
     }
     else
     {
         return(Funding.CanAfford(unlockCost));
     }
 }
 private void ProcessContractDispute(ProtoCrewMember crew, KeyValuePair <string, RMKerbal> kerbal, double currentTime, bool start, bool extend)
 {
     // They will continue to work for RMLifeSpan.Instance.rmGameSettings.MaxContractDisputePeriods of salaryperiod, with a payrise that must be accepted each time. All backpay is accrued.
     // Or they quit/strike after RMLifeSpan.Instance.rmGameSettings.MaxContractDisputePeriods or if user does not accept the payrise.
     RmUtils.LogMessage($"RosterManagerLifeSpanAddon.CheckSalary unable to pay {crew.name} salary.", "info", RMSettings.VerboseLogging);
     if (start)                                                                                                                          //Start a new contract dispute
     {
         ScreenMessages.PostScreenMessage($"{Localizer.Format("#autoLOC_RM_1103")} {crew.name}", 5.0f, ScreenMessageStyle.UPPER_CENTER); // #autoLOC_RM_1103 = Insufficient funds to pay {0} salary at this time.
         kerbal.Value.SalaryContractDispute = true;
         kerbal.Value.RealTrait             = kerbal.Value.Trait;
         //Start processing dispute, increase the periods we have been in dispute, user must accept payrise as well (if they don't the kerbal Quits) and calculate and store their backpay owed.
         ExtendContractDispute(crew, kerbal);
     }
     else // Process existing contract dispute
     {
         //Check if we have funds now?
         //If we have pay them.
         //Else extend the contract dispute.
         if (Funding.CanAfford((float)kerbal.Value.Salary + (float)kerbal.Value.OwedSalary))
         {
             Funding.Instance.AddFunds(-(kerbal.Value.Salary + kerbal.Value.OwedSalary), TransactionReasons.CrewRecruited);
             kerbal.Value.Timelastsalary                 = currentTime;
             kerbal.Value.SalaryContractDispute          = false;
             kerbal.Value.SalaryContractDisputeProcessed = true;
             kerbal.Value.SalaryContractDisputePeriods   = 0;
             kerbal.Value.PayriseRequired                = 0d;
             kerbal.Value.OwedSalary = 0d;
             //If they are a tourist (dispute) and not dead (DeepFreeze frozen/comatose) set them back to crew
             if (kerbal.Value.Type == ProtoCrewMember.KerbalType.Tourist && crew.rosterStatus != ProtoCrewMember.RosterStatus.Dead)
             {
                 kerbal.Value.Type  = ProtoCrewMember.KerbalType.Crew;
                 crew.type          = ProtoCrewMember.KerbalType.Crew;
                 kerbal.Value.Trait = kerbal.Value.RealTrait;
                 crew.trait         = kerbal.Value.RealTrait;
                 KerbalRoster.SetExperienceTrait(crew, crew.trait);
                 RMKerbal.RegisterExperienceTrait(kerbal.Value);
             }
             RmUtils.LogMessage($"RosterManagerLifeSpanAddon.CheckSalary paid {crew.name} salary.", "info", RMSettings.VerboseLogging);
             RmUtils.LogMessage($"RosterManagerLifeSpanAddon.CheckSalary contract dispute ended {crew.name}", "info", RMSettings.VerboseLogging);
             ScreenMessages.PostScreenMessage(
                 $"{crew.name} {Localizer.Format("#autoLOC_RM_1104")} {kerbal.Value.Salary + kerbal.Value.OwedSalary}", 5.0f, ScreenMessageStyle.UPPER_CENTER); // #autoLOC_RM_1104 = Paid {0} salary of {1}
             ScreenMessages.PostScreenMessage($"{crew.name} {Localizer.Format("#autoLOC_RM_1105")}", 5.0f, ScreenMessageStyle.UPPER_CENTER);                    // #autoLOC_RM_1105 = {0} contract dispute ended.
         }
         else //Can't end dispute
         {
             if (!extend)
             {
                 return;
             }
             kerbal.Value.Timelastsalary = currentTime;
             ExtendContractDispute(crew, kerbal);
         }
     }
 }
Example #26
0
        internal void ThawFrozenCrew(String FrozenCrew, Guid vesselID)
        {
            Utilities.Log("DeepFreezeEvents ThawFrozenCrew = " + FrozenCrew + "," + vesselID);
            bool            fundstaken = false;
            ProtoCrewMember kerbal     = HighLogic.CurrentGame.CrewRoster.Unowned.FirstOrDefault(a => a.name == FrozenCrew);

            if (kerbal != null)
            {
                Vessel vessel = FlightGlobals.Vessels.Find(v => v.id == vesselID);
                // Utilities.Log_Debug("vessel mainbody" + vessel.mainBody.name + " is homeworld? " + vessel.mainBody.isHomeWorld);

                if (vessel == null ||
                    (vessel.mainBody.isHomeWorld &&
                     (vessel.situation == Vessel.Situations.LANDED || vessel.situation == Vessel.Situations.PRELAUNCH || vessel.situation == Vessel.Situations.SPLASHED)))
                {
                    if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
                    {
                        if (Funding.CanAfford(DFsettings.KSCcostToThawKerbal))
                        {
                            Funding.Instance.AddFunds(-DFsettings.KSCcostToThawKerbal, TransactionReasons.Vessels);
                            fundstaken = true;
                            Utilities.Log("Took funds to thaw kerbal");
                        }
                        else
                        {
                            Utilities.Log("Not enough funds to thaw kerbal");
                            ScreenMessages.PostScreenMessage("Insufficient funds to thaw " + kerbal.name + " at this time", 5.0f, ScreenMessageStyle.UPPER_LEFT);
                            return;
                        }
                    }
                    kerbal.type         = ProtoCrewMember.KerbalType.Crew;
                    kerbal.rosterStatus = ProtoCrewMember.RosterStatus.Assigned;
                    Utilities.Log_Debug("Kerbal " + kerbal.name + " " + kerbal.type + " " + kerbal.rosterStatus);
                    kerbal.ArchiveFlightLog();
                    kerbal.rosterStatus = ProtoCrewMember.RosterStatus.Available;
                    Utilities.Log_Debug("Kerbal " + kerbal.name + " " + kerbal.type + " " + kerbal.rosterStatus);
                    if (!fundstaken)
                    {
                        ScreenMessages.PostScreenMessage(kerbal.name + " was found and thawed out", 5.0f, ScreenMessageStyle.UPPER_LEFT);
                    }
                    else
                    {
                        ScreenMessages.PostScreenMessage(kerbal.name + " was found and thawed out " + DFsettings.KSCcostToThawKerbal.ToString("########0") + " funds deducted from account", 5.0f, ScreenMessageStyle.UPPER_CENTER);
                    }
                    DFgameSettings.KnownFrozenKerbals.Remove(kerbal.name);
                }
                else
                {
                    Utilities.Log("Cannot thaw, vessel still exists " + vessel.situation + " at " + vessel.mainBody.bodyName);
                    ScreenMessages.PostScreenMessage("Cannot thaw " + kerbal.name + " vessel still exists " + vessel.situation + " at " + vessel.mainBody.bodyName, 5.0f, ScreenMessageStyle.UPPER_CENTER);
                }
            }
        }
        /// <summary>
        /// Checks if the funcding exists
        /// </summary>
        /// <param name="funding">An instance of <see cref="Funding"/></param>
        /// <returns></returns>
        public async Task <bool> CheckIfTheInvestmentExist(Funding funding)
        {
            // check if the funding exists in the db
            var dbFunding = await(_digitalInvestDbContext.Fundings.Where(f => f.ProjectId == funding.ProjectId && f.InvestorId == funding.InvestorId)).FirstOrDefaultAsync();

            if (dbFunding == null)
            {
                return(false);
            }

            return(true);
        }
Example #28
0
        //"Outsourcing" is when a player pays to freeze time for a number of minutes.
        //This allows the player to make crafts faster when in a hurry, but at an increased cost.
        public void Outsource()
        {
            //return if player cannot afford or is already outsourcing.
            if (!Funding.CanAfford(settings.outsourceCost) ||
                OutsourceTimer().HasValue)
            {
                return;
            }

            Funding.Instance.AddFunds(-settings.outsourceCost, TransactionReasons.None);
            lastUpdate    = DateTime.MaxValue;
            lastOutsource = DateTime.Now;
        }
Example #29
0
        /// <inheritdoc />
        public async Task AddAmountAsync(Funding funding, Guid investorId, decimal amount)
        {
            Funding entity = _fundings.Single(f => f.Id == funding.Id);

            entity.CollectedAmount = funding.CollectedAmount;
            entity.InvestorIds     = funding.InvestorIds;

            _fundingInvestors.Add(new FundingInvestor
            {
                FundingId  = funding.Id,
                InvestorId = investorId,
                Amount     = amount
            });
        }
Example #30
0
        internal void handleUpgrade()
        {
            int oldLevel = getMember <int>("level");

            KCTDebug.Log($"Upgrading from level {oldLevel}");

            string facilityID = GetFacilityID();

            KCT_UpgradingBuilding upgrading = new KCT_UpgradingBuilding(facilityID, oldLevel + 1, oldLevel, facilityID.Split('/').Last());

            upgrading.isLaunchpad = facilityID.ToLower().Contains("launchpad");
            if (upgrading.isLaunchpad)
            {
                upgrading.launchpadID = KCT_GameStates.ActiveKSC.ActiveLaunchPadID;
                if (upgrading.launchpadID > 0)
                {
                    upgrading.commonName += KCT_GameStates.ActiveKSC.ActiveLPInstance.name;
                }
            }

            if (!upgrading.AlreadyInProgress())
            {
                float cost = getMember <float>("upgradeCost");

                if (Funding.CanAfford(cost))
                {
                    Funding.Instance.AddFunds(-cost, TransactionReasons.Structures);
                    KCT_GameStates.ActiveKSC.KSCTech.Add(upgrading);
                    upgrading.SetBP(cost);
                    upgrading.cost = cost;

                    ScreenMessages.PostScreenMessage("Facility upgrade requested!", 4.0f, ScreenMessageStyle.UPPER_CENTER);
                    KCTDebug.Log($"Facility {facilityID} upgrade requested to lvl {oldLevel + 1} for {cost} funds, resulting in a BP of {upgrading.BP}");
                }
                else
                {
                    KCTDebug.Log("Couldn't afford to upgrade.");
                    ScreenMessages.PostScreenMessage("Not enough funds to upgrade facility!", 4.0f, ScreenMessageStyle.UPPER_CENTER);
                }
            }
            else if (oldLevel + 1 != upgrading.currentLevel)
            {
                ScreenMessages.PostScreenMessage("Facility is already being upgraded!", 4.0f, ScreenMessageStyle.UPPER_CENTER);
                KCTDebug.Log($"Facility {facilityID} tried to upgrade to lvl {oldLevel+1} but already in list!");
            }

            _menu.Dismiss(KSCFacilityContextMenu.DismissAction.None);
        }
Example #31
0
 public SavedGameState()
 {
     money = gameManager.Instance.getMoney();
     funding = gameManager.Instance.getFunding();
     time = gameManager.Instance.getTime();
     pendingRequests = gameManager.Instance.getPendingRequests();
     currentBase = gameManager.Instance.getCurrentBaseNum();
     availableId = gameManager.Instance.getAvailableId();
     availableWeapons = gameManager.Instance.getAvailableWeapons();
     unresearchedWeapons = gameManager.Instance.getUnresearchedWeapons();
     nameList = gameManager.Instance.getNameList();
     // set random with new
     bases = gameManager.Instance.getBases();
     activeLevel = gameManager.Instance.getLevel();
     missionsSuccess = gameManager.Instance.getMissionSuccess();
     missionsFailed = gameManager.Instance.getMissionFailed();
     CiviliansKilled = gameManager.Instance.CiviliansKilled;
     CiviliansSaved = gameManager.Instance.CiviliansSaved;
 }
Example #32
0
    //This is where we instantiate every variables for a new game
    public void startState()
    {
        print ("Creating a new game state.");
        //Set variables relevent to game manager
        money = 500000;
        funding = new Funding();
        time = System.DateTime.Now;

        // variable used to create new soldiers.
        availableId = 0;
        //Calling the new scene
        setLevel("WorldMap");
        nameList = createNameList();

        missionsSuccess = 0;
        missionsFailed = 0;
    }
Example #33
0
    // Start from saved game
    public void setState(SavedGameState save)
    {
        this.money = save.money;
        this.funding = save.funding;
        this.time = save.time;
        this.pendingRequests = save.pendingRequests;
        this.currentBase = save.currentBase;
        this.availableId = save.availableId;
        this.availableWeapons = save.availableWeapons;
        this.unresearchedWeapons = save.unresearchedWeapons;
        this.nameList = save.nameList;
        this.random = new System.Random();
        this.bases = save.bases;

        missionsSuccess = save.missionsSuccess;
        missionsFailed = save.missionsFailed;
        CiviliansKilled = save.CiviliansKilled;
        CiviliansSaved = save.CiviliansSaved;

        setLevel("WorldMap");
    }