using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;
using Plus.Database.Interfaces;
using Plus.Utilities;
using Plus.HabboHotel.Users;
using Plus.HabboHotel.GameClients;



namespace Plus.HabboHotel.Rooms.Chat.Commands.Moderator
{
    class TradeBanCommand : IChatCommand
    {
        public string PermissionRequired
        {
            get { return "command_trade_ban"; }
        }

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

        public string Description
        {
            get { return "Bannir l'échange à un utilisateur."; }
        }

        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            if (Params.Length == 1)
            {
                Session.SendWhisper("S'il vous plaît entrer un nom d'utilisateur et une longueur valable en jours (min 1 jour, max 365 jours).");
                return;
            }

            Habbo Habbo = PlusEnvironment.GetHabboByUsername(Params[1]);
            if (Habbo == null)
            {
                Session.SendWhisper("Une erreur est survenue tout en trouvant cet utilisateur dans la base de données.");
                return;
            }

            if (Convert.ToDouble(Params[2]) == 0)
            {
                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '0' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1");
                }

                if (Habbo.GetClient() != null)
                {
                    Habbo.TradingLockExpiry = 0;
                    Habbo.GetClient().SendNotification("Votre interdiction du commerce en circulation a été supprimé");
                }

                Session.SendWhisper("Vous avez supprimé avec succès" + Habbo.Username + "'s de l'interdiction d'échange.");
                return;
            }

            double Days;
            if (double.TryParse(Params[2], out Days))
            {
                if (Days < 1)
                    Days = 1;

                if (Days > 365)
                    Days = 365;

                double Length = (PlusEnvironment.GetUnixTimestamp() + (Days * 86400));
                using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.RunQuery("UPDATE `user_info` SET `trading_locked` = '" + Length + "', `trading_locks_count` = `trading_locks_count` + '1' WHERE `user_id` = '" + Habbo.Id + "' LIMIT 1");
                }

                if (Habbo.GetClient() != null)
                {
                    Habbo.TradingLockExpiry = Length;
                    Habbo.GetClient().SendNotification("Vous avez été banni pour le commerce pendant " + Days + " jour(s)!");
                }

                Session.SendWhisper("Vous avez réussi à interdire " + Habbo.Username + " pour " + Days + " jour(s).");
            }
            else
                Session.SendWhisper("S'il vous plaît entrer un nombre valide.");
        }
    }
}
