diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index 915c52b1..26f44ad4 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -1099,18 +1099,18 @@ namespace reallife_gamemode.Server.Commands } } //TODO - [Command("pay")] - public void getType(Client player, string receiver, float amount) + [Command("fpay")] + public void FPay(Client player, string receiver, float amount) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { ChatService.NotAuthorized(player); return; } - using (var getUser = new DatabaseContext()) + using (var getFaction = new DatabaseContext()) { - User receiverUser = getUser.Users.FirstOrDefault(u => u.Name == receiver); - BankManager.TransferUserMoneyToUser(player.GetUser(), receiverUser, amount, "/PAY"); + Entities.Faction receiverUser = getFaction.Factions.FirstOrDefault(u => u.Name == receiver); + BankManager.TransferUserMoneyToFaction(player.GetUser(), receiverUser, amount, "/FPAY"); } } diff --git a/Server/Entities/Faction.cs b/Server/Entities/Faction.cs index 88db5333..654d93a6 100644 --- a/Server/Entities/Faction.cs +++ b/Server/Entities/Faction.cs @@ -20,7 +20,7 @@ namespace reallife_gamemode.Server.Entities public int Id { get; set; } [StringLength(32)] public string Name { get; set; } - public int BankAccount { get; set; } + public float BankAccount { get; set; } public bool StateOwned { get; set; } } } diff --git a/Server/Extensions/ClientExtension.cs b/Server/Extensions/ClientExtension.cs index f93a66f4..b9c3c4e8 100644 --- a/Server/Extensions/ClientExtension.cs +++ b/Server/Extensions/ClientExtension.cs @@ -34,22 +34,6 @@ namespace reallife_gamemode.Server.Extensions } } - public static UserBankAccount GetUserBankAccount(this User user, DatabaseContext context = null) - { - using (DatabaseContext dbContext = new DatabaseContext()) - if (context == null) - { - using (context = new DatabaseContext()) - { - return context.UserBankAccounts.FirstOrDefault(u => u.UserId == user.Id); - } - } - else - { - return context.UserBankAccounts.FirstOrDefault(u => u.UserId == user.Id); - } - } - public static bool IsLoggedIn(this Client player) { return player.HasData("isLoggedIn") ? player.GetData("isLoggedIn") : false; diff --git a/Server/Extensions/FactionExtension.cs b/Server/Extensions/FactionExtension.cs new file mode 100644 index 00000000..cc922344 --- /dev/null +++ b/Server/Extensions/FactionExtension.cs @@ -0,0 +1,36 @@ +using GTANetworkAPI; +using Microsoft.EntityFrameworkCore; +using reallife_gamemode.Model; +using reallife_gamemode.Server.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +/** +* @overview Life of German Reallife - Faction Extension (FactionExtension.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + +namespace reallife_gamemode.Server.Extensions +{ + public static class FactionExtension + { + public static FactionBankAccount GetFactionBankAccount(this Faction faction, DatabaseContext context = null) + { + using (DatabaseContext dbContext = new DatabaseContext()) + if (context == null) + { + using (context = new DatabaseContext()) + { + return context.FactionBankAccounts.FirstOrDefault(u => u.FactionId == faction.Id); + } + } + else + { + return context.FactionBankAccounts.FirstOrDefault(u => u.FactionId == faction.Id); + } + } + } +} diff --git a/Server/Extensions/UserExtension.cs b/Server/Extensions/UserExtension.cs new file mode 100644 index 00000000..53081c25 --- /dev/null +++ b/Server/Extensions/UserExtension.cs @@ -0,0 +1,36 @@ +using GTANetworkAPI; +using Microsoft.EntityFrameworkCore; +using reallife_gamemode.Model; +using reallife_gamemode.Server.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +/** +* @overview Life of German Reallife - User Extension (UserExtension.cs) +* @author VegaZ +* @copyright (c) 2008 - 2018 Life of German +*/ + +namespace reallife_gamemode.Server.Extensions +{ + public static class UserExtension + { + public static UserBankAccount GetUserBankAccount(this User user, DatabaseContext context = null) + { + using (DatabaseContext dbContext = new DatabaseContext()) + if (context == null) + { + using (context = new DatabaseContext()) + { + return context.UserBankAccounts.FirstOrDefault(u => u.UserId == user.Id); + } + } + else + { + return context.UserBankAccounts.FirstOrDefault(u => u.UserId == user.Id); + } + } + } +} diff --git a/Server/Managers/BankManager.cs b/Server/Managers/BankManager.cs index 5a737ee9..ecf47330 100644 --- a/Server/Managers/BankManager.cs +++ b/Server/Managers/BankManager.cs @@ -35,8 +35,80 @@ namespace reallife_gamemode.Server.Managers }; transferMoney.BankAccountTransactionLogs.Add(transactionLog); - sender.GetUserBankAccount().Balance -= amount; - receiver.GetUserBankAccount().Balance += amount; + sender.GetUserBankAccount(transferMoney).Balance -= amount; + receiver.GetUserBankAccount(transferMoney).Balance += amount; + transferMoney.SaveChanges(); + } + } + + public static void TransferUserMoneyToFaction(User sender, Faction receiver, float amount, string origin) + { + using (var transferMoney = new Model.DatabaseContext()) + { + var transactionLog = new Logs.BankAccountTransactionHistory + { + Sender = sender.Name, + SenderBalance = sender.GetUserBankAccount().Balance, + MoneySent = amount, + Receiver = receiver.Name, + ReceiverBalance = receiver.BankAccount, + NewReceiverBalance = receiver.BankAccount += amount, + NewSenderBalance = sender.GetUserBankAccount().Balance -= amount, + Fee = 0, + Origin = origin + }; + + transferMoney.BankAccountTransactionLogs.Add(transactionLog); + sender.GetUserBankAccount(transferMoney).Balance -= amount; + receiver.BankAccount += amount; + transferMoney.SaveChanges(); + } + } + + public static void TransferFactionMoneyToUser(Faction sender, User receiver, float amount, string origin) + { + using (var transferMoney = new Model.DatabaseContext()) + { + var transactionLog = new Logs.BankAccountTransactionHistory + { + Sender = sender.Name, + SenderBalance = sender.BankAccount, + MoneySent = amount, + Receiver = receiver.Name, + ReceiverBalance = receiver.GetUserBankAccount().Balance, + NewReceiverBalance = receiver.GetUserBankAccount().Balance += amount, + NewSenderBalance = sender.BankAccount -= amount, + Fee = 0, + Origin = origin + }; + + transferMoney.BankAccountTransactionLogs.Add(transactionLog); + sender.BankAccount -= amount; + receiver.GetUserBankAccount(transferMoney).Balance += amount; + transferMoney.SaveChanges(); + } + } + + public static void TransferFactionMoneyToFaction(Faction sender, Faction receiver, float amount, string origin) + { + using (var transferMoney = new Model.DatabaseContext()) + { + var transactionLog = new Logs.BankAccountTransactionHistory + { + Sender = sender.Name, + SenderBalance = sender.GetFactionBankAccount().Balance, + MoneySent = amount, + Receiver = receiver.Name, + ReceiverBalance = receiver.BankAccount, + NewReceiverBalance = receiver.BankAccount += amount, + NewSenderBalance = sender.BankAccount -= amount, + Fee = 0, + Origin = origin + }; + + transferMoney.BankAccountTransactionLogs.Add(transactionLog); + sender.BankAccount -= amount; + receiver.BankAccount += amount; transferMoney.SaveChanges(); } }