public async Task <IMarginTradingWatchList> AddAsync(IMarginTradingWatchList watchList) { await _tableStorage.InsertOrReplaceAsync(MarginTradingWatchListEntity.Create(watchList)); var entity = await _tableStorage.GetDataAsync(MarginTradingWatchListEntity.GeneratePartitionKey(watchList.ClientId), MarginTradingWatchListEntity.GenerateRowKey(watchList.Id)); return(MarginTradingWatchList.Create(entity)); }
public async Task <WatchListResult <IMarginTradingWatchList> > AddAsync(string id, string clientId, string name, List <string> assetIds) { var result = new WatchListResult <IMarginTradingWatchList>(); var isNew = string.IsNullOrEmpty(id); var watchLists = (await GetWatchLists(clientId)).ToList(); var allAssets = await GetAvailableAssetIds(clientId); foreach (var assetId in assetIds) { if (!allAssets.Contains(assetId)) { result.Status = WatchListStatus.AssetNotFound; result.Message = assetId; return(result); } } var existing = watchLists.FirstOrDefault(item => item.Id == id); if (existing != null && existing.ReadOnly) { result.Status = WatchListStatus.ReadOnly; result.Message = "This watch list is readonly"; return(result); } var watchList = new MarginTradingWatchList { Id = isNew ? Guid.NewGuid().ToString("N") : id, ClientId = clientId, Name = name, AssetIds = assetIds }; if (isNew) { watchList.Order = watchLists.Count; } if (existing != null) { watchList.Order = existing.Order; } result.Result = await _watchListRepository.AddAsync(watchList); return(result); }