Exemplo n.º 1
0
        public async Task <ActionResult <SubscriptionResponse> > New([FromBody] SubRequest subRequest)
        {
            var platformId = BitcornUtils.GetPlatformId(subRequest.Id);
            var user       = await BitcornUtils.GetUserForPlatform(platformId, _dbContext).FirstOrDefaultAsync();

            if (user != null && UserLockCollection.Lock(user.UserId))
            {
                try
                {
                    subRequest.Platform = platformId.Platform;
                    var tx = await SubscriptionUtils.Subscribe(_dbContext, user, subRequest);

                    if (tx != null)
                    {
                        return(tx);
                    }
                }
                catch (Exception e)
                {
                    await BITCORNLogger.LogError(_dbContext, e, JsonConvert.SerializeObject(subRequest));

                    throw e;
                }
                finally
                {
                    UserLockCollection.Release(user.UserId);
                }
            }

            return(StatusCode((int)HttpStatusCode.BadRequest));
        }
        public async Task TestSubscriptionTierCheck()
        {
            var dbContext = TestUtils.CreateDatabase();

            try
            {
                var testName = "test";
                var testId   = "auth0|test";

                TestUtils.TryRemoveTestUser(testId);

                TestUtils.CreateTestUser(testName, testId);
                var user = dbContext.JoinUserModels().FirstOrDefault(u => u.UserIdentity.Auth0Id == testId);
                user.UserWallet.Balance += 10000001;
                dbContext.SaveChanges();
                var resp = await SubscriptionUtils.Subscribe(dbContext, user, new SubRequest()
                {
                    SubscriptionName = "BITCORNFarms",
                    Tier             = 1,
                    Platform         = "test",
                    Amount           = 100000
                });

                Assert.False(await SubscriptionUtils.HasSubscribed(dbContext, user, "BITCORNFarms", 2));
            }
            finally
            {
                dbContext.Dispose();
            }
        }
Exemplo n.º 3
0
        async Task RunFullReferralTest(bool sub, bool runSubFirst = true)
        {
            var testName = "test";
            var testId   = "auth0|test";
            await TestUtils.RegisterNewUserWithReferralArgs(testName, testId, 2);

            await TestSyncPlatformWithReferralInternal(testName, testId, true, false, 2);

            var dbContext = TestUtils.CreateDatabase();

            try
            {
                var user = dbContext.JoinUserModels().FirstOrDefault(u => u.UserIdentity.Auth0Id == testId);
                user.UserWallet.Balance += UserWalletController.MIN_BALANCE_QUEST_AMOUNT + 10000000;
                dbContext.SaveChanges();

                var userWalletController = new UserWalletController(dbContext);
                await userWalletController.Wallet("twitch|1337");

                if (sub && runSubFirst)
                {
                    var resp = await SubscriptionUtils.Subscribe(dbContext, user, new SubRequest()
                    {
                        SubscriptionName = "BITCORNFarms",
                        Tier             = 1,
                        Platform         = "test",
                        Amount           = 100000
                    });
                }
                await TestUtils.TestWalletDownloadWithReferrerInternal(dbContext, "1.1.1.1", user, sub&&runSubFirst);

                if (sub && !runSubFirst)
                {
                    var resp = await SubscriptionUtils.Subscribe(dbContext, user, new SubRequest()
                    {
                        SubscriptionName = "BITCORNFarms",
                        Tier             = 1,
                        Platform         = "test",
                        Amount           = 100000
                    });
                }
                var userReferral = dbContext.UserReferral.FirstOrDefault(u => u.UserId == user.UserId);

                Assert.True(userReferral.SignupReward != null);
                Assert.True(userReferral.MinimumBalanceDate != null);
                Assert.True(userReferral.WalletDownloadDate != null);
                Assert.True(userReferral.SyncDate != null);

                if (!sub)
                {
                    Assert.True(userReferral.Bonus == null);
                    Assert.True(userReferral.ReferrerBonus == null);
                    Assert.True(userReferral.UserSubscriptionId == null);
                }
                else
                {
                    Assert.True(userReferral.UserSubscriptionId != null);
                    Assert.True(userReferral.Bonus != null);
                    Assert.True(userReferral.ReferrerBonus != null);
                }
            }
            finally
            {
                dbContext.Dispose();
            }
        }