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