package com.gmail.nuclearcat1337.xpSystem.shop;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;

import com.gmail.nuclearcat1337.anniPro.itemMenus.ItemMenu;
import com.gmail.nuclearcat1337.anniPro.itemMenus.ItemMenu.Size;
import com.gmail.nuclearcat1337.anniPro.kits.Kit;
import com.gmail.nuclearcat1337.anniPro.voting.ConfigManager;
import com.gmail.nuclearcat1337.xpSystem.main.XPSystem;

public class Shop implements CommandExecutor
{
	//private XPSystem system;
	static String purchasedMessage;
	static String forsaleMessage;
	static String confirmMessage;
	static String confirmExpired;
	static String notEnoughXP;
	static String kitPurchased;
	String noKitsToPurchase;
	private KitShopMenuItem[] items;
	private final Map<UUID,ItemMenu> menus;
	
	public Shop(XPSystem system, ConfigurationSection shopSection)
	{
		menus = new HashMap<UUID,ItemMenu>();
		purchasedMessage = getString(shopSection,"Already-Purchased-Kit");
		forsaleMessage = getString(shopSection,"Not-Yet-Purchased-Kit");
		confirmMessage = getString(shopSection,"Confirm-Purchase-Kit");
		confirmExpired = getString(shopSection,"Confirmation-Expired");
		notEnoughXP = getString(shopSection,"Not-Enough-XP");
		kitPurchased = getString(shopSection,"Kit-Purchased");
		noKitsToPurchase = getString(shopSection,"No-Kits-To-Purchase");
		if(!shopSection.isConfigurationSection("Kits"))
			shopSection.createSection("Kits");
		ConfigurationSection kitSec = shopSection.getConfigurationSection("Kits");
		Collection<Kit> kits = Kit.getKits();
		items = new KitShopMenuItem[kits.size()];
		int c =0;
		for(Kit k : kits)
		{
			ConfigManager.setDefaultIfNotSet(kitSec, k.getName(), 10000);
			KitShopMenuItem item = new KitShopMenuItem(new KitWrapper(k,kitSec.getInt(k.getName())),system);
			items[c] = item;
			c++;
		}
	}
	
	private String getString(ConfigurationSection section, String path)
	{
		return ChatColor.translateAlternateColorCodes('&', section.getString(path));
	}
	
	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
	{
		if(sender instanceof Player)
		{
			Player player = (Player)sender;
			ItemMenu menu = menus.get(player.getUniqueId());
			if(menu == null)
			{
				menu = new ItemMenu(player.getName()+"'s Kit Shop",Size.fit(items.length));
				menus.put(player.getUniqueId(), menu);
			}
			menu.clearAllItems();
			int counter = 0;
			for(KitShopMenuItem m : items)
			{
				if(!m.getKit().hasPermission(player))
				{
					menu.setItem(counter, m);
					counter++;
				}
			}
			if(counter == 0)
				sender.sendMessage(this.noKitsToPurchase);
			else
				menu.open(player);
		}
		return true;
	}
}