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; }
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; }
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); } }
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}"); } }