using System;
using System.Data;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using Plus.Utilities;
using Plus.HabboHotel.Users;
using Plus.HabboHotel.GameClients;
using Plus.HabboHotel.Moderation;
using Plus.Database.Interfaces;
using Plus.Communication.Packets.Outgoing.Notifications;
using Plus.Communication.Packets.Outgoing.Rooms.Notifications;
using Plus.HabboHotel.Users.Inventory;
using Plus.Communication.Packets.Outgoing.Catalog;
using Plus.Communication.Packets.Outgoing.Inventory.Purse;
using Plus.Communication.Packets.Outgoing.Inventory.Furni;
using Plus.HabboHotel.Items.Utilities;
using Plus.HabboHotel.Quests;
using Plus.HabboHotel.Items;
using Plus.Communication.Packets.Incoming;

namespace Plus.HabboHotel.Rooms.Chat.Commands.Events
{
    class GiveRewards : IChatCommand
    {
        public string PermissionRequired
        {
            get { return "command_giverewards"; }
        }

        public string Parameters
        {
            get { return "%username%"; }
        }

        public string Description
        {
            get { return "Envoyer un cadeaux."; }
        }

        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("S'il vous plaît entrez le nom de l'utilisateur.");
                return;
            }

            Habbo Habbo = PlusEnvironment.GetHabboByUsername(Params[1]);
            GameClient TargetClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Params[1]);
            if (Habbo == null)
            {
                Session.SendWhisper("Une erreur est survenue tout en trouvant cet utilisateur dans la base de données.");
                return;
            }
            if (Habbo.Username == Session.GetHabbo().Username)
            {
                Session.SendWhisper("Vous ne pouvez pas vous give vous même.");
                return;
            }

            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                DataTable Table = null;
                dbClient.SetQuery("SELECT * FROM catalog_items WHERE page_id = '9214' ORDER BY RAND() LIMIT 1");
                Table = dbClient.getTable();
                foreach (DataRow dRow in Table.Rows)
                {
                    Session.SendMessage(new BubbleNotificationComposer("Mobis offert : " + Convert.ToString(dRow["catalog_name"]) + ", envoyer avec succès!", "builders_club_room_locked_small"));
                    TargetClient.SendMessage(new BubbleNotificationComposer("Le mobis : " + Convert.ToString(dRow["catalog_name"]) + ", à été placé dans votre inventaire par un membre de l'équipe!", "builders_club_room_locked_small"));
                    TargetClient.SendMessage(new RoomNotificationComposer("Informations importante!",
                     "<b>Bravo " + TargetClient.GetHabbo().Username + " !</b>\n" +
                     "<b>Vous venez de reçevoir un mobilier rare de la part d'un membre de l'équipe!</b>:\n" +
                     "<b>Découvre le maintenant en ouvrant ton inventaire.</b>:\n", "givereward", ""));
                            DataRow dFurni = null;
                            dbClient.SetQuery("SELECT public_name FROM furniture WHERE id = '" + Convert.ToInt32(dRow["item_id"]) + "'");
                            dFurni = dbClient.getRow();
                            TargetClient.GetHabbo().GetInventoryComponent().AddNewItem(0, Convert.ToInt32(dRow["item_id"]), Convert.ToString(dFurni["public_name"]), 1, true, false, 0, 0);
                }
                TargetClient.GetHabbo().GetInventoryComponent().UpdateItems(false);
            }

        }
    }
}