add web
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
from app.extensions import db
|
||||
from app.models.user_transactions import UserTransaction
|
||||
from app.models.user import User
|
||||
from app.models.groups import Group
|
||||
from app.models.asset import Asset
|
||||
from app.enums.TransactionType import TransactionType
|
||||
import math
|
||||
|
||||
def CreateTransaction(
|
||||
Reciever : User | Group = None,
|
||||
Sender : User | Group = None,
|
||||
CurrencyAmount : int = 0,
|
||||
CurrencyType : int = 0, # 0 = Robux, 1 = Tix
|
||||
TransactionType : TransactionType = TransactionType.Purchase,
|
||||
AssetId : int = None,
|
||||
CustomText : str = None
|
||||
|
||||
) -> UserTransaction | None:
|
||||
"""
|
||||
Creates a transaction between two users or group.
|
||||
|
||||
Reciever: Defaults to UserId 1 (Roblox),
|
||||
Sender: Defaults to UserId 1 (Roblox)
|
||||
|
||||
Note: If Reciever and Sender are both None an exception will be raised.
|
||||
"""
|
||||
|
||||
if Reciever is None and Sender is None:
|
||||
raise Exception("Reciever and Sender cannot both be None.")
|
||||
|
||||
if Reciever is None:
|
||||
Reciever = User.query.filter_by(id=1).first()
|
||||
if Sender is None:
|
||||
Sender = User.query.filter_by(id=1).first()
|
||||
|
||||
NewTransaction : UserTransaction = UserTransaction(
|
||||
reciever_id = Reciever.id,
|
||||
reciever_type = 0 if isinstance(Reciever, User) else 1,
|
||||
sender_id = Sender.id,
|
||||
sender_type = 0 if isinstance(Sender, User) else 1,
|
||||
|
||||
currency_amount = CurrencyAmount,
|
||||
currency_type = CurrencyType,
|
||||
transaction_type = TransactionType,
|
||||
custom_text = CustomText,
|
||||
|
||||
asset_id = AssetId
|
||||
)
|
||||
db.session.add(NewTransaction)
|
||||
db.session.commit()
|
||||
|
||||
return NewTransaction
|
||||
|
||||
def CreateTransactionForSale(
|
||||
AssetObj : Asset,
|
||||
PurchasePrice : int,
|
||||
PurchaseCurrencyType : int, # 0 = Robux, 1 = Tix,
|
||||
Seller : User | Group,
|
||||
Buyer : User | Group,
|
||||
ApplyTaxAutomatically : bool = True
|
||||
) -> tuple[UserTransaction, UserTransaction] | None:
|
||||
"""
|
||||
Creates a transaction for a sale.
|
||||
"""
|
||||
|
||||
if ApplyTaxAutomatically:
|
||||
PurchaseProfit : int = math.floor(PurchasePrice * 0.7) # 70% of the purchase price goes to the seller
|
||||
else:
|
||||
PurchaseProfit : int = PurchasePrice
|
||||
|
||||
SellerTransaction : UserTransaction = CreateTransaction(
|
||||
Reciever = Seller,
|
||||
Sender = Buyer,
|
||||
CurrencyAmount = PurchaseProfit,
|
||||
CurrencyType = PurchaseCurrencyType,
|
||||
TransactionType = TransactionType.Sale,
|
||||
AssetId = AssetObj.id
|
||||
)
|
||||
BuyerTransaction : UserTransaction = CreateTransaction(
|
||||
Reciever = Seller,
|
||||
Sender = Buyer,
|
||||
CurrencyAmount = PurchasePrice,
|
||||
CurrencyType = PurchaseCurrencyType,
|
||||
TransactionType = TransactionType.Purchase,
|
||||
AssetId = AssetObj.id
|
||||
)
|
||||
return (SellerTransaction, BuyerTransaction)
|
||||
Reference in New Issue
Block a user