bank account refactor

This commit is contained in:
hydrant
2020-03-15 21:33:04 +01:00
parent 75e26b8e8a
commit 92c054c90c
30 changed files with 2088 additions and 300 deletions

View File

@@ -11,7 +11,7 @@ using ReallifeGamemode.Database.Models;
namespace ReallifeGamemode.Database.Entities
{
public partial class Faction : IBankAccountOwner
public partial class Faction : BankAccountHolder<FactionBankAccount>
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
@@ -21,19 +21,6 @@ namespace ReallifeGamemode.Database.Entities
public bool StateOwned { get; set; }
public int WeaponDealTime { get; set; } = 60;
public IBankAccount GetBankAccount(DatabaseContext databaseContext = null)
{
if (databaseContext == null)
{
using (databaseContext = new DatabaseContext())
{
return databaseContext.FactionBankAccounts.FirstOrDefault(u => u.FactionId == this.Id);
}
}
else
{
return databaseContext.FactionBankAccounts.FirstOrDefault(u => u.FactionId == this.Id);
}
}
public override string BankAccountName => Name;
}
}

View File

@@ -13,14 +13,16 @@ namespace ReallifeGamemode.Database.Entities
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("Faction")]
public int FactionId { get; set; }
public Faction Faction { get; set; }
[StringLength(12)]
public string Bic { get; set; }
[StringLength(32)]
public string Iban { get; set; }
public int Balance { get; set; }
public bool Active { get; set; }
}
}

View File

@@ -6,7 +6,7 @@ using ReallifeGamemode.Database.Models;
namespace ReallifeGamemode.Database.Entities
{
public partial class Group : IBankAccountOwner
public partial class Group : BankAccountHolder<GroupBankAccount>
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
@@ -14,34 +14,6 @@ namespace ReallifeGamemode.Database.Entities
public string Name { get; set; }
public IBankAccount GetBankAccount(DatabaseContext databaseContext = null)
{
GroupBankAccount bankAccount = null;
if (databaseContext == null)
{
using (databaseContext = new DatabaseContext())
{
bankAccount = databaseContext.GroupBankAccounts.Include(g => g.Group).Where(g => g.Group == this).FirstOrDefault();
}
}
else
{
bankAccount = databaseContext.GroupBankAccounts.Include(g => g.Group).Where(g => g.Group == this).FirstOrDefault();
}
if (bankAccount == null)
{
bankAccount = new GroupBankAccount
{
Group = this,
Balance = 0
};
databaseContext.GroupBankAccounts.Add(bankAccount);
databaseContext.SaveChanges();
}
return bankAccount;
}
public override string BankAccountName => Name;
}
}

View File

@@ -9,8 +9,6 @@ namespace ReallifeGamemode.Database.Entities
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public Group Group { get; set; }
public int Balance { get; set; }
}
}

View File

@@ -14,7 +14,7 @@ using ReallifeGamemode.Server.Types;
namespace ReallifeGamemode.Database.Entities
{
public partial class User : IBankAccountOwner
public partial class User : BankAccountHolder<UserBankAccount>
{
[NotMapped]
private int _wanteds;
@@ -98,27 +98,12 @@ namespace ReallifeGamemode.Database.Entities
public bool IsAdmin(AdminLevel level) => AdminLevel >= level;
public IBankAccount GetBankAccount(DatabaseContext databaseContext = null)
{
if (databaseContext == null)
{
using (databaseContext = new DatabaseContext())
{
return databaseContext.UserBankAccounts.FirstOrDefault(u => u.UserId == this.Id);
}
}
else
{
return databaseContext.UserBankAccounts.FirstOrDefault(u => u.UserId == this.Id);
}
}
[NotMapped]
public Player Player
{
get => NAPI.Pools.GetAllPlayers().Where(c => c.Name.ToLower() == this.Name.ToLower()).FirstOrDefault();
}
public override string BankAccountName => Name;
}
}

View File

@@ -17,28 +17,30 @@ namespace ReallifeGamemode.Database.Entities
[NotMapped]
private int _balance;
public delegate void BankAccountBalanceChangedEvent(UserBankAccount account);
public static event BankAccountBalanceChangedEvent BalanceChanged;
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("User")]
public int UserId { get; set; }
public User User { get; set; }
[StringLength(12)]
public string Bic { get; set; }
[StringLength(32)]
public string Iban { get; set; }
public int Balance
{
get => _balance;
set
{
_balance = value;
using (var dbContext = new DatabaseContext())
{
PlayerService.GetPlayerByNameOrId(dbContext.Users.First(u => u.Id == UserId).Name).TriggerEvent("updateMoney", value);
}
BalanceChanged?.Invoke(this);
}
}
public bool Active { get; set; }
}
}