package me.beastman3226.bc.listener;
import com.evilmidget38.UUIDFetcher;
import java.util.logging.Level;
import java.util.logging.Logger;
import me.beastman3226.bc.BusinessCore;
import me.beastman3226.bc.data.file.BusinessFileManager;
import me.beastman3226.bc.data.file.EmployeeFileManager;
import me.beastman3226.bc.data.file.FileData;
import me.beastman3226.bc.event.business.BusinessBalanceChangeEvent;
import me.beastman3226.bc.event.business.BusinessFiredEmployeeEvent;
import me.beastman3226.bc.event.business.BusinessHiredEmployeeEvent;
import me.beastman3226.bc.event.business.BusinessPostCreatedEvent;
import me.beastman3226.bc.player.Employee;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
/**
*
* @author beastman3226
*/
public class BusinessListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR)
public void onBalanceChange(BusinessBalanceChangeEvent e) {
if (!e.isCancelled()) {
BusinessFileManager.editConfig(new FileData().add(e.getBusiness().getName() + ".balance", e.getFinalAmount()));
}
BusinessCore.log(Level.INFO, e.getBusiness() + "'s balance has changed to " + e.getFinalAmount());
}
@EventHandler(priority = EventPriority.MONITOR)
public void onCreated(BusinessPostCreatedEvent e) {
if (!e.isCancelled()) {
try {
String ownerName = e.getBusiness().getOwnerName();
BusinessFileManager.editConfig(new FileData().add(e.getBusiness().getName() + ".name", e.getBusiness().getName())
.add(e.getBusiness().getName() + ".ownerUUID", "" + UUIDFetcher.getUUIDOf(ownerName).toString())
.add(e.getBusiness().getName() + ".id", e.getBusiness().getID())
.add(e.getBusiness().getName() + ".employeeIDs", e.getBusiness().getEmployeeIDs())
.add(e.getBusiness().getName() + ".balance", e.getBusiness().getBalance()));
} catch (Exception ex) {
Logger.getLogger(BusinessListener.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@EventHandler(priority = EventPriority.MONITOR)
public void onHire(BusinessHiredEmployeeEvent e) {
for (Object o : e.getBusiness().getEmployeeIDs()) {
if (((Integer) o) == e.getEmployee().getID()) {
e.setCancelled(true);
}
}
BusinessCore.log(Level.INFO, e.getBusiness() + " has hired an employee.");
}
@EventHandler(priority = EventPriority.MONITOR)
public void onFire(BusinessFiredEmployeeEvent e) {
boolean onList = false;
for (Object o : e.getBusiness().getEmployeeIDs()) {
int id = ((Integer) o);
if (e.getEmployee().getID() == id) {
onList = true;
break;
}
}
if (!onList) {
e.setCancelled(true);
}
if (!e.isCancelled()) {
BusinessFileManager.editConfig(new FileData().add(e.getBusiness().getName() + ".employeeIDs", e.finalEmployeeList()));
EmployeeFileManager.editConfig(new FileData().add(e.getEmployee().getName(), null));
}
Employee.employeeList.remove(e.getEmployee());
}
}