public static async Task <int> GetUserId(ActionExecutingContext context, BitcornContext dbContext) { var platformHeaders = LockUserAttributeUtils.GetPlatformHeaders(context); switch (platformHeaders.Platform) { case "auth0": return(await dbContext.Auth0Query(platformHeaders.Id).Select(u => u.UserId).FirstOrDefaultAsync()); case "twitch": return(await dbContext.TwitchQuery(platformHeaders.Id).Select(u => u.UserId).FirstOrDefaultAsync()); case "discord": return(await dbContext.DiscordQuery(platformHeaders.Id).Select(u => u.UserId).FirstOrDefaultAsync()); case "twitter": return(await dbContext.TwitterQuery(platformHeaders.Id).Select(u => u.UserId).FirstOrDefaultAsync()); case "reddit": return(await dbContext.RedditQuery(platformHeaders.Id).Select(u => u.UserId).FirstOrDefaultAsync()); default: return(0); } }
public static IQueryable <User> GetUserFromHeader(ActionExecutingContext context, BitcornContext dbContext) { var platformHeaders = LockUserAttributeUtils.GetPlatformHeaders(context); switch (platformHeaders.Platform) { case "auth0": return(dbContext.Auth0Query(platformHeaders.Id)); case "twitch": return(dbContext.TwitchQuery(platformHeaders.Id)); case "discord": return(dbContext.DiscordQuery(platformHeaders.Id)); case "twitter": return(dbContext.TwitterQuery(platformHeaders.Id)); case "reddit": return(dbContext.RedditQuery(platformHeaders.Id)); default: return(null); } }
public static IQueryable <User> GetUserForPlatform(PlatformId platformId, BitcornContext dbContext) { switch (platformId.Platform) { case "auth0": return(dbContext.Auth0Query(platformId.Id)); case "twitch": return(dbContext.TwitchQuery(platformId.Id)); case "stream": return(dbContext.TwitchQuery(platformId.Id)); case "twitchusername": return(dbContext.TwitchUsernameQuery(platformId.Id)); case "discord": return(dbContext.DiscordQuery(platformId.Id)); case "twitter": return(dbContext.TwitterQuery(platformId.Id)); case "reddit": return(dbContext.RedditQuery(platformId.Id)); case "userid": return(dbContext.UserIdQuery(int.Parse(platformId.Id))); default: throw new Exception($"User {platformId.Platform}|{platformId.Id} could not be found"); } }
public static async Task <User> ReadUser(IConfiguration config, BitcornContext dbContext, HttpContext context) { var identity = context.User.Identities.First(); var claim = identity.Claims.FirstOrDefault(c => c.Type == config["Config:IdKey"]); if (claim == default(Claim)) { return(null); } var split = claim.Value.Split('@'); if (split.Length == 1) { var user = await dbContext.Auth0Query(claim.Value).FirstOrDefaultAsync(); if (user != null) { context.Items.Add("user", user); context.Items.Add("usermode", 0); } else { if (claim.Value.Contains("auth0|")) { try { user = Controllers.RegisterController.CreateUser(new Auth0User() { Auth0Id = claim.Value, Auth0Nickname = "" }, 0); dbContext.User.Add(user); await dbContext.SaveAsync(); context.Items.Add("user", user); context.Items.Add("usermode", 0); } catch (Exception e) { user = null; await BITCORNLogger.LogError(dbContext, e, claim.Value); return(null); } } } //await BITCORNLogger.LogError(dbContext, new Exception(""), //Newtonsoft.Json.JsonConvert.SerializeObject(new { userId = claim.Value, isNull=user==null })); return(user); } else { return(null); } }
public async Task <decimal> ReceiverTotal([FromRoute] string auth0Id) { if (string.IsNullOrWhiteSpace(auth0Id)) { throw new ArgumentNullException(); } var user = await _dbContext.Auth0Query(auth0Id).FirstOrDefaultAsync(); return(Convert.ToDecimal(user.UserStat.RainedOnTotal + user.UserStat.TippedTotal)); }
public async Task <FullUser> RegisterNewUser([FromBody] Auth0User auth0User) { if (auth0User == null) { throw new ArgumentNullException(); } var existingUserIdentity = await _dbContext.Auth0Query(auth0User.Auth0Id).Select(u => u.UserIdentity).FirstOrDefaultAsync(); if (existingUserIdentity?.Auth0Id == auth0User.Auth0Id) { var user = _dbContext.User.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId); var userWallet = _dbContext.UserWallet.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId); var userStat = _dbContext.UserStat.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId); return(BitcornUtils.GetFullUser(user, existingUserIdentity, userWallet, userStat)); } try { var user = new User { UserIdentity = new UserIdentity { Auth0Id = auth0User.Auth0Id, Auth0Nickname = auth0User.Auth0Nickname }, UserWallet = new UserWallet(), UserStat = new UserStat() }; _dbContext.User.Add(user); await _dbContext.SaveAsync(); return(BitcornUtils.GetFullUser(user, user.UserIdentity, user.UserWallet, user.UserStat)); } catch (Exception e) { Console.WriteLine(e); throw; } }
public async Task <bool> Update([FromBody] Auth0IdUsername auth0IdUsername) { if (_dbContext.User.Any(u => u.Username == auth0IdUsername.Username)) { return(false); } //join identity with user table to select in 1 query var user = await _dbContext.Auth0Query(auth0IdUsername.Auth0Id) .Join(_dbContext.User, identity => identity.UserId, us => us.UserId, (id, u) => u).FirstOrDefaultAsync(); user.Username = auth0IdUsername.Username; await _dbContext.SaveAsync(); return(true); }
public async Task <ActionResult <FullUser> > RegisterNewUser([FromBody] Auth0User auth0User, [FromQuery] string referral = null) { if (this.GetCachedUser() != null) { throw new InvalidOperationException(); } if (auth0User == null) { throw new ArgumentNullException(); } if (!StaticLockCollection.Lock(auth0User.Auth0Id)) { return(StatusCode(UserLockCollection.UserLockedReturnCode)); } var existingUserIdentity = await _dbContext.Auth0Query(auth0User.Auth0Id).Select(u => u.UserIdentity).FirstOrDefaultAsync(); if (existingUserIdentity?.Auth0Id == auth0User.Auth0Id) { var user = _dbContext.User.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId); var userWallet = _dbContext.UserWallet.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId); var userStat = _dbContext.UserStat.FirstOrDefault(u => u.UserId == existingUserIdentity.UserId); StaticLockCollection.Release(auth0User.Auth0Id); return(BitcornUtils.GetFullUser(user, existingUserIdentity, userWallet, userStat)); } int referralId; try { referralId = Convert.ToInt32(referral); } catch (Exception e) { referralId = 0; } try { var user = CreateUser(auth0User, referralId); _dbContext.User.Add(user); if (referral != null && referralId != 0) { var referrer = await _dbContext.Referrer.FirstOrDefaultAsync(r => r.ReferralId == referralId); if (ReferralUtils.IsValidReferrer(referrer)) { var referrerUser = await _dbContext.User.FirstOrDefaultAsync(u => u.UserId == referrer.UserId); if (referrerUser != null && !referrerUser.IsBanned) { var referralPayoutTotal = await ReferralUtils.TotalReward(_dbContext, referrer); var referrerRegistrationReward = await TxUtils.SendFromBitcornhub(referrerUser, referralPayoutTotal, "BITCORNFarms", "Registrations reward", _dbContext); var userRegistrationReward = await TxUtils.SendFromBitcornhub(user, referrer.Amount, "BITCORNFarms", "Recruit registrations reward", _dbContext); if (referrerRegistrationReward && userRegistrationReward) { await ReferralUtils.UpdateYtdTotal(_dbContext, referrer, referralPayoutTotal); await ReferralUtils.LogReferralTx(_dbContext, referrer.UserId, referralPayoutTotal, "Registration reward"); await ReferralUtils.LogReferralTx(_dbContext, user.UserId, referrer.Amount, "Recruit registration reward"); var referrerStat = await _dbContext.UserStat.FirstOrDefaultAsync(s => s.UserId == referrer.UserId); if (referrerStat != null) { if (referrerStat.TotalReferrals == null) { referrerStat.TotalReferrals = 0; } referrerStat.TotalReferrals++; if (referrerStat.TotalReferralRewardsCorn == null) { referrerStat.TotalReferralRewardsCorn = 0; } referrerStat.TotalReferralRewardsCorn += referralPayoutTotal; if (referrerStat.TotalReferralRewardsUsdt == null) { referrerStat.TotalReferralRewardsUsdt = 0; } referrerStat.TotalReferralRewardsUsdt += (referralPayoutTotal * (await ProbitApi.GetCornPriceAsync(_dbContext))); } user.UserReferral.SignupReward = DateTime.Now; } } } } await _dbContext.SaveAsync(); return(BitcornUtils.GetFullUser(user, user.UserIdentity, user.UserWallet, user.UserStat)); } catch (Exception e) { await BITCORNLogger.LogError(_dbContext, e, JsonConvert.SerializeObject(auth0User)); throw e; } finally { StaticLockCollection.Release(auth0User.Auth0Id); } }