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(); } }
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(); } }