public async Task UpdateIndustryJobs(UpdateTimeDto indyUpdate, DateTime assetUpdate)
        {
            await GetLists();

            var industryJobApi = await _apiService.GetApiResult<IndustryJobDto>(new Credential(), CallContext.Corp, CallEndPoint.IndustryJobs);

            if (!industryJobApi.Success)
                throw new Exception($"Industry job API failed with message: {industryJobApi.Message}");

            var industryJobs = industryJobApi.Result;
            var indyJobUpdate = indyUpdate.LastUpdate;

            var latestUpdate = indyJobUpdate > assetUpdate ? indyJobUpdate : assetUpdate;

            var newManufacturingJobs = industryJobs.Where(p => p.StartDate > latestUpdate && p.ActivityId == (int)Activities.Manufacturing);
            var tasks = newManufacturingJobs.Select(CheckManufacturingJob).ToList();

            // TODO: Deal with copy jobs

            var newInventions = industryJobs.Where(p => p.StartDate > latestUpdate && p.ActivityId == (int)Activities.Invention).ToList();
            tasks.AddRange(newInventions.Select(CheckInventionJob).ToList());

            await Task.WhenAll(tasks);

            await _todoRepository.SaveList(_stock);
            await _todoRepository.SaveList(_components);
            await _todoRepository.SaveList(_products);

            indyUpdate.CachedUntil = industryJobApi.CachedUntil;
            indyUpdate.LastUpdate = industryJobApi.CurrentTime;
        }
Exemplo n.º 2
0
        public async Task UpdateTransaction(UpdateTimeDto dto)
        {
            var response = await _apiService.GetApiResult<TransactionDto>(new Credential(), CallContext.Corp, CallEndPoint.WalletTransactions);

            if (!response.Success)
                throw new Exception($"Transaction Update failed: {response.Message}");

            var transactions = (await _todoRepository.GetList<TransactionDto>()).ToList();
            var newActions = response.Result.Where(p => transactions.All(t => t.TypeId != p.TypeId)).ToList();
            transactions.AddRange(newActions);

            dto.CachedUntil = response.CachedUntil.AddDays(1);
            dto.LastUpdate = response.CurrentTime;
        }
        public async Task<UpdateTimeDto> UpdateMarketOrders(UpdateTimeDto dto)
        {
            var api = await _apiService.GetApiResult<MarketOrder>(new Credential(), CallContext.Corp, CallEndPoint.MarketOrders);
            var oldOrders = (await _repository.GetList<Order>()).ToList();

            var newOrders = api.Result.Where(p => oldOrders.All(o => o.OrderId != p.OrderId)).ToList();
            newOrders.ForEach(p => oldOrders.Add(new Order(p)));

            var updatedOrders = api.Result.Where(p => oldOrders.Any(o => o.TypeId == p.OrderId && o.OrderState != (int)MarketOrderState.ExpiredOrFulfilled)).ToList();

            foreach (var order in updatedOrders)
            {
                await oldOrders.FirstOrDefault(p => p.OrderId == order.OrderId).UpdateOrder(order);
            }

            await _repository.SaveList(oldOrders.Where(p => p.Finished == DateTime.MaxValue || p.Finished > DateTime.UtcNow.AddMonths(-3)));

            dto.CachedUntil = api.CachedUntil;
            dto.LastUpdate = api.CurrentTime;

            return dto;
        }
Exemplo n.º 4
0
        public async Task UpdateAssetList(UpdateTimeDto time)
        {
            try
            {
                var toSell = 4;
                var material = 116;
                //var delivery = 62;

                var assetApi = await _apiService.GetApiResult<Asset>(new Credential(), CallContext.Corp, CallEndPoint.AssetList);
                var flattenMe = assetApi.Result.ToList();
                var assets = await FlattenAssets(flattenMe);

                // update material stock
                var stock = assets
                    .Where(p => p.Flag == material)
                    .GroupBy(p => p.TypeId)
                    .Select(p => new StockItem(p.Key, "", (int)p.Sum(d => d.Quantity)))
                    .ToList();

                var toSellList = assets
                    .Where(p => p.Flag == toSell)
                    .GroupBy(p => p.TypeId)
                    .Select(p => new ToMarket(p.Key, "", (int)p.Sum(d => d.Quantity)))
                    .ToList();

                await _todoRepository.SaveList(stock);
                await _todoRepository.SaveList(toSellList);

                time.CachedUntil = assetApi.CachedUntil;
                time.LastUpdate = assetApi.CurrentTime;
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

        }
Exemplo n.º 5
0
        private async Task UpdateBlueprints(UpdateTimeDto dto)
        {
            try
            {
                var printApi = await _apiService.GetApiResult<Blueprint>(new Credential(), CallContext.Corp, CallEndPoint.Blueprints);
                _prints = printApi.Result;
                _bpInfo = await _staticService.GetBlueprintInfoAsync();
                _types = await _staticService.GetProductTypesAsync();

                var tasks = new List<Task>
                {
                    //CreateCopyList(),
                    UpdateInventions(),
                    GetBuildList()
                };

                await Task.WhenAll(tasks);

                await _todoRepository.SaveList(_inventions);
                await _todoRepository.SaveList(_products);
                
                _stock = await _todoRepository.GetList<StockItem>();
                await GroupComponents();
                await CheckMaterials();

                dto.CachedUntil = printApi.CachedUntil;
                dto.LastUpdate = printApi.CurrentTime;
            }
            catch (Exception e)
            {
                throw new Exception($"Blueprint update failed: {e.Message}");
            }
        }