예제 #1
0
        internal static void UpdateBlueprints(string token, int userId)
        {
            if (string.IsNullOrWhiteSpace(token) || userId == 0)
            {
                return;
            }

            var blueprints = EveSwaggerInterface.GetBlueprints(token, userId);

            if (blueprints == null)
            {
                return;
            }

            foreach (var blueprint in blueprints)
            {
                //if (!SettingsInterface.GlobalSettings.ShowBlueprintCopies)
                {
                    if (blueprint.runs != -1)
                    {
                        continue;
                    }
                }

                var esiDataBlueprint = _blueprints.FirstOrDefault(x => x.Id == blueprint.type_id);
                if (esiDataBlueprint != null)
                {
                    _blueprints.Remove(esiDataBlueprint);
                }

                _blueprints.Add(new EsiDataBlueprint(blueprint));
            }
        }
예제 #2
0
        internal static void SynchronizeCharacterOrders()
        {
            _eoiDataBlueprints.ForEach(x => x.ClearCharacterOrders());

            var users = GetUsers();

            foreach (var user in users)
            {
                var token = user.GetAccessToken();
                if (token != null)
                {
                    var esiCharacterOrders = EveSwaggerInterface.GetCharacterOrders(token, user.Id);
                    if (esiCharacterOrders == null)
                    {
                        continue;
                    }

                    foreach (var order in esiCharacterOrders)
                    {
                        if (order.region_id.ToString() != Regions.GetTradehubRegionId(SolarSystems.GetSolarSystem(SettingsInterface.GlobalSettings.TradeHub)))
                        {
                            continue;
                        }

                        var eoiDataBlueprint = GetBlueprintByProduct(order.type_id);
                        if (eoiDataBlueprint != null)
                        {
                            eoiDataBlueprint.AddCharacterOrder(order);
                        }
                    }
                }
            }
        }
예제 #3
0
        internal static void RequestMarketHistory()
        {
            if (EveSwaggerInterface.Working())
            {
                return;
            }

            var failedRequests = EveSwaggerInterface.GetFailedHistoryRequests();

            foreach (var failedRequest in failedRequests)
            {
                var esiType = EveSwaggerInterface.GetType(failedRequest.Id);
                if (esiType == null || !esiType.published)
                {
                    var product = EoiDataInterface.GetTypeById(failedRequest.Id);
                    if (product != null)
                    {
                        product.Invalid = true;
                        EoiDataInterface.CheckInvalid();
                    }
                }
            }

            EveSwaggerInterface.ClearFailedHistoryRequests();

            var blueprints = EoiDataInterface.GetBlueprints();

            foreach (var blueprint in blueprints)
            {
                foreach (var product in blueprint.Products)
                {
                    RawEsiPriceHistory marketHistory = null;

                    var region = Regions.GetTradehubRegionId(SolarSystems.GetSolarSystem(SettingsInterface.GlobalSettings.TradeHub));

                    marketHistory = EveSwaggerInterface.GetMarketHistory(product.Id, region);
                    if (marketHistory != null)
                    {
                        var esiDataMarketHistory = _marketHistory.FirstOrDefault(x => Equals(x.History, marketHistory));
                        if (esiDataMarketHistory == null)
                        {
                            var oldEsiDataMarketHistory = _marketHistory.FirstOrDefault(x => x.Id == marketHistory.typeId && x.Region == marketHistory.regionId);
                            if (oldEsiDataMarketHistory != null)
                            {
                                _marketHistory.Remove(oldEsiDataMarketHistory);
                            }

                            _marketHistory.Add(new EsiDataMarketHistory(marketHistory));
                        }
                    }
                }
            }
        }
예제 #4
0
        internal static void Init()
        {
            EveSwaggerInterface.Load();

            if (_solarSystems == null)
            {
                EveSwaggerInterface.LoadSolarSystems();
            }

            InitializePrices();
            InitializeSystemCostIndices();
            InitializeMarketHistory();
            InitializeMarketOrders();
            InitializeBlueprints();
            InititalizeSolarSystems();
        }
예제 #5
0
        internal static void ImportMarketOrders(List <EsiDataMarketOrders> orders)
        {
            if (orders == null)
            {
                return;
            }

            if (_marketOrders == null)
            {
                _marketOrders = new List <EsiDataMarketOrders>();
            }

            foreach (var h in orders)
            {
                _marketOrders.Add(h);
            }

            EveSwaggerInterface.AddMarketOrders(orders.Select(x => x.Orders).ToList());
        }
