Пример #1
0
        public VarlikResult Save(UserTransactionLogDto userCoinTransactionLogDto)
        {
            if (userCoinTransactionLogDto == null)
            {
                var result = new VarlikResult();
                result.Status = ResultStatus.MissingRequiredParamater;
                return(result);
            }

            var saveResult = _userCoinTransactionLogOperation.Save(userCoinTransactionLogDto);

            if (saveResult.IsSuccess)
            {
                var listR = GetLastTwoTransactionsByIdCoinType(userCoinTransactionLogDto.IdCoinType);
                if (listR.IsSuccess && listR.Data.Count >= 2)
                {
                    PriceDto priceDto = new PriceDto();
                    priceDto.IdCoinType    = userCoinTransactionLogDto.IdCoinType;
                    priceDto.CoinUnitPrice = listR.Data[0].CoinUnitPrice;
                    if (listR.Data[0].CoinUnitPrice > listR.Data[1].CoinUnitPrice)
                    {
                        priceDto.IsIncreasing = true;
                    }
                    else
                    {
                        priceDto.IsIncreasing = false;
                    }

                    CoinPricePublisher coinPricePublisher = new CoinPricePublisher();
                    coinPricePublisher.PublishPrice(priceDto);
                }
            }
            return(saveResult);
        }
        public async Task Update(PriceDto dto)
        {
            using (var context = new DataContext())
            {
                var updatePrice = context.Prices.FirstOrDefault(x => x.Id == dto.Id);

                if (updatePrice == null)
                {
                    throw new Exception("The Price to modify was not found");
                }
                else
                {
                    if (updatePrice.ErasedState)
                    {
                        throw new Exception("The Price is eliminated");
                    }

                    updatePrice.NominalPrice       = dto.NominalPrice;
                    updatePrice.PromotionalPrice   = dto.PromotionalPrice;
                    updatePrice.DiscountPercentage = dto.DiscountPercentage;

                    await _priceRepository.Update(updatePrice);
                }
            }
        }
        public override PriceDto GenerateNextQuote(PriceDto previousPrice)
        {
            var pow      = (decimal)Math.Pow(10, CurrencyPair.RatePrecision);
            var movement = 5 / pow;

            decimal newMid;

            if (_isIncreasing)
            {
                newMid = previousPrice.Mid + movement;
                if (newMid > _max)
                {
                    _isIncreasing = false;
                }
            }
            else
            {
                newMid = previousPrice.Mid - movement;
                if (newMid < _min)
                {
                    _isIncreasing = true;
                }
            }

            return(new PriceDto
            {
                Symbol = previousPrice.Symbol,
                SpotDate = DateTime.UtcNow.AddDays(2).Date.ToWeekday(),
                Mid = newMid,
                Ask = newMid + 5 / pow,
                Bid = newMid - 5 / pow,
                CreationTimestamp = Stopwatch.GetTimestamp()
            });
        }
Пример #4
0
        public async Task Update(Guid id, PriceDto priceDto)
        {
            var price = await _priceRepository.GetById(id);

            if (price == null)
            {
                throw new KeyNotFoundException($"Price with id: {id} not found.");
            }

            var product = await _productRepository.GetById(priceDto.ProductId);

            if (product == null)
            {
                throw new KeyNotFoundException($"Product with id: {priceDto.ProductId} not found.");
            }

            price.Value              = priceDto.Value;
            price.ProductId          = priceDto.ProductId;
            price.Product            = product;
            price.DateTime           = priceDto.DateTime;
            price.LastModificationBy = priceDto.LastModificationBy;

            await _priceRepository.Update(price);

            await _priceRepository.CommitAsync();
        }
