Exemple #1
0
        private static void UpdateCurrencyRates(object s)
        {
            var state = (State)s;

            using (var dbUnit = new DbUnit())
            {
                state.LastUpdateTime = GetCurrencyRates(dbUnit, state.Currencies,
                                                        state.LastUpdateTime);
            }
        }
Exemple #2
0
 protected object this[DbUnit unit]
 {
     get
     {
         return(unit);
     }
     set
     {
         unit.Value = value;
     }
 }
Exemple #3
0
        public static void Initialize(AppContext context)
        {
            var dbUnit          = new DbUnit(context);
            var currencies      = GetCurrencies(dbUnit);
            var currentDateTime = GetCurrencyRates(dbUnit, currencies);
            var state           = new State()
            {
                Currencies     = currencies,
                LastUpdateTime = currentDateTime
            };

            Timer = new Timer(UpdateCurrencyRates,
                              state,
                              (long)TimeSpan.FromDays(1)
                              .TotalMilliseconds,
                              (long)TimeSpan.FromDays(1)
                              .TotalMilliseconds);
        }
Exemple #4
0
 public bool ValueEquals(object obj)
 {
     if (obj is DBUPGRADE)
     {
         if (this.Count != 0)
         {
             return(this[0] == (obj as DBUPGRADE));
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(DbUnit.ValueEquals(this, obj));
     }
 }
        public static IEnumerable <CurrenciesRatesModel> GetCurrenciesRates()
        {
            using (var dbUnit = new DbUnit())
            {
                var usDollarRates    = dbUnit.CurrencyRates.Find(rate => rate.Currency.Name == "US Dollar");
                var chinaYuanRates   = dbUnit.CurrencyRates.Find(rate => rate.Currency.Name == "China Yuan");
                var japaneseYenRates = dbUnit.CurrencyRates.Find(rate => rate.Currency.Name == "Japanese Yen");

                return((from dollarRate in usDollarRates
                        join japaneseYenRate in japaneseYenRates on dollarRate.Date equals japaneseYenRate.Date
                        join chinaYuanRate in chinaYuanRates on dollarRate.Date equals chinaYuanRate.Date
                        select new CurrenciesRatesModel()
                {
                    Date = dollarRate.Date,
                    USDollarRate = (double)Math.Round(dollarRate.Value, 2),
                    ChinaYuanRate = (double)Math.Round(chinaYuanRate.Value, 2),
                    JapaneseYenRate = (double)Math.Round(japaneseYenRate.Value, 2)
                }).ToList());
            }
        }
        private static void AddUnits(DbGame game, DbTurn turn, JArray units, DbRegion region, DbStructure structure, Dictionary <int, string> unitMemory, Dictionary <int, string> orders)
        {
            int unitOrder = 0;

            foreach (JObject unit in units)
            {
                var unitFaction = unit["faction"] as JObject;
                var u           = new DbUnit
                {
                    GameId        = game.Id,
                    TurnId        = turn.Id,
                    Number        = unit.Value <int>("number"),
                    Name          = unit.Value <string>("name"),
                    FactionNumber = unitFaction != null
                        ? unitFaction.Value <int>("number")
                        : (int?)null,
                    Sequence = unitOrder
                };

                u.Own    = game.PlayerFactionNumber == u.FactionNumber;
                u.Memory = u.Own && unitMemory.TryGetValue(u.Number, out var unitMem)
                    ? unitMem
                    : null;
                u.Orders = orders.TryGetValue(u.Number, out var unitOrders)
                    ? unitOrders
                    : null;

                unit["own"] = u.Own;    // because could be loaded several reports from different factions
                u.Json      = unit.ToString();

                region.Units.Add(u);
                turn.Units.Add(u);
                if (structure != null)
                {
                    structure.Units.Add(u);
                }

                unitOrder++;
            }
        }