package de.yannicpunktdee.yoshibot.command.commands;

import de.yannicpunktdee.yoshibot.command.YoshiCommand;
import de.yannicpunktdee.yoshibot.command.YoshiCommandContext;
import de.yannicpunktdee.yoshibot.utils.SauceProvider;
import net.dv8tion.jda.api.entities.MessageEmbed;

import java.util.Arrays;
import java.util.List;

public class SauceCommand extends YoshiCommand {
	/**
	 * Erzeugt ein neues Kommando, führt es aber noch nicht aus. Es wird ermittelt, ob die Argumentenkombination valide
	 * ist und das isOk-Flag gesetzt. Im Fehlerfall wird eine Fehleremeldung spezifiziert.
	 *
	 * @param context Der Kontext mit dem das Kommando aufgerufen wurde.
	 */
	public SauceCommand(YoshiCommandContext context) {
		super(context);
	}
	
	/**
	 * {@inheritDoc}
	 */
	@Override
	public boolean execute() {
		if (!super.execute()) return false;
		if (!context.getEvent().getTextChannel().isNSFW()) {
			sendErrorMessage("Dieser Kanal is nix gut, weil vong nsfw her. Geh woanders hin du kek");
			return true;
		}
		if (context.getArgument("tags") != null) {
			sendCustomMessage(byTags(Arrays.asList(context.getArgument("tags").split(" "))));
			return true;
		} else if (context.getArgument("id") != null) {
			sendCustomMessage(byIndex(Integer.parseInt(context.getArgument("id"))));
			return true;
		}
		return false;
	}
	
	private MessageEmbed byIndex(int index) {
		return SauceProvider.getSauce(index);
	}
	
	private MessageEmbed byTags(List<String> tags) {
		return SauceProvider.getRandomSauce(String.join(" ", tags));
	}
}