Пример #5
0
        private CreditAccountStateDto CloseAccount(CreditAccountDto account, CreditAccountStateDto latestCreditAccountState)
        {
            var accountCurrency = account.Currency;

            account.IsClosed = true;
            var updateCreditAccountCommand = new UpdateModelCommand <CreditAccountDto>()
            {
                ModelDto = account
            };

            _creditAccountCommandRepository.Execute(updateCreditAccountCommand);

            var zeroPrice = new PriceDto()
            {
                Currency = accountCurrency,
                Value    = 0m
            };
            var closingCreditAccountState = new CreditAccountStateDto()
            {
                CreditAccount           = account,
                FinesForOverdue         = zeroPrice,
                InterestCounted         = zeroPrice,
                MainDebtRemain          = zeroPrice,
                RemainDebt              = zeroPrice,
                Month                   = latestCreditAccountState.Month + 1,
                TotalInterestSumNotPaid = zeroPrice
            };
            var newCreditAccountStateCommand = new CreateModelCommand <CreditAccountStateDto>()
            {
                ModelDto = closingCreditAccountState
            };

            _creditAccountStateCommandRepository.Execute(newCreditAccountStateCommand);
            return(closingCreditAccountState);
        }
Пример #6
0
        public async Task <ICollection <PriceDto> > GetAdjustedPrices(LoanDto dto, CancellationToken cancellationToken)
        {
            var dtos = new List <PriceDto>();

            var llpas = _ctx.Llpas.ToList();

            var validLlpas = GetValidLlpas(dto, llpas);

            var priceAdjustment = validLlpas.Sum(s => s.PriceAdjustment);
            var priceCeiling    = validLlpas.Count > 0 ? validLlpas.Min(m => m.PriceCeiling ?? decimal.MaxValue) : decimal.MaxValue;
            var priceFloor      = validLlpas.Count > 0 ? validLlpas.Max(m => m.PriceFloor ?? decimal.MinValue) : decimal.MinValue;

            foreach (var price in Prices)
            {
                var adjustedPrice = price.Price + priceAdjustment;

                var priceDto = new PriceDto
                {
                    Days          = price.Days,
                    Rate          = price.Rate,
                    Price         = price.Price,
                    AdjustedPrice = adjustedPrice,
                    IsValid       = adjustedPrice >= priceFloor && adjustedPrice <= priceCeiling
                };

                dtos.Add(priceDto);
            }

            await Task.CompletedTask;

            return(dtos);
        }
Пример #7
0
        public async Task Publish(PriceDto price)
        {
            var context = _contextHolder.PricingHubClient;

            if (context == null)
            {
                return;
            }

            _totalUpdatesPublished++;
            var groupName = string.Format(PricingHub.PriceStreamGroupPattern, price.Symbol);

            try
            {
                await context.Group(groupName).OnNewPrice(price);

                if (Log.IsDebugEnabled)
                {
                    Log.DebugFormat("Published price to group {0}: {1}", groupName, price);
                }
            }
            catch (Exception e)
            {
                Log.Error(string.Format("An error occurred while publishing price to group {0}: {1}", groupName, price), e);
            }
        }
Пример #8
0
        public List <PriceDto> GetPriceList()
        {
            using (SqlConnection connection = new SqlConnection(Config.ConnectionString))
            {
                try
                {
                    connection.Open();
                    SqlCommand cmd =
                        new SqlCommand("usp_get_price_list", connection)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    cmd.Parameters.Add(new SqlParameter("@mode", true));

                    List <PriceDto> priceList = new List <PriceDto>();

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            PriceDto price = new PriceDto();
                            price.ID    = (int)reader["MaMP"];
                            price.Price = (decimal)reader["MucPhi"];
                            priceList.Add(price);
                        }
                    }

                    return(priceList);
                }
                catch (Exception e)
                {
                    return(null);
                }
            }
        }
        public async Task Delete(PriceDto dto)
        {
            var price = await _priceRepository.GetById(dto.Id);

            if (price != null)
            {
                var delete = await _priceRepository.GetById(price.Id);

                if (delete.ErasedState)
                {
                    delete.ErasedState = false;

                    await _priceRepository.Update(delete);
                }
                else
                {
                    delete.ErasedState = true;

                    await _priceRepository.Update(delete);
                }
            }
            else
            {
                throw new Exception("This Price not exist");
            }
        }