예제 #6
0
        internal static void ImportMarketHistory(List <EsiDataMarketHistory> history)
        {
            if (history == null)
            {
                return;
            }

            if (_marketHistory == null)
            {
                _marketHistory = new List <EsiDataMarketHistory>();
            }

            foreach (var h in history)
            {
                _marketHistory.Add(h);
            }

            EveSwaggerInterface.AddMarketHistory(history.Select(x => x.History).ToList());
        }
예제 #7
0
        internal static void SynchronizeAssets()
        {
            foreach (var eoiDataAsset in _eoiDataAsset)
            {
                eoiDataAsset.Synchronized = false;
                eoiDataAsset.Reset();
            }

            var users = GetUsers();

            foreach (var user in users)
            {
                if (!user.SynchronizeAssets)
                {
                    continue;
                }

                var token = user.GetAccessToken();
                if (token != null)
                {
                    var esiAssets = EveSwaggerInterface.GetAssets(token, user.Id);
                    if (esiAssets == null)
                    {
                        user.SynchronizeAssets = false;
                        continue;
                    }

                    foreach (var esiAsset in esiAssets)
                    {
                        if (esiAsset.is_singleton)
                        {
                            continue;
                        }

                        if (esiAsset.location_flag != "Unlocked" && esiAsset.location_flag != "Locked" && esiAsset.location_flag != "Cargo" && esiAsset.location_flag != "Deliveries" &&
                            esiAsset.location_flag != "Hangar" && esiAsset.location_flag != "HangarAll")
                        {
                            continue;
                        }

                        if (esiAsset.is_blueprint_copy)
                        {
                            continue;
                        }

                        var eoiDataAsset = _eoiDataAsset.FirstOrDefault(x => x.Id == esiAsset.type_id);
                        if (eoiDataAsset == null)
                        {
                            eoiDataAsset = new EoiDataAsset(esiAsset);
                            _eoiDataAsset.Add(eoiDataAsset);
                        }
                        else
                        {
                            eoiDataAsset.Synchronize(esiAsset);
                        }

                        eoiDataAsset.Synchronized = true;
                    }
                }
            }

            var eoiDataAssetsToRemove = _eoiDataAsset.Where(x => x.Synchronized == false || x.GetQuantity() <= 0).ToList();

            foreach (var asset in eoiDataAssetsToRemove)
            {
                foreach (var eoiAsset in asset.GetEoiAssets())
                {
                    EoiInterface.RemoveAsset(eoiAsset);
                }

                asset.Delete();
                _eoiDataAsset.Remove(asset);
            }
        }
예제 #8
0
        internal static void SynchronizeWallet()
        {
            var users = GetUsers();

            foreach (var user in users)
            {
                if (!user.SynchronizeTransactions)
                {
                    continue;
                }

                var token = user.GetAccessToken();
                if (token != null)
                {
                    // var balance = EveSwaggerInterface.GetWalletBalance(token, user.Id);
                    var transactions = EveSwaggerInterface.GetWalletTransactions(token, user.Id);

                    if (transactions == null)
                    {
                        user.SynchronizeTransactions = false;
                        continue;
                    }

                    foreach (var transaction in transactions)
                    {
                        if (!transaction.is_buy)
                        {
                            continue;
                        }

                        var eoiDataAsset = _eoiDataAsset.FirstOrDefault(x => x.Id == transaction.type_id);
                        if (eoiDataAsset != null)
                        {
                            eoiDataAsset.AddTransaction(transaction);
                        }
                    }
                }
            }

            var eoiDataAssets = _eoiDataAsset.ToList();

            foreach (var asset in eoiDataAssets)
            {
                asset.Clean();

                if (!asset.HasPrice())
                {
                    foreach (var eoiAsset in asset.GetEoiAssets())
                    {
                        EoiInterface.RemoveAsset(eoiAsset);
                    }

                    asset.Delete();
                    _eoiDataAsset.Remove(asset);
                }
                else
                {
                    asset.UpdateEoiAssets();

                    foreach (var eoiAsset in asset.GetEoiAssets())
                    {
                    }
                }
            }
        }
예제 #9
0
 internal static RawEsiVerify Verify(string access_token)
 {
     return(EveSwaggerInterface.Verify(access_token));
 }
예제 #10
0
 internal static bool Working()
 {
     return(EveSwaggerInterface.Working());
 }
