using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Chop.Database; namespace Chop.Game.Misc { public class ClubSubscription { public DateTime mLastChecked; public int mUserID; public int mDaysRemaining; public int mPeriodsRemaining; public int mPeriodsPassed; public int mTotalPeriods; public ClubSubscription() { mLastChecked = new DateTime(); mUserID = 0; mDaysRemaining = 0; mPeriodsPassed = 0; mPeriodsRemaining = 0; mTotalPeriods = 0; } public static ClubSubscription Parse(DataRow row) { ClubSubscription sSubscription = new ClubSubscription(); try { sSubscription.mUserID = Convert.ToInt32(row["userid"]); sSubscription.mLastChecked = DateTime.Parse(row["lastcheck"].ToString()); sSubscription.mDaysRemaining = Convert.ToInt32(row["daysremaining"]); sSubscription.mPeriodsRemaining = Convert.ToInt32(row["remainingperiods"]); sSubscription.mPeriodsPassed = Convert.ToInt32(row["periodspassed"]); } catch { return new ClubSubscription(); } return sSubscription; } public void AddPeriods(int pMonths) { mPeriodsRemaining += pMonths; if (mPeriodsPassed > 0) { using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("count", pMonths); dbClient.AddParamWithValue("id", mUserID); dbClient.ExecuteQuery("UPDATE club_subscriptions SET remainingperiods = remainingperiods + @count WHERE userid = @id"); } } else { using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("periods", mPeriodsRemaining); dbClient.AddParamWithValue("days", mPeriodsRemaining * 31); dbClient.AddParamWithValue("id", mUserID); dbClient.AddParamWithValue("now", DateTime.Now.ToString()); dbClient.ExecuteQuery("INSERT INTO club_subscriptions(userid,lastcheck,daysremaining,remainingperiods) VALUES(@id,@now,@days,@periods)"); } } } public void CheckStatus() { int sRemoveDays = (DateTime.Now - mLastChecked).Days; if (sRemoveDays >= mDaysRemaining) { //sRemoveDays -= mDaysRemaining; //mPeriodsPassed++; //mPeriodsRemaining--; //mDaysRemaining = (31 - sRemoveDays); for (int i = 0; i * 31 < sRemoveDays; i++) { sRemoveDays -= mDaysRemaining; mPeriodsPassed++; mPeriodsRemaining--; mDaysRemaining = (31 - sRemoveDays); } } else mDaysRemaining -= sRemoveDays; } public Response GetStatus() { Response sResponse = new Response(); sResponse.AppendString("club_habbo"); sResponse.AppendWired(mDaysRemaining); sResponse.AppendWired(mPeriodsPassed); sResponse.AppendWired(mPeriodsRemaining); sResponse.AppendWired(1); return sResponse; } } }