Пример #10
0
        public void GetDataSets_DoesntOverrideExistingObjectsWithNulls_IfTheyAreNotInSpecificRepositories()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = new QuotationDto[] { utf.getQuotationDto(1), utf.getQuotationDto(2), utf.getQuotationDto(3), utf.getQuotationDto(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = new PriceDto[] { utf.getPriceDto(1), utf.getPriceDto(2), utf.getPriceDto(3), utf.getPriceDto(4) };

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef);

            if (dataSets == null)
            {
                throw new Exception("Collection should not be null");
            }

            DataSet baseDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);

            if (baseDataSet == null)
            {
                throw new Exception("Base data set shouldn't be null");
            }

            Price basePrice = (baseDataSet == null ? null : baseDataSet.GetPrice());

            if (basePrice == null)
            {
                throw new Exception("Base price shouldn't be null");
            }


            priceRepository.Setup(q => q.GetPrices(queryDef)).Returns(new PriceDto[] { });
            service.InjectPriceRepository(priceRepository.Object);
            dataSets = service.GetDataSets(queryDef);
            DataSet comparedDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);
            Price   comparedPrice   = (comparedDataSet == null ? null : comparedDataSet.GetPrice());

            //Assert
            var areTheSameObject = (basePrice == comparedPrice);

            Assert.IsTrue(areTheSameObject);
        }
Пример #11
0
        public void Should_UpdatePriceLevel_When_Price_Crosses_PriceLevel()
        {
            var mockHttpClient = new Mock <IHttpPriceLevelRepository>();
            var mockLogger     = new Mock <ILogger <PriceTradeExecutor> >();
            var mockCache      = new Mock <ICacheManager>();

            var mockTradeProfile = new Mock <ITradeProfileFactory>();

            var p = new TradeParameters()
            {
                BuySell = ""
            };

            var trans = new TradeTransaction(p)
            {
                Closed = false
            };

            //mockTradeProfile.Setup(a=>a.GetTradeGenerationService(It.IsAny<string>()).Generate(It.IsAny<PriceDto>(),It.IsAny<string>())).Returns(trans);

            var priceLevels = new List <PriceLevelDto>()
            {
                new PriceLevelDto()
                {
                    BuySell  = "BUY",
                    AskPrice = 1.3000m
                },
                new PriceLevelDto()
                {
                    BuySell  = "SELL",
                    BidPrice = 1.2000m
                }
            };

            var lastPrice = new PriceDto()
            {
                Ask = 1.3001m, Bid = 1.1999m
            };

            mockCache.Setup(x => x.GetAsync <List <PriceLevelDto> >("price-levels")).ReturnsAsync(priceLevels);

            mockCache.Setup(x => x.GetAsync <PriceDto>("price"))
            .ReturnsAsync(lastPrice);

            var mockPublisher = new Mock <IPriceTradePublisher>();

            var subject = new PriceTradeExecutor(mockLogger.Object, mockCache.Object, mockPublisher.Object);

            var price = new PriceDto()
            {
                Ask = 1.2999m, Bid = 1.2001m
            };

            subject.Execute(price, 0.0000m);

            mockHttpClient.Verify(a => a.UpdatePriceLevel(It.IsAny <PriceLevelDto>()), Times.Exactly(2));
        }
Пример #12
0
 public void OnPrice(PriceDto priceDto)
 {
     _eventLoopScheduler.Schedule(() =>
     {
         _priceCache[priceDto.Symbol] = priceDto;
         var currencyPairTracker      = GetTrackerFor(priceDto.Symbol);
         currencyPairTracker.OnPrice(_priceCache, false);
     });
 }
Пример #13
0
        public static Price CreateFromDto(Tarrif tarrif, PriceDto request)
        {
            var newInstance = new Price();

            newInstance.AgeFrom = request.AgeFrom;
            newInstance.AgeTo   = request.AgeTo;
            newInstance.Rate    = request.Rate;
            newInstance.Tarrif  = tarrif;
            return(newInstance);
        }
Пример #14
0
        public IPrice Create(PriceDto priceDto, ICurrencyPair currencyPair)
        {
            var bid   = new ExecutablePrice(Direction.SELL, priceDto.Bid, _executionRepository);
            var ask   = new ExecutablePrice(Direction.BUY, priceDto.Ask, _executionRepository);
            var price = new Price(bid, ask, priceDto.SpotDate, currencyPair, priceDto.CreationTimestamp);

            _priceLatencyRecorder.OnReceived(price);

            return(price);
        }
