using System; using System.Collections.Generic; using System.Linq; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Server.Business; using ReallifeGamemode.Server.Entities; using ReallifeGamemode.Server.Entities.Logs; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Models; using ReallifeGamemode.Server.Util; /** * @overview Life of German Reallife - Managers BankManager (BankManager.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German */ namespace ReallifeGamemode.Server.Managers { public class BankManager { public static TransactionResult SetMoney(Client admin, IBankAccountOwner owner, int amount, string reason = "Von Admin gesetzt") { using (var transferMoney = new DatabaseContext()) { if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; IBankAccount account = owner.GetBankAccount(transferMoney); if (account == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; var transactionLog = new BankAccountTransactionHistory { Sender = "ADMIN: " + admin.Name, SenderBalance = 0, Receiver = owner.Name, ReceiverBalance = amount, NewReceiverBalance = amount, NewSenderBalance = 0, MoneySent = amount, Fee = 0, Origin = reason }; // add log transferMoney.BankAccountTransactionLogs.Add(transactionLog); account.Balance = amount; transferMoney.SaveChanges(); return TransactionResult.SUCCESS; } } public static TransactionResult TransferMoney(IBankAccountOwner sender, IBankAccountOwner receiver, int amount, string origin) { using (var transferMoney = new DatabaseContext()) { if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; IBankAccount senderAccount = sender.GetBankAccount(transferMoney); IBankAccount receiverAccount = receiver.GetBankAccount(transferMoney); if (senderAccount == null) return TransactionResult.SENDER_NO_BANKACCOUNT; if (receiverAccount == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; if (senderAccount.Balance < amount) return TransactionResult.SENDER_NOT_ENOUGH_MONEY; var transactionLog = new BankAccountTransactionHistory { Sender = sender.Name, SenderBalance = senderAccount.Balance, Receiver = receiver.Name, ReceiverBalance = receiverAccount.Balance, NewReceiverBalance = receiverAccount.Balance + amount, NewSenderBalance = senderAccount.Balance - amount, MoneySent = amount, Fee = 0, Origin = origin }; // add log transferMoney.BankAccountTransactionLogs.Add(transactionLog); senderAccount.Balance -= amount; receiverAccount.Balance += amount; transferMoney.SaveChanges(); return TransactionResult.SUCCESS; } } } }