using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Blizzard.HabboHotel.Users { public class Subscription { private Habbo User; int Id; internal int ExpireTime; internal int InitialTime; internal int Gifts; internal int Days; internal Subscription(Habbo cUser) { User = cUser; } internal bool HasSubscription(string Name) { foreach (SubscriptionsData Sub in SubscriptionsData.Subscriptions) { if (Sub.UserId == User.Id && Sub.SubscriptionId == Name) return true; else continue; } return false; } internal void GetData(string Name) { if (HasSubscription(Name)) { foreach (SubscriptionsData Sub in SubscriptionsData.Subscriptions) { if (Sub.UserId == User.Id && Sub.SubscriptionId == Name) { this.Id = Sub.Id; this.InitialTime = Sub.InitialTime; this.ExpireTime = Sub.ExpireTime; this.Gifts = Sub.Gifts; this.Days = Sub.Days; } else continue; } } } internal int GetActualGifts(string SubId) { int SGifts = 0; this.GetData(SubId); Double Initial = this.InitialTime; Double TimeLeft = BlizzardSystem.GetUnixTimeStamp() - Initial; int TotalDaysLeft = (int)Math.Ceiling(TimeLeft / 86400); int MonthsLeft = TotalDaysLeft / 31; SGifts = (MonthsLeft - this.Gifts) + Days; return SGifts; } internal string LoadMySubscription() { foreach (SubscriptionsData Sub in SubscriptionsData.Subscriptions) { if (Sub.UserId == User.Id) { return Sub.SubscriptionId; } else continue; } return null; } internal void AddOrExtendSubscription(string SubscriptionId, int DurationSeconds) { SubscriptionId = SubscriptionId.ToLower(); if (!this.HasSubscription(SubscriptionId)) { int TimeCreated = (int)BlizzardSystem.GetUnixTimeStamp(); int TimeExpire = ((int)BlizzardSystem.GetUnixTimeStamp() + DurationSeconds); Updater.SQLStoExecute.Add("INSERT INTO users_subscriptions (id, userid, subscription_id, sub_activated, sub_finished, usedgifts) VALUES (NULL, '" + User.Id + "', '" + SubscriptionId + "', '" + TimeCreated + "', '" + TimeExpire + "', '0');"); SubscriptionsData Dat = new SubscriptionsData(); Dat.Id = SubscriptionsData.Subscriptions.Count + 1; Dat.SubscriptionId = SubscriptionId; Dat.InitialTime = TimeCreated; Dat.ExpireTime = TimeExpire; Dat.Gifts = 0; Dat.Days = 1; Dat.UserId = User.Id; SubscriptionsData.Subscriptions.Add(Dat); } else { foreach (SubscriptionsData Sub in SubscriptionsData.Subscriptions) { if (Sub.UserId == User.Id && Sub.SubscriptionId == SubscriptionId) { int NewTimeExpire = Sub.ExpireTime + DurationSeconds; Sub.ExpireTime = NewTimeExpire; Updater.SQLStoExecute.Add("UPDATE users_subscriptions SET sub_finished = '" + NewTimeExpire + "' WHERE userid = '" + User.Id + "'"); } } } } internal void UpdateSubscription(string SubscriptionId, int DurationSeconds) { this.GetData(this.LoadMySubscription()); Updater.SQLStoExecute.Add("DELETE FROM users_subscriptions WHERE id = '" + this.Id + "'"); SubscriptionId = SubscriptionId.ToLower(); int TimeCreated = (int)BlizzardSystem.GetUnixTimeStamp(); int TimeExpire = ((int)BlizzardSystem.GetUnixTimeStamp() + DurationSeconds); Updater.SQLStoExecute.Add("INSERT INTO users_subscriptions (id, userid, subscription_id, sub_activated, sub_finished, usedgifts) VALUES (NULL, '" + User.Id + "', '" + SubscriptionId + "', '" + TimeCreated + "', '" + TimeExpire + "', '0');"); SubscriptionsData Dat = new SubscriptionsData(); Dat.Id = SubscriptionsData.Subscriptions.Count + 1; Dat.SubscriptionId = SubscriptionId; Dat.InitialTime = TimeCreated; Dat.ExpireTime = TimeExpire; Dat.Gifts = 0; Dat.Days = 1; Dat.UserId = User.Id; SubscriptionsData.Subscriptions.Add(Dat); } } }