package uk.tim740.skUtilities.util;

import ch.njol.skript.lang.Condition;
import ch.njol.skript.lang.Expression;
import ch.njol.skript.lang.SkriptParser;
import ch.njol.util.Kleenean;
import org.bukkit.event.Event;
import uk.tim740.skUtilities.skUtilities;

import java.time.ZoneId;
import java.util.TimeZone;

/**
 * Created by tim740 on 02/04/2016
 */
public class CondisTimeZone extends Condition {
  private Expression<String> str;

  @Override
  public boolean check(Event e) {
    String s = str.getSingle(e).toUpperCase();
    if (!ZoneId.getAvailableZoneIds().contains(s)) {
      skUtilities.prSysE("'" + s + "' is not a valid TimeZone!", getClass().getSimpleName());
    }
    Boolean chk = s.equals(TimeZone.getTimeZone(TimeZone.getDefault().getID()).getDisplayName(false, TimeZone.SHORT));
    return (isNegated() ? !chk : chk);
  }

  @SuppressWarnings("unchecked")
  @Override
  public boolean init(Expression<?>[] e, int i, Kleenean k, SkriptParser.ParseResult p) {
    str = (Expression<String>) e[0];
    setNegated(i == 1);
    return true;
  }

  @Override
  public String toString(Event e, boolean b) {
    return getClass().getName();
  }
}