public TransactionService( ILog log, IIcoExRateClient exRateClient, IInvestorAttributeRepository investorAttributeRepository, ICampaignInfoRepository campaignInfoRepository, ICampaignSettingsRepository campaignSettingsRepository, IInvestorTransactionRepository investorTransactionRepository, IInvestorRefundRepository investorRefundRepository, IInvestorRepository investorRepository, IQueuePublisher<InvestorNewTransactionMessage> investmentMailSender, IKycService kycService, IReferralCodeService referralCodeService, string siteSummaryPageUrl) { _log = log; _exRateClient = exRateClient; _investorAttributeRepository = investorAttributeRepository; _campaignInfoRepository = campaignInfoRepository; _campaignSettingsRepository = campaignSettingsRepository; _investorTransactionRepository = investorTransactionRepository; _investorRefundRepository = investorRefundRepository; _investorRepository = investorRepository; _investmentMailSender = investmentMailSender; _kycService = kycService; _referralCodeService = referralCodeService; _siteSummaryPageUrl = siteSummaryPageUrl; }
public AccountController(UserManager <ApplicationUser> UserManager, SignInManager <ApplicationUser> SignInManager, IEmailService EmailManager, IOptions <ConfigSettings> ConfigSettings, ITokenProviderService TokenProviderService, IReferralCodeService ReferralCodeService) { this._userManager = UserManager; this._signInManager = SignInManager; this._emailManager = EmailManager; this._configSettings = ConfigSettings.Value; this._tokenManager = TokenProviderService; this._referralCodeService = ReferralCodeService; }
private TransactionService Init(string investorEmail = "*****@*****.**", double exchangeRate = 1.0) { _log = new LogToMemory(); _campaignInfoRepository = new Mock <ICampaignInfoRepository>(); _campaignInfoRepository .Setup(m => m.IncrementValue(It.Is <CampaignInfoType>(t => t == CampaignInfoType.AmountInvestedUsd), It.IsAny <decimal>())) .Callback((CampaignInfoType t, decimal v) => _usdAmount += v) .Returns(() => Task.CompletedTask); _campaignInfoRepository .Setup(m => m.SaveLatestTransactionsAsync(It.IsAny <string>(), It.IsAny <string>())) .Returns(() => Task.CompletedTask); _campaignSettings = new CampaignSettings { PreSaleStartDateTimeUtc = DateTime.UtcNow.AddDays(-15), PreSaleEndDateTimeUtc = DateTime.UtcNow, PreSaleTotalTokensAmount = 100000000, CrowdSaleStartDateTimeUtc = DateTime.UtcNow, CrowdSaleEndDateTimeUtc = DateTime.UtcNow.AddDays(21), CrowdSaleTotalTokensAmount = 360000000, TokenDecimals = 4, MinInvestAmountUsd = 1000, TokenBasePriceUsd = 0.064M, HardCapUsd = 1000000, EnableReferralProgram = true, ReferralCodeLength = 6 }; _campaignSettingsRepository = new Mock <ICampaignSettingsRepository>(); _campaignSettingsRepository .Setup(m => m.GetAsync()) .Returns(() => Task.FromResult(_campaignSettings)); _exRateClient = new Mock <IIcoExRateClient>(); _exRateClient .Setup(m => m.GetAverageRate(It.IsAny <Pair>(), It.IsAny <DateTime>())) .Returns(() => Task.FromResult(new AverageRateResponse { AverageRate = exchangeRate })); _investor = new Investor() { Email = investorEmail, ConfirmationToken = Guid.NewGuid(), AmountUsd = _campaignSettings.MinInvestAmountUsd + 10 }; _investorRepository = new Mock <IInvestorRepository>(); _investorRepository .Setup(m => m.GetAsync(It.Is <string>(v => !string.IsNullOrWhiteSpace(v) && v == investorEmail))) .Returns(() => Task.FromResult(_investor)); _investorRepository .Setup(m => m.SaveReferralCode(It.IsAny <string>(), It.IsAny <string>())) .Returns(() => Task.CompletedTask); _investorAttributeRepository = new Mock <IInvestorAttributeRepository>(); _investorAttributeRepository .Setup(m => m.SaveAsync(It.IsAny <InvestorAttributeType>(), It.IsAny <string>(), It.IsAny <string>())) .Returns(() => Task.CompletedTask); _investorAttributeRepository .Setup(m => m.GetInvestorEmailAsync( It.IsIn(new InvestorAttributeType[] { InvestorAttributeType.PayInBtcAddress, InvestorAttributeType.PayInEthAddress }), It.IsAny <string>())) .Returns(() => Task.FromResult(investorEmail)); _investorAttributeRepository .Setup(m => m.GetInvestorEmailAsync( It.IsIn(new InvestorAttributeType[] { InvestorAttributeType.ReferralCode }), It.IsAny <string>())) .Returns(() => Task.FromResult("")); _privateInvestorAttributeRepository = new Mock <IPrivateInvestorAttributeRepository>(); _privateInvestorAttributeRepository .Setup(m => m.GetInvestorEmailAsync( It.IsIn(new PrivateInvestorAttributeType[] { PrivateInvestorAttributeType.ReferralCode }), It.IsAny <string>())) .Returns(() => Task.FromResult("")); _investorTransaction = new InvestorTransaction { }; _investorTransactionRepository = new Mock <IInvestorTransactionRepository>(); _investorTransactionRepository .Setup(m => m.GetAsync( It.Is <string>(v => !string.IsNullOrWhiteSpace(v) && v == "*****@*****.**"), It.IsAny <string>())) .Returns(() => Task.FromResult(_investorTransaction)); _investorTransactionRepository .Setup(m => m.SaveAsync(It.IsAny <IInvestorTransaction>())) .Returns(() => Task.CompletedTask); _investorRefundRepository = new Mock <IInvestorRefundRepository>(); _investorRefundRepository .Setup(m => m.SaveAsync(It.IsAny <string>(), It.IsAny <InvestorRefundReason>(), It.IsAny <string>())) .Returns(() => Task.CompletedTask); _investmentMailSender = new Mock <IQueuePublisher <InvestorNewTransactionMessage> >(); _investmentMailSender .Setup(m => m.SendAsync(It.IsAny <InvestorNewTransactionMessage>())) .Returns(() => Task.CompletedTask); _urlEncryptionService = new UrlEncryptionService("E546C8DF278CD5931069B522E695D4F2", "1234567890123456"); _kycService = new KycService(_campaignSettingsRepository.Object, _urlEncryptionService); _referralCodeService = new ReferralCodeService(_investorAttributeRepository.Object, _privateInvestorAttributeRepository.Object); return(new TransactionService( _log, _exRateClient.Object, _investorAttributeRepository.Object, _campaignInfoRepository.Object, _campaignSettingsRepository.Object, _investorTransactionRepository.Object, _investorRefundRepository.Object, _investorRepository.Object, _investmentMailSender.Object, _kycService, _referralCodeService, "http://test-ito.valid.global/summary/{token}/overview")); }