Beispiel #1
0
        public void GetRates_ДанныеБерутсяИзIRatesSourceProvider_ВозвращаетсяРезультат()
        {
            IEnumerable <RateInfo> list = new List <RateInfo>()
            {
                new RateInfo()
                {
                    To   = "RUB",
                    Rate = 10,
                }
            };
            var result = new Task <IEnumerable <RateInfo> >(() => list);

            var ratesStorageService = new Mock <IRatesStorageService>();

            ratesStorageService.Setup(o => o.SaveRates(It.IsAny <string>(), It.IsAny <IEnumerable <ExpiredRateInfo> >()))
            .Verifiable();
            var ratesSourceProvider = new Mock <IRatesSourceProvider>();

            ratesSourceProvider.Setup(o => o.GetRatesAsync(It.IsAny <string>()))
            .Returns(Task.FromResult(list));

            var service = new RatesService(ratesSourceProvider.Object, ratesStorageService.Object, 10);

            var rates = service.GetRates("USD", "RUB").Result;

            Assert.IsNotEmpty(rates);
            ratesStorageService.Verify();
        }
        public string GetFilteredApartments()
        {
            var data         = new List <Rate>();
            var service_item = new RatesService();

            rates = service_item.rates();
            data  = service_item.filter_list_visitor(rates, apartments_info_model);
            var str = JsonConvert.SerializeObject(data);

            return(str);
        }
        public string GetApartments()
        {
            var data = new List <Rate>();

            try
            {
                var service_item = new RatesService();
                var rates_list   = new RatesList(service_item);
                data  = rates_list.rates;
                rates = data;
            }
            catch (Exception ex)
            {
            }
            var str = JsonConvert.SerializeObject(data);

            return(str);
        }
Beispiel #4
0
        public async Task AlreadyRatedTest()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var dbContext = new ApplicationDbContext(options);

            dbContext.Ratings.Add(new Rating
            {
                ProductId = 1,
                UserId    = "Test",
            });
            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Rating>(dbContext);
            var service    = new RatesService(repository);

            Assert.True(service.AlreadyRated("Test", 1));
            Assert.False(service.AlreadyRated("Wrong", 1));
        }
        public async Task <IActionResult> ExecuteCurrencyExchangeAsync(CurrencyExchangeModel currencyExchangeModel)
        {
            if (!await RatesService.IsValidCurrencyToQuoteAsync(currencyExchangeModel.ForeignCurrencyCode))
            {
                return(BadRequest("Foreign currency not valid"));
            }

            if (currencyExchangeModel.Direction == CurrencyExchangeDirection.SellForeign)
            {
                return(BadRequest("Selling foreign currency not fully implemented yet (missing limit business logic)."));
            }

            DateTime           transactionDate     = DateTime.Now;
            CurrencyQuoteModel foreignCurrencyRate = await RatesService.GetRateQuoteAsync(currencyExchangeModel.ForeignCurrencyCode,
                                                                                          transactionDate);

            if (foreignCurrencyRate == null)
            {
                return(BadRequest($"No rate found for {currencyExchangeModel.ForeignCurrencyCode} on {transactionDate}"));
            }

            double foreignCurrencyAmount = CurrencyExchangeService.CalculateForeignCurrencyAmount(currencyExchangeModel.Direction,
                                                                                                  currencyExchangeModel.LocalCurrencyAmount,
                                                                                                  foreignCurrencyRate.SellValue,
                                                                                                  foreignCurrencyRate.BuyValue);

            double userRemainingLimit = await CurrencyExchangeService.GetUserRemainingLimitAsync(currencyExchangeModel.UserId,
                                                                                                 currencyExchangeModel.ForeignCurrencyCode,
                                                                                                 transactionDate);

            //TODO: This validation works corretly when buying foreign, but needs refactor for selling
            if (userRemainingLimit < foreignCurrencyAmount)
            {
                return(BadRequest("Operation would exceed monthly limits. Operation cancelled."));
            }

            CurrencyExchangeTransactionModel newTransaction = await CurrencyExchangeService.SubmitTransactionAsync(currencyExchangeModel,
                                                                                                                   foreignCurrencyAmount,
                                                                                                                   transactionDate,
                                                                                                                   foreignCurrencyRate.RateId);

            return(Ok(newTransaction));
        }
