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));
        }
Пример #2
0
        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);
        }