using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Chop.Database; using Chop.Game.Misc; namespace Chop.User { public class Habbo { public uint mID; public string mName; public string mFigure; public string mPoolFigure; public string mPassword; public string mMotto; public string mConsoleMotto; public int mCredits; public int mTickets; public int mFilms; public char mGender; public byte mRank; public string mLastVisit; // DateTime? public GameClient mClient; // Maybe not needed? public List mBadges; public Badge mCurrentBadge; public ClubSubscription mSubscription; public string GetPosition() { if (mClient == null) // offline return ""; if (mClient.mRoom == null) return "On hotel view"; // TODO: form config if (mClient.mRoom.mTemplate.Publicroom_items != "") // In public room return mClient.mRoom.mName; return "Floor1b"; } public bool InRoom { get { return mClient.mRoom != null; } } //public int Credits { get { return mCredits; } } //public byte Rank { get { return mRank; } } public Habbo() { mBadges = new List(); } public static Habbo LoadByName(string pName) { using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("name", pName); return Parse(dbClient.ReadDataRow("SELECT * FROM habbos WHERE name = @name")); } } public static Habbo LoadByID(uint pID) { using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("id", pID); return Parse(dbClient.ReadDataRow("SELECT * FROM habbos WHERE id = @id")); } } public static Habbo Parse(DataRow row) { Habbo habbo = new Habbo(); habbo.mID = Convert.ToUInt32(row["id"]); habbo.mName = row["name"].ToString(); habbo.mFigure = row["figure"].ToString(); habbo.mPoolFigure = row["poolfigure"].ToString(); habbo.mPassword = row["password"].ToString(); habbo.mMotto = row["motto"].ToString(); habbo.mConsoleMotto = row["consolemotto"].ToString(); habbo.mCredits = Convert.ToInt32(row["credits"]); habbo.mTickets = Convert.ToInt32(row["tickets"]); habbo.mFilms = Convert.ToInt32(row["films"]); habbo.mGender = Convert.ToChar(row["gender"]); habbo.mRank = Convert.ToByte(row["rank"]); habbo.mLastVisit = row["lastvisit"].ToString(); return habbo; } public void UpdateColumn(string pColumn, object pValue) { using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("id", mID); dbClient.AddParamWithValue("value", pValue); dbClient.ExecuteQuery("UPDATE habbos SET " + pColumn + " = @value WHERE id = @id"); } } public void UpdateColumns(Dictionary pContent) { string s = ""; int i = 0; using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("id", mID); foreach (string column in pContent.Keys) { dbClient.AddParamWithValue("value" + i, pContent[column]); s += column + " = " + "@value" + i + ", "; i++; } dbClient.ExecuteQuery("UPDATE habbos SET " + s.Remove(s.Length - 2) + " WHERE id = @id"); } } public void LoadBadges() { mBadges.Clear(); using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("id", mID); foreach (DataRow row in dbClient.ReadDataTable("SELECT * FROM badges WHERE userid = @id").Rows) { Badge sBadge = Badge.Parse(row); mBadges.Add(sBadge); if (sBadge.mIsCurrent) mCurrentBadge = sBadge; } } } public void LoadSubscription() { using (DatabaseClient dbClient = Core.DatabaseManager.GetClient()) { dbClient.AddParamWithValue("id", mID); mSubscription = ClubSubscription.Parse(dbClient.ReadDataRow("SELECT * FROM club_subscriptions WHERE userid = @id")); } } public string ToFuseString() { Response r = new Response(); r.AppendString(mClient.ID); r.AppendString(mName); r.AppendString(mFigure); r.AppendString(mGender); r.AppendString(mMotto); r.AppendWired(mTickets); r.AppendString(mPoolFigure); r.AppendWired(mFilms); return r.ToString(); } } }