예제 #11
0
        internal static void RequestMarketOrders()
        {
            if (EveSwaggerInterface.Working())
            {
                return;
            }

            var failedRequests = EveSwaggerInterface.GetFailedOrdersRequests();

            foreach (var failedRequest in failedRequests)
            {
                var esiType = EveSwaggerInterface.GetType(failedRequest.Id);
                if (esiType == null || !esiType.published)
                {
                    var type = EoiDataInterface.GetTypeById(failedRequest.Id);
                    if (type != null)
                    {
                        type.Invalid = true;
                        EoiDataInterface.CheckInvalid();
                    }
                }
            }

            EveSwaggerInterface.ClearFailedOrdersRequests();

            var assets = EoiDataInterface.GetAssets();

            foreach (var asset in assets)
            {
                RawEsiMarketOrders marketOrders = null;

                var region = Regions.GetTradehubRegionId(SolarSystems.GetSolarSystem(SettingsInterface.GlobalSettings.TradeHub));

                marketOrders = EveSwaggerInterface.GetMarketOrders(asset.Id, region);
                if (marketOrders != null)
                {
                    var esiDataMarketOrders = _marketOrders.FirstOrDefault(x => Equals(x.Orders, marketOrders));
                    if (esiDataMarketOrders == null)
                    {
                        var oldEsiDataMarketOrders = _marketOrders.FirstOrDefault(x => x.Id == marketOrders.typeId && x.Region == marketOrders.regionId);
                        if (oldEsiDataMarketOrders != null)
                        {
                            _marketOrders.Remove(oldEsiDataMarketOrders);
                        }

                        _marketOrders.Add(new EsiDataMarketOrders(marketOrders));
                    }
                }
            }

            var blueprints = EoiDataInterface.GetBlueprints();

            foreach (var blueprint in blueprints)
            {
                {
                    RawEsiMarketOrders marketOrders = null;

                    var region = Regions.GetTradehubRegionId(SolarSystems.GetSolarSystem(SettingsInterface.GlobalSettings.TradeHub));

                    marketOrders = EveSwaggerInterface.GetMarketOrders(blueprint.Id, region);
                    if (marketOrders != null)
                    {
                        var esiDataMarketOrders = _marketOrders.FirstOrDefault(x => Equals(x.Orders, marketOrders));
                        if (esiDataMarketOrders == null)
                        {
                            var oldEsiDataMarketOrders = _marketOrders.FirstOrDefault(x => x.Id == marketOrders.typeId && x.Region == marketOrders.regionId);
                            if (oldEsiDataMarketOrders != null)
                            {
                                _marketOrders.Remove(oldEsiDataMarketOrders);
                            }

                            _marketOrders.Add(new EsiDataMarketOrders(marketOrders));
                        }
                    }
                }

                foreach (var materials in blueprint.Materials)
                {
                    RawEsiMarketOrders marketOrders = null;

                    var region = Regions.GetTradehubRegionId(SolarSystems.GetSolarSystem(SettingsInterface.GlobalSettings.TradeHub));

                    marketOrders = EveSwaggerInterface.GetMarketOrders(materials.Id, region);
                    if (marketOrders != null)
                    {
                        var esiDataMarketOrders = _marketOrders.FirstOrDefault(x => Equals(x.Orders, marketOrders));
                        if (esiDataMarketOrders == null)
                        {
                            var oldEsiDataMarketOrders = _marketOrders.FirstOrDefault(x => x.Id == marketOrders.typeId && x.Region == marketOrders.regionId);
                            if (oldEsiDataMarketOrders != null)
                            {
                                _marketOrders.Remove(oldEsiDataMarketOrders);
                            }

                            _marketOrders.Add(new EsiDataMarketOrders(marketOrders));
                        }
                    }

                    if (region != Regions.TheForge)
                    {
                        marketOrders = EveSwaggerInterface.GetMarketOrders(materials.Id, Regions.TheForge);
                        if (marketOrders != null)
                        {
                            var esiDataMarketOrders = _marketOrders.FirstOrDefault(x => Equals(x.Orders, marketOrders));
                            if (esiDataMarketOrders == null)
                            {
                                var oldEsiDataMarketOrders = _marketOrders.FirstOrDefault(x => x.Id == marketOrders.typeId && x.Region == marketOrders.regionId);
                                if (oldEsiDataMarketOrders != null)
                                {
                                    _marketOrders.Remove(oldEsiDataMarketOrders);
                                }

                                _marketOrders.Add(new EsiDataMarketOrders(marketOrders));
                            }
                        }
                    }
                }

                foreach (var product in blueprint.Products)
                {
                    RawEsiMarketOrders marketOrders = null;

                    var region = Regions.GetTradehubRegionId(SolarSystems.GetSolarSystem(SettingsInterface.GlobalSettings.TradeHub));

                    marketOrders = EveSwaggerInterface.GetMarketOrders(product.Id, region);
                    if (marketOrders != null)
                    {
                        var esiDataMarketOrders = _marketOrders.FirstOrDefault(x => Equals(x.Orders, marketOrders));
                        if (esiDataMarketOrders == null)
                        {
                            var oldEsiDataMarketOrders = _marketOrders.FirstOrDefault(x => x.Id == marketOrders.typeId && x.Region == marketOrders.regionId);
                            if (oldEsiDataMarketOrders != null)
                            {
                                _marketOrders.Remove(oldEsiDataMarketOrders);
                            }

                            _marketOrders.Add(new EsiDataMarketOrders(marketOrders));
                        }
                    }

                    if (region != Regions.TheForge)
                    {
                        marketOrders = EveSwaggerInterface.GetMarketOrders(product.Id, Regions.TheForge);
                        if (marketOrders != null)
                        {
                            var esiDataMarketOrders = _marketOrders.FirstOrDefault(x => Equals(x.Orders, marketOrders));
                            if (esiDataMarketOrders == null)
                            {
                                var oldEsiDataMarketOrders = _marketOrders.FirstOrDefault(x => x.Id == marketOrders.typeId && x.Region == marketOrders.regionId);
                                if (oldEsiDataMarketOrders != null)
                                {
                                    _marketOrders.Remove(oldEsiDataMarketOrders);
                                }

                                _marketOrders.Add(new EsiDataMarketOrders(marketOrders));
                            }
                        }
                    }
                }
            }
        }
