示例#1
0
 public static void AddPremiumTime(int days, GoogleUser user)
 {
     if (user.PremiumExpires > DateTime.Now)
         user.PremiumExpires += TimeSpan.FromDays(days);
     else
         user.PremiumExpires = DateTime.Now + TimeSpan.FromDays(days);
 }
示例#2
0
 public void SavePurchase(GoogleUser user, int days, string transactionId)
 {
     using (var context = new HypixelContext())
     {
         Server.AddPremiumTime(days, user);
         context.Add(new Bonus()
         {
             BonusTime     = TimeSpan.FromDays(days),
             ReferenceData = transactionId,
             Type          = Bonus.BonusType.PURCHASE,
             UserId        = user.Id
         });
         if (user.ReferedBy != 0)
         {
             context.Add(new Bonus()
             {
                 BonusTime     = TimeSpan.FromDays(days) / 10,
                 ReferenceData = transactionId,
                 Type          = Bonus.BonusType.REFERED_UPGRADE,
                 UserId        = user.ReferedBy
             });
         }
         context.Update(user); context.SaveChanges();
     }
 }
示例#3
0
        internal GoogleUser GetOrCreateUser(string googleId, string email = null)
        {
            using (var context = new HypixelContext())
            {
                var user = context.Users.Where(u => u.GoogleId == googleId).FirstOrDefault();
                if (user == null)
                {
                    user = new GoogleUser()
                    {
                        GoogleId  = googleId,
                        Email     = email,
                        CreatedAt = DateTime.Now
                    };
                    context.Users.Add(user);
                    context.SaveChanges();
                }
                if (user.Email == null)
                {
                    user.Email = email;
                    context.SaveChanges();
                }

                return(user);
            }
        }
示例#4
0
        public void WasReferedBy(GoogleUser user, string referer)
        {
            if (user.ReferedBy != 0)
            {
                throw new CoflnetException("already_refered", "You already have used a referal Link. You can only be refered once.");
            }
            var id = hashids.Decode(referer)[0];

            if (id == user.Id)
            {
                throw new CoflnetException("self_refered", "You cant refer yourself");
            }
            using (var context = new HypixelContext())
            {
                user.ReferedBy = id;
                // give the user 'test' premium time
                Server.AddPremiumTime(1, user);
                context.Update(user);
                // persist the boni
                context.Add(new Bonus()
                {
                    BonusTime     = TimeSpan.FromDays(1),
                    ReferenceData = id.ToString(),
                    Type          = Bonus.BonusType.BEING_REFERED,
                    UserId        = user.Id
                });


                var referUser = context.Users.Where(u => u.Id == id).FirstOrDefault();
                if (referUser != null)
                {
                    // award referal bonus to user who refered
                    Server.AddPremiumTime(1, referUser);
                    context.Add(new Bonus()
                    {
                        BonusTime     = TimeSpan.FromDays(1),
                        ReferenceData = user.Id.ToString(),
                        Type          = Bonus.BonusType.REFERAL,
                        UserId        = referUser.Id
                    });
                    context.Update(referUser);
                }
                context.SaveChanges();
            }
        }
示例#5
0
 public ReeralInfo GetReferalInfo(GoogleUser user)
 {
     using (var context = new HypixelContext())
     {
         var referedUsers = context.Users.Where(u => u.ReferedBy == user.Id).ToList();
         var minDate      = new DateTime(2020, 2, 2);
         var upgraded     = context.Boni.Where(b => b.UserId == user.Id && b.Type == Bonus.BonusType.REFERED_UPGRADE).ToList();
         var receivedTime = TimeSpan.FromDays(referedUsers.Count);
         if (upgraded.Count > 0)
         {
             receivedTime += upgraded.Select(b => b.BonusTime).Aggregate((a, b) => a + b);
         }
         return(new ReeralInfo()
         {
             RefId = hashids.Encode(user.Id),
             BougthPremium = upgraded.Count,
             ReceivedTime = receivedTime,
             ReceivedHours = (int)receivedTime.TotalHours,
             ReferCount = referedUsers.Count
         });
     }
 }