private async Task UpsertUserReferralAsync(UserReferral referral) { if (referral != null) { var existingReferral = await _context.UserReferral.FirstOrDefaultAsync(x => x.Id == referral.Id || x.UserId == referral.UserId); if (existingReferral != null) { existingReferral.Earnings = referral.Earnings; existingReferral.Enabled = referral.Enabled; existingReferral.PayoutPercent = referral.PayoutPercent; existingReferral.PayPalAccount = referral.PayPalAccount; existingReferral.ReferralCode = referral.ReferralCode; existingReferral.RequestedPayout = referral.RequestedPayout; existingReferral.UserId = referral.UserId; _context.UserReferral.Update(existingReferral); } else { _context.UserReferral.Add(referral); } await _context.SaveChangesAsync(); } }
public async Task <IEnumerable <UserReferral> > CreateReferralsAsync(int loggedUser, IEnumerable <CreateUserReferralRequest> request) { var result = new List <UserReferral>(); var user = await _uow.UserRepository.GetAsync(loggedUser); if (user == null) { throw new NotFoundException(ExceptionConstants.NOT_FOUND, "User"); } foreach (var item in request) { var referral = new UserReferral { Email = item.Email, UserId = loggedUser, User = user, CreatedAt = DateTime.UtcNow, ModifiedAt = DateTime.UtcNow }; await _uow.UserReferralRepository.AddAsync(referral); result.Add(referral); } await _uow.CommitAsync(); return(result); }
public async Task <IActionResult> Index(ManageMessageId?message = null) { ViewData["StatusMessage"] = message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed." : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set." : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set." : message == ManageMessageId.Error ? "An error has occurred." : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added." : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed." : ""; var user = await GetCurrentUserAsync(); if (user == null) { return(View("Error")); } var model = new IndexViewModel { HasPassword = await _userManager.HasPasswordAsync(user), PhoneNumber = await _userManager.GetPhoneNumberAsync(user), TwoFactor = await _userManager.GetTwoFactorEnabledAsync(user), Logins = await _userManager.GetLoginsAsync(user), BrowserRemembered = await _signInManager.IsTwoFactorClientRememberedAsync(user), UserReferral = await _context.UserReferral.FirstOrDefaultAsync(x => x.UserId == user.Id) }; if (model.UserReferral == null) { var userRef = new UserReferral { UserId = user.Id, ReferralCode = $"{user.Email.Split('@')[0]}" }; _context.UserReferral.Add(userRef); var refPromo = await _context.Promos.FirstOrDefaultAsync(x => x.Code == userRef.ReferralCode); if (refPromo == null) { _context.Promos.Add(new PromoModel { Code = userRef.ReferralCode, DiscountPercentage = 5, Enabled = true }); } await _context.SaveChangesAsync(); model.UserReferral = userRef; } ViewData["ReferralUrl"] = $"http://{HttpContext.Request.Host}/Home/Referral/{model.UserReferral.ReferralCode}"; ViewData["ReferralEarnings"] = Math.Round(model.UserReferral.Earnings, 2); return(View(model)); }
public static async Task BonusPayout(BitcornContext dbContext, UserReferral userReferral, Referrer referrer, User user, User referrerUser, UserStat referrerStat) { if (userReferral != null && userReferral.SignupReward != null && userReferral.MinimumBalanceDate != null && userReferral.WalletDownloadDate != null && userReferral.SyncDate != null && userReferral.Bonus == null && userReferral.ReferrerBonus == null && userReferral.UserSubscriptionId == null && referrer != null && !user.IsBanned && !referrerUser.IsBanned) { var subQuery = SubscriptionUtils.GetActiveSubscription(dbContext, user, "BITCORNFarms", 1); if (subQuery == null) { return; } var userSubInfo = await subQuery.FirstOrDefaultAsync(); if (userSubInfo == null) { return; } userReferral.UserSubscriptionId = userSubInfo.UserSubcriptionTierInfo.UserSubscription.UserSubscriptionId; var amount = BONUS_PAYOUT; var bonusReward = await TxUtils.SendFromBitcornhub(user, amount, "BITCORNFarms", "Referral bonus reward", dbContext); if (IsValidReferrer(referrer)) { if (bonusReward) { userReferral.Bonus = DateTime.Now; await LogReferralTx(dbContext, user.UserId, amount, "Recruit bonus reward"); var referrerBonusReward = await TxUtils.SendFromBitcornhub(referrerUser, amount, "BITCORNFarms", "Referral bonus reward", dbContext); if (referrerBonusReward) { await UpdateYtdTotal(dbContext, referrer, amount); await LogReferralTx(dbContext, referrerUser.UserId, amount, "Referral bonus reward"); referrerStat.TotalReferralRewardsCorn += amount; referrerStat.TotalReferralRewardsUsdt += (amount * await ProbitApi.GetCornPriceAsync(dbContext)); userReferral.ReferrerBonus = DateTime.Now; } } } } }
// GET: /<controller>/ public async Task <IActionResult> Index() { var session = HttpContext.Session.GetString(sessionKey); var user = await _userManager.GetUserAsync(HttpContext.User); if (session == null) { return(View(new ShoppingCartViewModel())); } else { var cart = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <ShoppingCartViewModel>(session)); UserReferral referralCookie = null; PromoModel refPromo = null; if (HttpContext.Request.Cookies["Referral"] != null) { referralCookie = await Task.Factory.StartNew(() => JsonConvert.DeserializeObject <UserReferral>(HttpContext.Request.Cookies["Referral"])); if (referralCookie != null) { refPromo = await _context.Promos.FirstOrDefaultAsync(x => x.Code == referralCookie.ReferralCode); } } if (user != null) { var userRef = await _context.UserReferral.FirstOrDefaultAsync(x => x.UserId == user.Id); cart.UserReferral = userRef; } if (TempData["StoreCredit"] != null) { decimal StoreCredit = decimal.Parse(TempData["StoreCredit"].ToString()); decimal total = 0m; foreach (var product in cart.Products) { total += product.Price; } decimal newTotal = ((total - StoreCredit) <= 0) ? 0.01m : (total - StoreCredit); cart.NewTotal = newTotal; } else if (TempData["RefPromo"] == null && refPromo != null) { if ((user != null && referralCookie.UserId != user.Id) || user == null) { return(RedirectToAction("PromoCode", "ShoppingCart", new { promoCode = refPromo.Code })); } } return(View(cart)); } }
public static object SelectUserProperties(User user, UserIdentity userIdentity, UserWallet userWallet, UserStat userStats, UserReferral userReferral, Referrer referrer, bool guestView) { Dictionary <string, object> output = new Dictionary <string, object>(); AppendUserOutput(output, new Type[] { typeof(int), typeof(string), typeof(DateTime?), typeof(bool) }, user, "Username"); if (!guestView) { AppendUserOutput(output, new Type[] { typeof(string) }, userIdentity); } else { output.Add("auth0Id", userIdentity.Auth0Id); output.Add("auth0Nickname", userIdentity.Auth0Nickname); //Auth0Id = userIdentity.Auth0Id, //Auth0Nickname = userIdentity.Auth0Nickname, } if (!guestView) { AppendUserOutput(output, new Type[] { typeof(decimal?), typeof(int?), typeof(string) }, userWallet); } if (!guestView) { AppendUserOutput(output, new Type[] { typeof(decimal?), typeof(int?), typeof(string) }, userStats); } if (!guestView && referrer != null) { AppendUserOutput(output, new Type[] { typeof(decimal?), typeof(int?), typeof(string), typeof(DateTime?), typeof(int) }, referrer, "userId"); } if (!guestView && userReferral != null) { AppendUserOutput(output, new Type[] { typeof(decimal), typeof(int), typeof(string), typeof(int) }, userReferral, "userId"); } return(output); }
public async Task <PromoModel> GetPromoAsync(UserReferral userReferral) { var refPromo = await _context.Promos.FirstOrDefaultAsync(x => x.Code == userReferral.ReferralCode); PromoModel promo = null; if (refPromo != null) { promo = await GetPromoAsync(refPromo.Id); } return(promo); }
public async Task <IActionResult> AddReferralPaypal(UserReferral model) { var userReferral = await _context.UserReferral.FirstOrDefaultAsync(x => x.Id == model.Id); if (userReferral != null) { userReferral.PayPalAccount = model.PayPalAccount; _context.UserReferral.Update(userReferral); await _context.SaveChangesAsync(); } return(RedirectToAction("Index")); }
public void PersistUserReferral() { var userDataId = 0L; // creating UserDataId by calling PersistTaxObject BusinessObject.Tax1040 tax1040 = new BusinessObject.Tax1040(); tax1040.UserDataId = 0; userDataId = Utilities.PersistTaxObject(userId, userDataId, tax1040); UserDTO userDTO = new UserDTO(); userDTO.UserDataId = userDataId; userDTO.UserId = userId; ReferralRating ReferralRating = new BusinessObject.ReferralRating(); UserRating userrating = new UserRating(); userrating.Rating = 4; userrating.Comment = "good"; ReferralRating.UserRating = userrating; ReferralRating.UserReferral = new List <UserReferral>(); UserReferral userreferral = new UserReferral(); userreferral.ReferralEmailId = "*****@*****.**"; UserReferral userreferral1 = new UserReferral(); userreferral1.ReferralEmailId = "*****@*****.**"; ReferralRating.UserReferral.Add(userreferral); ReferralRating.UserReferral.Add(userreferral1); mTaxReturnRepository.PersistUserReferral(userDTO, ReferralRating); }
public static async Task ReferralRewards(BitcornContext dbContext, WalletDownload walletDownload, UserReferral userReferral, User referrerUser, User user, string type) { if (user.IsBanned || referrerUser.IsBanned) { return; } var referrer = await dbContext.Referrer .FirstOrDefaultAsync(w => w.UserId == walletDownload.ReferralUserId); userReferral.WalletDownloadDate = DateTime.Now; if (IsValidReferrer(referrer)) { var referralPayoutTotal = await ReferralUtils.TotalReward(dbContext, referrer) + await ReferralUtils.WalletBonusReward(dbContext, referrer, 10);; var referrerReward = await TxUtils.SendFromBitcornhub(referrerUser, referralPayoutTotal, "BITCORNFarms", type, dbContext); var referreeReward = await TxUtils.SendFromBitcornhub(user, referrer.Amount + 10, "BITCORNFarms", type, dbContext); if (referrerReward && referreeReward) { await ReferralUtils.LogReferralTx(dbContext, referrerUser.UserId, referralPayoutTotal, type); await ReferralUtils.LogReferralTx(dbContext, user.UserId, referrer.Amount + 10, $"Recruit {type}"); await ReferralUtils.UpdateYtdTotal(dbContext, referrer, referralPayoutTotal); if (referrerUser.UserStat.TotalReferralRewardsCorn == null) { referrerUser.UserStat.TotalReferralRewardsCorn = 0; } if (referrerUser.UserStat.TotalReferralRewardsUsdt == null) { referrerUser.UserStat.TotalReferralRewardsUsdt = 0; } referrerUser.UserStat.TotalReferralRewardsCorn += referralPayoutTotal; referrerUser.UserStat.TotalReferralRewardsUsdt += ((referralPayoutTotal) * (await ProbitApi.GetCornPriceAsync(dbContext))); userReferral.WalletDownloadDate = DateTime.Now; await ReferralUtils.BonusPayout(dbContext, userReferral, referrer, user, referrerUser, referrerUser.UserStat); } } }
public static UserReferral Create(Model.User.User user, Model.User.User referral) => Find(UserReferral.Create(user, referral));
public static UserReferral[] GetInvited(Model.User.User user) => UserReferral.GetInvited(user);
public static UserReferral Find(int id) => UserReferral.Find(id);
//TODO: depricate this nonsense public static FullUserAndReferrer GetFullUserAndReferer(User user, UserIdentity userIdentity, UserWallet userWallet, UserStat userStats, UserReferral userReferral = null, Referrer referrer = null) { var fullUser = new FullUserAndReferrer() { Mfa = user.MFA, //user Username = userIdentity.Username, UserId = user.UserId, Avatar = user.Avatar, Level = user.Level, IsBanned = user.IsBanned, CreationTime = user.CreationTime, SubTier = user.SubTier, //UserIdentity Auth0Id = userIdentity.Auth0Id, Auth0Nickname = userIdentity.Auth0Nickname, TwitchId = userIdentity.TwitchId, TwitchUsername = userIdentity.TwitchUsername, TwitterUsername = userIdentity.TwitterUsername, DiscordUsername = userIdentity.DiscordUsername, DiscordId = userIdentity.DiscordId, TwitterId = userIdentity.TwitterId, RedditId = userIdentity.RedditId, //UserWallet WalletServer = userWallet.WalletServer, CornAddy = userWallet.CornAddy, Balance = userWallet.Balance, //UserStatus EarnedIdle = userStats.EarnedIdle, AmountOfTipsReceived = userStats.AmountOfTipsReceived, TotalReceivedBitcornTips = userStats.TotalReceivedBitcornTips, LargestReceivedBitcornTip = userStats.LargestReceivedBitcornTip, AmountOfTipsSent = userStats.AmountOfTipsSent, TotalSentBitcornViaTips = userStats.TotalSentBitcornViaTips, LargestSentBitcornTip = userStats.LargestSentBitcornTip, AmountOfRainsSent = userStats.AmountOfRainsSent, TotalSentBitcornViaRains = userStats.TotalSentBitcornViaRains, LargestSentBitcornRain = userStats.LargestSentBitcornRain, AmountOfRainsReceived = userStats.AmountOfRainsReceived, TotalReceivedBitcornRains = userStats.TotalReceivedBitcornRains, LargestReceivedBitcornRain = userStats.LargestReceivedBitcornRain, TotalReferralRewardsCorn = userStats.TotalReferralRewardsCorn, TotalReferralRewardsUsdt = userStats.TotalReferralRewardsUsdt, TotalReferrals = userStats.TotalReferrals, }; if (referrer != null) { fullUser.ReferralId = referrer.ReferralId; fullUser.Amount = referrer.Amount; fullUser.Tier = referrer.Tier; fullUser.ETag = referrer.ETag; fullUser.Key = referrer.Key; fullUser.YtdTotal = referrer.YtdTotal; } if (userReferral != null) { fullUser.WalletDownloadDate = userReferral.WalletDownloadDate; fullUser.MinimumBalanceDate = userReferral.MinimumBalanceDate; fullUser.SyncDate = userReferral.SyncDate; fullUser.SignupReward = userReferral.SignupReward; fullUser.Bonus = userReferral.Bonus; fullUser.ReferrerBonus = userReferral.ReferrerBonus; } return(fullUser); }
public async Task <IActionResult> UpdateRole(string email, string newRole) { if (!string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(newRole)) { var user = await _userManager.FindByEmailAsync(email); var currentRoles = await _userManager.GetRolesAsync(user); var userRef = await _context.UserReferral.FirstOrDefaultAsync(x => x.UserId == user.Id); var refPromo = await _context.Promos.FirstOrDefaultAsync(x => x.Code == user.Email.Split('@')[0]); if (!currentRoles.Contains(newRole)) { // Change Roles var removeRoleResult = await _userManager.RemoveFromRolesAsync(user, currentRoles); if (removeRoleResult.Succeeded) { await _userManager.AddToRoleAsync(user, newRole); } await _context.SaveChangesAsync(); switch (newRole.ToUpper()) { case "SPONSOR": if (userRef == null) { userRef = new UserReferral { UserId = user.Id, Enabled = true, ReferralCode = user.Email.Split('@')[0], PayoutPercent = 100, StoreCreditPercent = 10 }; } if (refPromo == null) { refPromo = new PromoModel { Code = userRef.ReferralCode, DiscountPercentage = 3, Enabled = true }; } userRef.Enabled = true; userRef.PayoutPercent = 100; userRef.StoreCreditPercent = 3; refPromo.Enabled = true; await UpsertUserReferralAsync(userRef); await UpsertPromoCodeAsync(refPromo); break; case "DEFAULT": default: if (userRef != null) { userRef.Enabled = false; } if (refPromo != null) { refPromo.Enabled = false; } await UpsertUserReferralAsync(userRef); await UpsertPromoCodeAsync(refPromo); break; } } } return(RedirectToAction("ManageUsers", "Admin")); }