예제 #12
0
        internal static void Start(Thread mainThread)
        {
            if (mainThread == null)
            {
                return;
            }

            MainThread = mainThread;

            while (!_stop)
            {
                CheckUserAccessTokens();

                if (SettingsInterface.GlobalSettings.EnableAutoUpdater)
                {
                    var updated = false;

                    if (SynchronizeBlueprints())
                    {
                        updated = true;
                    }

                    CheckUpdated(updated, EoiInterface.BlueprintPropertyChanged);
                    updated = false;

                    Status = new BackgroundWorkerStatus("Synchronisiere Assets", -1);
                    SynchronizeAssets();
                    SynchronizeWallet();
                    CheckUpdated(true, EoiInterface.AssetPropertyChanged);

                    Status = new BackgroundWorkerStatus("Synchronisiere Markt Orders", -1);
                    SynchronizeCharacterOrders();
                    CheckUpdated(true, EoiInterface.BlueprintPropertyChanged);

                    if (SettingsInterface.GlobalSettings.EnableCorporationContractsUpdates && !_stop)
                    {
                        Status = new BackgroundWorkerStatus("Synchronisiere Corporation Verträge", -1);
                        if (SynchronizeCorporationContracts())
                        {
                            updated = true;
                        }

                        CheckUpdated(updated, EoiInterface.ContractsPropertyChanged);
                        updated = false;
                    }

                    if (SettingsInterface.GlobalSettings.EnableMarketerUpdates && !_stop)
                    {
                        Status = new BackgroundWorkerStatus("Aktualisiert Markt Preise", -1);
                        if (CheckMarketerData())
                        {
                            updated = true;
                        }

                        CheckUpdated(true, EoiInterface.AssetPropertyChanged);
                        CheckUpdated(updated, EoiInterface.BlueprintPropertyChanged);
                        updated = false;
                    }

                    if (SettingsInterface.GlobalSettings.EnableMarketHistoryUpdates && !_stop)
                    {
                        Status = new BackgroundWorkerStatus("Aktualisiert Markt Verkaufszahlen", -1);
                        if (CheckMarketHistory())
                        {
                            updated = true;
                        }

                        CheckUpdated(updated, EoiInterface.BlueprintPropertyChanged);
                        updated = false;
                    }
                }

                var preStop = false;
                for (int i = 0; i < 30; i++)
                {
                    if (!_stop)
                    {
                        CheckUserAccessTokens();

                        if (_calculateBlueprints)
                        {
                            Status = new BackgroundWorkerStatus("Berechne Blueprints", -1);
                            _calculateBlueprints = false;
                            EoiDataInterface.CalculateAllBlueprints();
                            CheckUpdated(true, EoiInterface.BlueprintPropertyChanged);
                        }

                        if (EveSwaggerInterface.Working())
                        {
                            var state = EveSwaggerInterface.GetProgressState();
                            Status  = new BackgroundWorkerStatus("Download vom Eve Online Server: " + state.FinishedOperations + " / " + state.Operations, state.Progress);
                            preStop = true;
                        }
                        else
                        {
                            Status = new BackgroundWorkerStatus("", 0);
                        }

                        Thread.Sleep(SettingsInterface.GlobalSettings.AutoUpdaterInterval / 30);

                        if (preStop && !EveSwaggerInterface.Working())
                        {
                            i = 30;
                        }
                    }
                }
            }
        }