Пример #15
0
        public void PublishPrice(PriceDto priceDto)
        {
            var jsonValue = JsonConvert.SerializeObject(priceDto, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            });

            var hub = GlobalHost.ConnectionManager.GetHubContext <CoinPriceHub>();

            ((IClientProxy)hub.Clients.Group("price")).Invoke("getPrice", jsonValue).Wait();
        }
Пример #16
0
        public async Task <ActionResult <PriceDto> > GetAsync(string id)
        {
            PriceDto price = await _coinService.GetByIdAsync <PriceDto>(id);

            if (price == null)
            {
                return(NotFound());
            }

            return(Ok(price));
        }
        public async Task Create(PriceDto dto)
        {
            var price = new Domain.Entities.Price
            {
                NominalPrice       = dto.NominalPrice,
                PromotionalPrice   = dto.PromotionalPrice,
                DiscountPercentage = dto.DiscountPercentage,
                ErasedState        = false
            };

            await _priceRepository.Create(price);
        }
        public void Should_Iterate_EachPrice_ThroughModel()
        {
            var subject = GetSubjectUnderTest();

            var price = new PriceDto()
            {
                Bid = 1.25m,
                Ask = 1.30m
            };

            subject.UpdateTradeLocked(price);
            Assert.IsTrue(true);
        }
Пример #19
0
        public void GameStorage_Init_Successfull()
        {
            var storage = SerializeHelper.DeserializeFromFile <GameStorage>(@"E:\git\Splendor\Core\Cards.xml");

            var test  = storage.Save();
            var price = new PriceDto {
                Gems = new List <GemCountDto> {
                    new GemCountDto(Gem.Blue, 1)
                }
            };
            var test2    = SerializeHelper.Serialize(price);
            var priceDto = SerializeHelper.Deserialize <PriceDto>(test2);
        }
        public TradeTransaction Generate(PriceDto price, string buySell)
        {
            var tradeParams = new TradeParameters()
            {
                RiskRewardProfile = nameof(TradeProfileRiskThreeTimesEqual),
                SpreadAsPips      = 10,
                RiskReward        = 3,
                TradeCounter      = 3,
                EntryPrice        = 1.3m,
                BuySell           = buySell,
                Market            = price.Market
            };

            return(new TradeTransaction(tradeParams));
        }
Пример #21
0
        private void PopulateLastValueCache()
        {
            foreach (var currencyPairInfo in _currencyPairRepository.GetAllCurrencyPairs())
            {
                var mid = _currencyPairRepository.GetSampleRate(currencyPairInfo.CurrencyPair.Symbol);

                var initialQuote = new PriceDto
                {
                    Symbol = currencyPairInfo.CurrencyPair.Symbol,
                    Mid    = mid
                };

                _priceLastValueCache.StoreLastValue(currencyPairInfo.GenerateNextQuote(initialQuote));
            }
        }
Пример #22
0
        public void GetDataSets_ReturnsCollectionWithAllGivenAnalysisTypes()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = utf.getDefaultQuotationDtosCollection();

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = new PriceDto[] { utf.getPriceDto(1), utf.getPriceDto(2), utf.getPriceDto(3), utf.getPriceDto(4) };

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var dataSets = service.GetDataSets(queryDef);

            //Assert
            DataSet ds1 = utf.getDataSet(1);

            ds1.SetQuotation(utf.getQuotation(ds1)).SetPrice(utf.getPrice(ds1));
            DataSet ds2 = utf.getDataSet(2);

            ds2.SetQuotation(utf.getQuotation(ds2)).SetPrice(utf.getPrice(ds2));
            DataSet ds3 = utf.getDataSet(3);

            ds3.SetQuotation(utf.getQuotation(ds3)).SetPrice(utf.getPrice(ds3));
            DataSet ds4 = utf.getDataSet(4);

            ds4.SetQuotation(utf.getQuotation(ds4)).SetPrice(utf.getPrice(ds4));
            IEnumerable <DataSet> expectedDataSets = new DataSet[] { ds1, ds2, ds3, ds4 };
            var areEqual = expectedDataSets.HasEqualItems(dataSets);

            Assert.IsTrue(areEqual);
        }
        public async Task GivenBackgroundTaskIsEitherRunningOrNot_WhenGettingPrice_ThenGetsPriceFromProvider(bool isRunning)
        {
            // Arrange
            var dto = new PriceDto();

            _priceHubPoolMock.Setup(m => m.IsRunning(CryptoCurrency, Currency)).Returns(isRunning);
            _cryptoProviderMock.Setup(m => m.GetPrice(CryptoCurrency, Currency)).Returns(Task.FromResult(dto));

            // Act
            var result = await _controller.GetPrice(CryptoCurrency, Currency);

            // Assert
            result.Should().NotBeNull();
            var okResult = (OkObjectResult)result;

            okResult.Value.Should().BeSameAs(dto);
        }
 public void Start()
 {
     var subscription = Observable.Interval(TimeSpan.FromSeconds(10)).Subscribe(
         x =>
     {
         var price = new PriceDto
         {
             QuoteId   = x,
             Ask       = new Random().Next(0, 10),
             Bid       = new Random().Next(0, 8),
             Mid       = new Random().Next(0, 6),
             ValueDate = DateTime.UtcNow,
             Symbol    = "USDGBP"
         };
         this._pricePublisher.Publish(price);
     });
 }