Beispiel #6
0
        public async Task AddRateAsyncTest()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var dbContext = new ApplicationDbContext(options);
            await dbContext.SaveChangesAsync();

            var repository = new EfDeletableEntityRepository <Rating>(dbContext);
            var service    = new RatesService(repository);

            var newRating = new RateViewModel
            {
                Description = "Test",
                Grade       = (int)Grade.VeryGood,
                ProductId   = 1,
                UserId      = "Test",
            };

            await service.AddRateAsync(newRating);
        }
        public void Initialize()
        {
            var memoryService     = new PhoneMemoryService();
            var iconsService      = new IconsService();
            var statisticsManager = new StatisticsManager();

            var options     = new Options(memoryService);
            var dataContext = new DataContext(memoryService);

            var skyDriveFileManager = new SkyDriveFileManager(memoryService);
            var skyDriveService     = new SkyDriveService(dataContext, skyDriveFileManager);

            var csvDataExportService = new CsvDataExportService(memoryService);

            var cashService                  = new CashService(dataContext);
            var tileService                  = new TileService(dataContext);
            var categoryUsageService         = new CategoryUsageService(dataContext.Operations);
            var dependenciesService          = new DependenciesService(dataContext, iconsService);
            var defaultCategoriesInitializer = new DefaultCategoriesInitializer(dataContext, iconsService);
            var accountInitializer           = new AccountsInitializer(dataContext);

            var ratesHtmlParser   = new RatesHtmlParser();
            var ratesWebClient    = new RatesWebClient();
            var ratesService      = new RatesService(memoryService, ratesHtmlParser, ratesWebClient);
            var depositCalculator = new DepositCalculator();
            var creaditCalculator = new CreditCalculator();

            _container.RegisterInstance <IPhoneMemoryService>(memoryService);
            _container.RegisterInstance <IIconsService>(iconsService);
            _container.RegisterInstance <IStatisticsManager>(statisticsManager);

            _container.RegisterInstance <Options>(options);
            _container.RegisterInstance <IDataContext>(dataContext);

            _container.RegisterInstance <ISkyDriveService>(skyDriveService);
            _container.RegisterInstance <IDataExportService>(csvDataExportService);
            _container.RegisterInstance <ICashService>(cashService);
            _container.RegisterInstance <IRatesService>(ratesService);
            _container.RegisterInstance <DepositCalculator>(depositCalculator);
            _container.RegisterInstance <CreditCalculator>(creaditCalculator);
        }
Beispiel #8
0
        public async Task GetAsync()
        {
            //Arrange
            IEnumerable <Rates> rates = MockRates.GetRates();
            var mockRatesRepository   = new Mock <IRepository <Rates> >();

            mockRatesRepository.Setup(p => p.GetAsync()).Returns(Task.FromResult(rates));

            RatesService ratesService = new RatesService(mockRatesRepository.Object, null);

            //Act
            var ratesDTOs = await ratesService.GetAsync().ConfigureAwait(false);

            //Assert
            Assert.Equal(expected: rates.Count(), actual: ratesDTOs.Count());
            for (int i = 0; i < rates.Count(); i++)
            {
                Assert.Equal(expected: rates.ElementAt(i).From, actual: ratesDTOs.ElementAt(i).From);
                Assert.Equal(expected: rates.ElementAt(i).To, actual: ratesDTOs.ElementAt(i).To);
                Assert.Equal(expected: rates.ElementAt(i).Rate, actual: ratesDTOs.ElementAt(i).Rate);
            }
        }
Beispiel #9
0
        public void GetRates_ДанныеЕстьВБД_ВозвращаетсяРезультат()
        {
            var list = new List <ExpiredRateInfo>()
            {
                new ExpiredRateInfo()
                {
                    To       = "RUB",
                    Rate     = 10,
                    ExpireAt = DateTime.Today
                }
            };

            var ratesSourceProvider = Mock.Of <IRatesSourceProvider>();
            var ratesStorageService = new Mock <IRatesStorageService>();

            ratesStorageService.Setup(o => o.GetRates(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(list);
            var service = new RatesService(ratesSourceProvider, ratesStorageService.Object, 10);

            var rates = service.GetRates("from", "to").Result;

            CollectionAssert.AreEqual(list, rates);
        }
Beispiel #10
0
        public async Task <IActionResult> GetAsync(string currencyCode, DateTime?date = null)
        {
            DateTime effectiveDate = DateTime.Now.Date;

            if (date.HasValue)
            {
                effectiveDate = date.Value.Date;
            }

            if (!await RatesService.IsValidCurrencyToQuoteAsync(currencyCode))
            {
                return(BadRequest("Currency not valid"));
            }

            CurrencyQuoteModel currencyQuote = await RatesService.GetRateQuoteAsync(currencyCode, effectiveDate);

            if (currencyQuote == null)
            {
                return(NotFound($"No quote found for {currencyCode} on {effectiveDate}"));
            }

            return(Ok(currencyQuote));
        }
        protected override async Task OnParametersSetAsync()
        {
            switch (Page)
            {
            case null:
            case "lights":
                if (Lights is null)
                {
                    Lights = await LightService.GetAllAsync();
                }
                break;

            case "heats":
                if (Heats is null)
                {
                    Heats = await HeatService.GetAllAsync();
                }
                break;

            case "courts":
                if (Courts is null)
                {
                    Courts = await CourtService.GetAllAsync();
                }
                break;

            case "rates":
                if (Rates is null)
                {
                    Rates = await RatesService.GetAllAsync();
                }
                break;

            default:
                throw new KeyNotFoundException("Dashboard nested page not found!");
            }
        }
 public IHttpActionResult DeleteRateController(int id)
 {
     RatesService.DeleteRate(id);
     return(Ok());
 }
 public IHttpActionResult PutRatesController([FromBody] CORE.Model.Rates rate)
 {
     RatesService.PutRates(rate);
     return(Ok());
 }
 public IHttpActionResult PostRatesController(CORE.Model.Rates rate)
 {
     RatesService.PostRates(rate);
     return(Ok());
 }
 public object GetAllRatesController()
 {
     return(Ok(RatesService.GetAllRates()));
 }
 public RatesController(RatesService service)
 {
     Service = service;
 }
Beispiel #17
0
 public async Task <IActionResult> GetLatestQuotesAsync(DateTime?date = null)
 {
     return(Ok(await RatesService.GetLatestRatesAsync(date: date)));
 }