private IEnumerable <AssetResponse> ListAssetResult(int?forcedAssetId = null) { var selectAssets = forcedAssetId.HasValue ? new int[] { forcedAssetId.Value } : null; List <AssetCurrentValue> assets = null; List <AdvisorRanking> advisors = null; Parallel.Invoke(() => assets = AssetCurrentValueBusiness.ListAllAssets(true, selectAssets), () => advisors = AdvisorRankingBusiness.ListAdvisorsFullData()); var user = GetLoggedUser(); return(assets.Select(c => GetAssetResponse(user, c, null, advisors))); }
public IEnumerable <AssetResponse> ListTrendingAssets(int?listSize) { var numberOfRecordsInResult = listSize ?? 10; var numberOfDays = 7; var statusList = new int[3] { OrderStatusType.Executed.Value, OrderStatusType.Close.Value, OrderStatusType.Finished.Value }; var ids = OrderBusiness.ListTrendingAssetIdsBasedOnOrders(statusList, numberOfRecordsInResult, numberOfDays).ToList(); var assets = AssetCurrentValueBusiness.ListAllAssets(true, ids); var loggedUser = GetLoggedUser(); var assetResponse = assets.Select(asset => GetAssetResponse(loggedUser, asset, null, null)).OrderBy(asset => ids.IndexOf(asset.AssetId)); return(assetResponse); }
private void UpdateAssetsMarketcap(IEnumerable <AssetResult> assetResults) { List <DomainObjects.Asset.Asset> assets = null; List <AssetCurrentValue> assetCurrentValues = null; Parallel.Invoke(() => assets = AssetBusiness.ListAssets(true), () => assetCurrentValues = AssetCurrentValueBusiness.ListAllAssets(true)); var pendingToInsertValue = assets.Where(c => !assetCurrentValues.Any(v => v.Id == c.Id)); var resultList = assetResults.Where(c => (c.MarketCap.HasValue && c.MarketCap > 0) || (pendingToInsertValue.Any() && c.Price.HasValue)); var assetsToUpdate = new List <DomainObjects.Asset.Asset>(); var currentValuesToInsert = new List <AssetCurrentValue>(); foreach (var assetValue in resultList) { var asset = assets.FirstOrDefault(c => c.CoinGeckoId == assetValue.Id); if (asset != null) { if (assetValue.MarketCap.HasValue || assetValue.CirculatingSupply.HasValue) { var update = false; if (assetValue.MarketCap.HasValue && assetValue.MarketCap != asset.MarketCap && assetValue.MarketCap > 0) { asset.MarketCap = assetValue.MarketCap; update = true; } if (assetValue.CirculatingSupply.HasValue && assetValue.CirculatingSupply != asset.CirculatingSupply && assetValue.CirculatingSupply > 0) { asset.CirculatingSupply = assetValue.CirculatingSupply; update = true; } if (update) { assetsToUpdate.Add(asset); } } if (assetValue.Price.HasValue && pendingToInsertValue.Any(c => c.Id == asset.Id)) { currentValuesToInsert.Add(new AssetCurrentValue() { CurrentValue = assetValue.Price.Value, Id = asset.Id, UpdateDate = Data.GetDateTimeNow() }); } } } using (var transaction = TransactionalDapperCommand) { foreach (var asset in assetsToUpdate) { transaction.Update(asset); } foreach (var value in currentValuesToInsert) { transaction.Insert(value); } transaction.Commit(); } }