package com.nyancraft.reportrts;
import com.nyancraft.reportrts.data.Comment;
import com.nyancraft.reportrts.data.Ticket;
import com.nyancraft.reportrts.persistence.DataProvider;
import com.nyancraft.reportrts.util.Message;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeSet;
import java.util.UUID;
public class LoginTask extends BukkitRunnable {
private final ReportRTS plugin;
private final UUID uuid;
private final Map.Entry<Integer, UUID> entry;
private final DataProvider data;
public LoginTask(ReportRTS plugin, UUID uuid, Map.Entry<Integer, UUID> entry) {
this.plugin = plugin;
this.uuid = uuid;
this.entry = entry;
this.data = plugin.getDataProvider();
}
public void run() {
Ticket ticket = data.getTicket(entry.getKey());
boolean online = plugin.getServer().getPlayer(uuid) != null;
if(online) plugin.getServer().getPlayer(uuid).sendMessage(Message.ticketCloseOffline());
// Prevent duplicate notifications (especially across multiple servers)
if(ticket.isNotified()) return;
if(online) {
Player player = plugin.getServer().getPlayer(uuid);
player.sendMessage(Message.ticketCloseText(ticket.getMessage()));
TreeSet<Comment> comments = ticket.getComments();
if(!comments.isEmpty()) {
Iterator it = comments.iterator();
while(it.hasNext()) {
Comment comment = (Comment) it.next();
player.sendMessage(Message.ticketCommentText(comment.getName(), comment.getComment()));
}
}
}
if(data.setNotificationStatus(entry.getKey(), true) < 1) plugin.getLogger().warning("Unable to set notification status to 1 for ticket " + entry.getKey() + ".");
}
}