Пример #25
0
        public void GetDataSets_UseAlwaysExistingInstancesOfObjects_EvenIfThereIsAnotherOneInRepository()
        {
            //Arrange:QueryDef
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(1, 1)
            {
                AnalysisTypes = analysisTypes
            };

            //Arrange:Quotations
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            IEnumerable <QuotationDto>  quotationDtos       = new QuotationDto[] { utf.getQuotationDto(1), utf.getQuotationDto(2), utf.getQuotationDto(3), utf.getQuotationDto(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            //Arrange:Prices
            Mock <IPriceRepository> priceRepository = new Mock <IPriceRepository>();
            IEnumerable <PriceDto>  priceDtos       = new PriceDto[] { utf.getPriceDto(1), utf.getPriceDto(2), utf.getPriceDto(3), utf.getPriceDto(4) };

            priceRepository.Setup(p => p.GetPrices(queryDef)).Returns(priceDtos);

            //Act
            IDataSetService service = new DataSetService();

            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            var     dataSets    = service.GetDataSets(queryDef);
            DataSet baseDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);

            Quotation stubQuotation = utf.getQuotation(2);

            stubQuotation.Open = stubQuotation.Open + 3;
            IEnumerable <Quotation> quotations = new Quotation[] { utf.getQuotation(1), stubQuotation, utf.getQuotation(3), utf.getQuotation(4) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);

            service.InjectQuotationRepository(quotationRepository.Object);
            dataSets = service.GetDataSets(queryDef);
            DataSet comparedDataSet = dataSets.SingleOrDefault(ds => ds.IndexNumber == 2);

            //Assert
            var areTheSameObject = (baseDataSet.GetQuotation() == comparedDataSet.GetQuotation());

            Assert.IsTrue(areTheSameObject);
        }
Пример #26
0
        public async Task AddPrice(PriceDto priceData, int lotId)
        {
            using (var db = new BuckwheatContext())
            {
                Lot lot = await db.Lots.FirstOrDefaultAsync(x => x.Id == lotId);

                if (lot == null)
                {
                    throw new ArgumentException($"Lot with id {lotId} was not found in the database.");
                }
                Price price = mapper.Map <PriceDto, Price>(priceData);
                price.Lot = lot;

                await db.Prices.AddAsync(price);

                await db.SaveChangesAsync();
            }
        }
Пример #27
0
        public async Task SubscribePriceStream(PriceSubscriptionRequestDto request)
        {
            _contextHolder.PricingHubClient = Clients;

            Console.WriteLine("Received subscription request {0} from connection {1}", request, Context.ConnectionId);

            // add client to this group
            var groupName = string.Format(PriceStreamGroupPattern, request.CurrencyPair);
            await Groups.Add(Context.ConnectionId, groupName);

            Console.WriteLine("Connection {0} added to group '{1}'", Context.ConnectionId, groupName);

            // send current price to client
            var firstPrice = new PriceDto {
                Symbol = "TEST"
            };
            await Clients.Caller.OnNewPrice(firstPrice);

            Console.WriteLine("Snapshot published to {0}: {1}", Context.ConnectionId, firstPrice);
        }
        public void OnPrice(IDictionary <string, PriceDto> priceCache, bool wasTraded)
        {
            var isLong     = _baseTradedAmount >= 0;
            var isUsdBased = CurrencyPair.StartsWith("USD");

            PriceDto monitoredPrice, crossedPrice = null;

            if (!priceCache.TryGetValue(CurrencyPair, out monitoredPrice) ||
                (!isUsdBased && !priceCache.TryGetValue(CrossedPair, out crossedPrice)))
            {
                return;
            }

            _baseSpot = isLong
                ? _counterTradedAmount / monitoredPrice.Bid
                : _counterTradedAmount / monitoredPrice.Ask;

            var basePnl = _baseTradedAmount - _baseSpot;

            decimal usdPnl;

            if (isUsdBased)
            {
                usdPnl = basePnl;
            }
            else
            {
                usdPnl = isLong
                    ? basePnl * crossedPrice.Bid
                    : basePnl * crossedPrice.Ask;
            }

            _currentPosition = new CurrencyPairPositionReport
            {
                Symbol           = CurrencyPair,
                BaseTradedAmount = _baseTradedAmount,
                BasePnl          = basePnl,
                UsdPnl           = usdPnl,
                WasTraded        = wasTraded
            };
        }
Пример #29
0
        public void GetDataSetsWithInitialCollection_ReturnsProperlyFilledAndIndexedArray_IfNullArrayWasPassedAndSomeDataWereAppended()
        {
            //Arrange
            IEnumerable <AnalysisType>  analysisTypes = new AnalysisType[] { AnalysisType.Quotations, AnalysisType.Prices };
            AnalysisDataQueryDefinition queryDef      = new AnalysisDataQueryDefinition(UTDefaulter.DEFAULT_ASSET_ID, UTDefaulter.DEFAULT_TIMEFRAME_ID)
            {
                AnalysisTypes = analysisTypes
            };
            Mock <IQuotationRepository> quotationRepository = new Mock <IQuotationRepository>();
            Mock <IPriceRepository>     priceRepository     = new Mock <IPriceRepository>();

            //Act
            IDataSetService            service       = new DataSetService();
            IEnumerable <QuotationDto> quotationDtos = new QuotationDto[] { utf.getQuotationDto(101), utf.getQuotationDto(102), utf.getQuotationDto(103) };

            quotationRepository.Setup(q => q.GetQuotations(queryDef)).Returns(quotationDtos);
            IEnumerable <PriceDto> priceDtos = new PriceDto[] { utf.getPriceDto(101), utf.getPriceDto(102), utf.getPriceDto(103) };

            priceRepository.Setup(q => q.GetPrices(queryDef)).Returns(priceDtos);
            service.InjectQuotationRepository(quotationRepository.Object);
            service.InjectPriceRepository(priceRepository.Object);
            DataSet[] result = service.GetDataSets(queryDef, new List <DataSet>()).ToArray();

            //Assert
            DataSet[] expectedDataSets = new DataSet[104];
            DataSet   ds101            = utf.getDataSet(101);

            ds101.SetQuotation(utf.getQuotation(ds101)).SetPrice(utf.getPrice(ds101));
            DataSet ds102 = utf.getDataSet(102);

            ds102.SetQuotation(utf.getQuotation(ds102)).SetPrice(utf.getPrice(ds102));
            DataSet ds103 = utf.getDataSet(103);

            ds103.SetQuotation(utf.getQuotation(ds103)).SetPrice(utf.getPrice(ds103));
            expectedDataSets[101] = ds101;
            expectedDataSets[102] = ds102;
            expectedDataSets[103] = ds103;
            var areEqual = expectedDataSets.HasEqualItemsInTheSameOrder(result);

            Assert.IsTrue(areEqual);
        }
Пример #30
0
        public IHttpActionResult UpdatePrice(int id, PriceDto priceDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var priceInDb = _context.Productz.SingleOrDefault(p => p.Id == id);

            if (priceInDb == null)
            {
                return(NotFound());
            }
            Mapper.Map(priceDto, priceInDb);

            var product = Mapper.Map <PriceDto, Price>(priceDto);

            _context.SaveChanges();
            priceDto.Id = product.Id;
            return(Created(new Uri(Request.RequestUri + "/" + product.Id), priceDto));
        }