Files
reallife-gamemode/Server/Managers/BankManager.cs

60 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GTANetworkAPI;
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);
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 Logs.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;
}
}
}
}