private TradingFee Map(Domain.Entities.TradingFee domain, IReadOnlyList <Domain.Entities.TradingFeeLevel> levels)
        {
            if (domain == null)
            {
                return(null);
            }

            var model = new TradingFee();

            model.Id        = domain.Id;
            model.BrokerId  = domain.BrokerId;
            model.AssetPair = domain.AssetPair;
            model.Asset     = domain.Asset;
            model.Levels.AddRange(levels.Select(x =>
            {
                var newLevel = new TradingFeeLevel
                {
                    Id           = x.Id,
                    TradingFeeId = x.TradingFeeId,
                    Volume       = x.Volume.ToString(CultureInfo.InvariantCulture),
                    MakerFee     = x.MakerFee.ToString(CultureInfo.InvariantCulture),
                    TakerFee     = x.TakerFee.ToString(CultureInfo.InvariantCulture),
                    Created      = x.Created.ToTimestamp(),
                    Modified     = x.Modified.ToTimestamp()
                };

                return(newLevel);
            }));
            model.Created  = Timestamp.FromDateTime(domain.Created);
            model.Modified = Timestamp.FromDateTime(domain.Modified);

            return(model);
        }
Exemplo n.º 2
0
        public async Task <TradingFeeLevel> UpdateAsync(TradingFeeLevel tradingFeeLevel, string brokerId)
        {
            using (var context = _connectionFactory.CreateDataContext())
            {
                var data = await GetAsync(tradingFeeLevel.Id, context);

                if (data == null)
                {
                    throw new EntityNotFoundException(ErrorCode.ItemNotFound, $"TradingFeeLevel with id '{tradingFeeLevel.Id}' does not exist.");
                }

                var tradingFee = await GetTradingFeeAsync(data.TradingFeeId, brokerId, context);

                if (tradingFee == null)
                {
                    throw new EntityNotFoundException(ErrorCode.ItemNotFound, $"TradingFee with id '{data.TradingFeeId}' does not exist.");
                }

                // save fields that has not be updated
                var created      = data.Created;
                var tradingFeeId = data.TradingFeeId;

                _mapper.Map(tradingFeeLevel, data);

                // restore fields that has not be updated
                data.Created      = created;
                data.TradingFeeId = tradingFeeId;

                data.Modified = DateTime.UtcNow;

                await context.SaveChangesAsync();

                return(_mapper.Map <TradingFeeLevel>(data));
            }
        }
Exemplo n.º 3
0
        public async Task <TradingFeeLevel> UpdateAsync(TradingFeeLevel tradingFeeLevel, string brokerId)
        {
            var result = await _tradingFeeLevelRepository.UpdateAsync(tradingFeeLevel, brokerId);

            _logger.LogInformation("TradingFeeLevel has been updated. {@TradingFeeLevel}", result);

            return(result);
        }
Exemplo n.º 4
0
 public TradingFeeLevelModel(TradingFeeLevel tradingFeeLevel)
 {
     Id           = tradingFeeLevel.Id;
     TradingFeeId = tradingFeeLevel.TradingFeeId;
     Volume       = decimal.Parse(tradingFeeLevel.Volume);
     MakerFee     = decimal.Parse(tradingFeeLevel.MakerFee);
     TakerFee     = decimal.Parse(tradingFeeLevel.TakerFee);
     Created      = tradingFeeLevel.Created.ToDateTime();
     Modified     = tradingFeeLevel.Modified.ToDateTime();
 }
Exemplo n.º 5
0
        public async Task <TradingFeeLevel> InsertAsync(TradingFeeLevel tradingFeeLevel, string brokerId)
        {
            using (var context = _connectionFactory.CreateDataContext())
            {
                var existedTradingFeeLevel = await GetAsync(tradingFeeLevel.Id, context);

                if (existedTradingFeeLevel != null)
                {
                    throw new DuplicatedEntityException(ErrorCode.DuplicateItem, $"TradingFeeLevel with id '{tradingFeeLevel.Id}' already exists.");
                }

                existedTradingFeeLevel = await GetAsync(tradingFeeLevel.TradingFeeId, tradingFeeLevel.Volume, context);

                if (existedTradingFeeLevel != null)
                {
                    throw new DuplicatedEntityException(ErrorCode.DuplicateItem, $"TradingFeeLevel with id '{tradingFeeLevel.TradingFeeId}' does not exist.");
                }

                var tradingFee = await GetTradingFeeAsync(tradingFeeLevel.TradingFeeId, brokerId, context);

                if (tradingFee == null)
                {
                    throw new EntityNotFoundException(ErrorCode.ItemNotFound, $"TradingFee with id '{tradingFeeLevel.TradingFeeId}' does not exist.");
                }

                var data = _mapper.Map <TradingFeeLevelEntity>(tradingFeeLevel);

                data.Created  = DateTime.UtcNow;
                data.Modified = data.Created;

                context.TradingFeeLevels.Add(data);

                await context.SaveChangesAsync();

                return(_mapper.Map <TradingFeeLevel>(data));
            }
        }