Esempio n. 1
0
        private double GetCredit(TimeSpan eftByDownloadTime, TimeSpan eftByFrameTime, SlotStatus status, BonusCalculationType calculateBonus)
        {
            if (CurrentProtein.IsUnknown)
            {
                return(0);
            }

            // Issue 125
            if (calculateBonus.Equals(BonusCalculationType.DownloadTime))
            {
                // Issue 183
                if (status.Equals(SlotStatus.RunningAsync) ||
                    status.Equals(SlotStatus.RunningNoFrameTimes))
                {
                    return(ProductionCalculator.GetCredit(CurrentProtein, eftByFrameTime));
                }

                return(ProductionCalculator.GetCredit(CurrentProtein, eftByDownloadTime));
            }
            if (calculateBonus.Equals(BonusCalculationType.FrameTime))
            {
                return(ProductionCalculator.GetCredit(CurrentProtein, eftByFrameTime));
            }

            return(CurrentProtein.Credit);
        }
Esempio n. 2
0
        public void GetCredit_Test2()
        {
            var protein = new Protein {
                Credit = 700, PreferredDays = 3, MaximumDays = 5, KFactor = 26.4
            };

            Assert.AreEqual(13648.383, ProductionCalculator.GetCredit(protein, TimeSpan.FromMinutes(5 * 100)));
        }
Esempio n. 3
0
        public void GetCredit_Test1()
        {
            var protein = new Protein {
                Credit = 700, PreferredDays = 3, MaximumDays = 5, KFactor = 26.4
            };

            Assert.AreEqual(700, ProductionCalculator.GetCredit(protein, TimeSpan.Zero));
        }
Esempio n. 4
0
            public override object Invoke(object[] args)
            {
                Debug.Assert(args.Length == 9);
                if (args.Any(x => x == null || Convert.IsDBNull(x)))
                {
                    return(0.0);
                }

                var frameTime = TimeSpan.FromSeconds((long)args[0]);
                // unbox then cast to int
                var      frames        = (int)((long)args[1]);
                var      baseCredit    = (double)args[2];
                var      kFactor       = (double)args[3];
                var      preferredDays = (double)args[4];
                var      maximumDays   = (double)args[5];
                DateTime downloadDateTime;

                DateTime.TryParseExact((string)args[6], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture,
                                       DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal,
                                       out downloadDateTime);
                DateTime completionDateTime;

                DateTime.TryParseExact((string)args[7], "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture,
                                       DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal,
                                       out completionDateTime);
                var calcOption = (long)args[8];

                TimeSpan unitTime = TimeSpan.Zero;

                switch (BonusCalculation)
                {
                case BonusCalculationType.FrameTime:
                    unitTime = TimeSpan.FromSeconds(frameTime.TotalSeconds * frames);
                    break;

                case BonusCalculationType.DownloadTime:
                    unitTime = completionDateTime.Subtract(downloadDateTime);
                    break;
                }

                if (calcOption != 0)
                {
                    return(ProductionCalculator.GetCredit(baseCredit, kFactor, preferredDays, maximumDays, unitTime));
                }
                return(ProductionCalculator.GetPPD(frameTime, frames, baseCredit, kFactor, preferredDays, maximumDays, unitTime));
            }