|
|
|
@ -2,36 +2,46 @@ package xyz.soukup.mineconomiaCoreV2.variables; |
|
|
|
|
|
|
|
|
|
|
|
import com.j256.ormlite.field.DatabaseField; |
|
|
|
import com.j256.ormlite.field.DatabaseField; |
|
|
|
import com.j256.ormlite.table.DatabaseTable; |
|
|
|
import com.j256.ormlite.table.DatabaseTable; |
|
|
|
|
|
|
|
import org.bukkit.entity.Player; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.sql.SQLException; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.Date; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static xyz.soukup.mineconomiaCoreV2.database.DatabaseUtil.transactionDao; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseTable(tableName = "transactions") |
|
|
|
@DatabaseTable(tableName = "transactions") |
|
|
|
public class Transaction { |
|
|
|
public class Transaction { |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField(generatedId = true) |
|
|
|
@DatabaseField(generatedId = true) |
|
|
|
private int id; |
|
|
|
private int id; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField |
|
|
|
@DatabaseField(canBeNull = false) |
|
|
|
private Date date; |
|
|
|
private Date date; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField |
|
|
|
@DatabaseField(canBeNull = false) |
|
|
|
private String type; |
|
|
|
private String type; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField |
|
|
|
@DatabaseField(canBeNull = false) |
|
|
|
private float amount; |
|
|
|
private float amount; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField |
|
|
|
@DatabaseField(canBeNull = false) |
|
|
|
private String sender; |
|
|
|
private String sender; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField(columnName = "sender_type") |
|
|
|
@DatabaseField(columnName = "sender_type", canBeNull = false) |
|
|
|
private String senderType; |
|
|
|
private String senderType; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField |
|
|
|
@DatabaseField(canBeNull = false) |
|
|
|
private String receiver; |
|
|
|
private String receiver; |
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField(columnName = "receiver_type") |
|
|
|
@DatabaseField(columnName = "receiver_type", canBeNull = false) |
|
|
|
private String receiverType; |
|
|
|
private String receiverType; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField |
|
|
|
|
|
|
|
private String s1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@DatabaseField |
|
|
|
|
|
|
|
private String s2; |
|
|
|
|
|
|
|
|
|
|
|
public int getId() { |
|
|
|
public int getId() { |
|
|
|
return id; |
|
|
|
return id; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -96,5 +106,131 @@ public class Transaction { |
|
|
|
this.receiverType = receiverType; |
|
|
|
this.receiverType = receiverType; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getS1(){ |
|
|
|
|
|
|
|
return s1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setS1(String s1){ |
|
|
|
|
|
|
|
this.s1 = s1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public String getS2(){ |
|
|
|
|
|
|
|
return s2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setS2(String s2){ |
|
|
|
|
|
|
|
this.s2 = s2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Boolean senderHasEnough() throws SQLException { |
|
|
|
|
|
|
|
switch (this.senderType){ |
|
|
|
|
|
|
|
case "server": |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
case "group": |
|
|
|
|
|
|
|
Group group = Group.getGroup(this.sender); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (group == null){ |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return group.getMoney() >= this.amount; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case "player": |
|
|
|
|
|
|
|
PlayerData playerData = PlayerData.getPlayerData(this.sender); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (playerData == null){ |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return playerData.getMoney() >= this.amount; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void process() throws SQLException { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
float money; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (this.senderType){ |
|
|
|
|
|
|
|
case "server": |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "player": |
|
|
|
|
|
|
|
PlayerData playerData = PlayerData.getPlayerData(this.sender); |
|
|
|
|
|
|
|
money = playerData.getMoney(); |
|
|
|
|
|
|
|
playerData.setMoney(money - amount); |
|
|
|
|
|
|
|
playerData.save(); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "group": |
|
|
|
|
|
|
|
Group group = Group.getGroup(this.sender); |
|
|
|
|
|
|
|
money = group.getMoney(); |
|
|
|
|
|
|
|
group.setMoney(money - amount); |
|
|
|
|
|
|
|
group.save(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (this.receiverType){ |
|
|
|
|
|
|
|
case "server": |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "player": |
|
|
|
|
|
|
|
PlayerData playerData = PlayerData.getPlayerData(this.receiver); |
|
|
|
|
|
|
|
money = playerData.getMoney(); |
|
|
|
|
|
|
|
playerData.setMoney(money + amount); |
|
|
|
|
|
|
|
playerData.save(); |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "group": |
|
|
|
|
|
|
|
Group group = Group.getGroup(this.receiver); |
|
|
|
|
|
|
|
money = group.getMoney(); |
|
|
|
|
|
|
|
group.setMoney(money + amount); |
|
|
|
|
|
|
|
group.save(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.setDate(new Date()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transactionDao.create(this); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Boolean processIfSenderHasEnough() throws SQLException { |
|
|
|
|
|
|
|
if (this.senderHasEnough()){ |
|
|
|
|
|
|
|
this.process(); |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Transaction prepareTransaction(String sender, String senderType, String receiver, String receiverType, Float amount, String type){ |
|
|
|
|
|
|
|
Transaction transaction = new Transaction(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transaction.setSender(sender); |
|
|
|
|
|
|
|
transaction.setSenderType(senderType); |
|
|
|
|
|
|
|
transaction.setReceiver(receiver); |
|
|
|
|
|
|
|
transaction.setReceiverType(receiverType); |
|
|
|
|
|
|
|
transaction.setAmount(amount); |
|
|
|
|
|
|
|
transaction.setType(type); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return transaction; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Transaction prepareTransaction(String sender, String senderType, String receiver, String receiverType, Float amount, String type, String s1){ |
|
|
|
|
|
|
|
Transaction transaction = prepareTransaction(sender, senderType, receiver, receiverType, amount, type); |
|
|
|
|
|
|
|
transaction.setS1(s1); |
|
|
|
|
|
|
|
return transaction; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static Transaction prepareTransaction(String sender, String senderType, String receiver, String receiverType, Float amount, String type, String s1, String s2){ |
|
|
|
|
|
|
|
Transaction transaction = prepareTransaction(sender, senderType, receiver, receiverType, amount, type, s1); |
|
|
|
|
|
|
|
transaction.setS2(s2); |
|
|
|
|
|
|
|
return transaction; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static Transaction prepareTransaction(Player senderPlayer, Player receiverPlayer, Float amount){ |
|
|
|
|
|
|
|
String sender = senderPlayer.getDisplayName(); |
|
|
|
|
|
|
|
String receiver = receiverPlayer.getDisplayName(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return prepareTransaction(sender, "player", receiver, "player", amount, "playertoplayer"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|