package handling.channel.handler;
import client.MapleCharacter;
import client.MapleClient;
import client.inventory.Item;
import client.inventory.ItemLoader;
import client.inventory.MapleInventoryType;
import constants.GameConstants;
import database.DatabaseConnection;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import server.MapleDueyActions;
import tools.Pair;
import tools.data.LittleEndianAccessor;
public class DueyHandler {
public static final void DueyOperation(LittleEndianAccessor slea, MapleClient c) {
}
private static final boolean addMesoToDB(int mesos, String sName, int recipientID, boolean isOn) {
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("INSERT INTO dueypackages (RecieverId, SenderName, Mesos, TimeStamp, Checked, Type) VALUES (?, ?, ?, ?, ?, ?)");
ps.setInt(1, recipientID);
ps.setString(2, sName);
ps.setInt(3, mesos);
ps.setLong(4, System.currentTimeMillis());
ps.setInt(5, isOn ? 0 : 1);
ps.setInt(6, 3);
ps.executeUpdate();
ps.close();
return true;
} catch (SQLException se) {
se.printStackTrace();
}
return false;
}
private static final boolean addItemToDB(Item item, int quantity, int mesos, String sName, int recipientID, boolean isOn) {
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("INSERT INTO dueypackages (RecieverId, SenderName, Mesos, TimeStamp, Checked, Type) VALUES (?, ?, ?, ?, ?, ?)", 1);
ps.setInt(1, recipientID);
ps.setString(2, sName);
ps.setInt(3, mesos);
ps.setLong(4, System.currentTimeMillis());
ps.setInt(5, isOn ? 0 : 1);
ps.setInt(6, item.getType());
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
ItemLoader.DUEY.saveItems(Collections.singletonList(new Pair<Item, MapleInventoryType>(item, GameConstants.getInventoryType(item.getItemId()))), rs.getInt(1));
}
rs.close();
ps.close();
return true;
} catch (SQLException se) {
se.printStackTrace();
}
return false;
}
public static final List<MapleDueyActions> loadItems(MapleCharacter chr) {
List packages = new LinkedList();
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT * FROM dueypackages WHERE RecieverId = ?");
ps.setInt(1, chr.getId());
ResultSet rs = ps.executeQuery();
while (rs.next()) {
MapleDueyActions dueypack = getItemByPID(rs.getInt("packageid"));
dueypack.setSender(rs.getString("SenderName"));
dueypack.setMesos(rs.getInt("Mesos"));
dueypack.setSentTime(rs.getLong("TimeStamp"));
packages.add(dueypack);
}
rs.close();
ps.close();
return packages;
} catch (SQLException se) {
se.printStackTrace();
}
return null;
}
public static final MapleDueyActions loadSingleItem(int packageid, int charid) {
List packages = new LinkedList();
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("SELECT * FROM dueypackages WHERE PackageId = ? and RecieverId = ?");
ps.setInt(1, packageid);
ps.setInt(2, charid);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
MapleDueyActions dueypack = getItemByPID(packageid);
dueypack.setSender(rs.getString("SenderName"));
dueypack.setMesos(rs.getInt("Mesos"));
dueypack.setSentTime(rs.getLong("TimeStamp"));
packages.add(dueypack);
rs.close();
ps.close();
return dueypack;
}
rs.close();
ps.close();
return null;
} catch (SQLException se) {
}
return null;
}
public static final void reciveMsg(MapleClient c, int recipientId) {
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("UPDATE dueypackages SET Checked = 0 where RecieverId = ?");
ps.setInt(1, recipientId);
ps.executeUpdate();
ps.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
private static final void removeItemFromDB(int packageid, int charid) {
Connection con = DatabaseConnection.getConnection();
try {
PreparedStatement ps = con.prepareStatement("DELETE FROM dueypackages WHERE PackageId = ? and RecieverId = ?");
ps.setInt(1, packageid);
ps.setInt(2, charid);
ps.executeUpdate();
ps.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
private static final MapleDueyActions getItemByPID(int packageid) {
try {
Map iter = ItemLoader.DUEY.loadItems(false, packageid);
if ((iter != null) && (iter.size() > 0)) {
Iterator i$ = iter.values().iterator();
if (i$.hasNext()) {
Pair i = (Pair) i$.next();
return new MapleDueyActions(packageid, (Item) i.getLeft());
}
}
} catch (Exception se) {
se.printStackTrace();
}
return new MapleDueyActions(packageid);
}
}