from django.utils import timezone
from django.db import transaction
from .models import *

def get_deposit_payments_for_user(user):
    payments = [ payment.amount for payment in Payment.objects.filter(owner=user, type='deposit')]
    return sum(payments)

def get_spendings_for_user(user):
    spendings = [payment.amount for payment in Payment.objects.filter(owner=user, type='withdraw')]
    return sum(spendings)

@transaction.atomic
def get_balance_for_user(user):
    return float(get_deposit_payments_for_user(user) - get_spendings_for_user(user))

@transaction.atomic
def has_enough_balance(user, due_amount):
    balance = get_balance_for_user(user)
    if balance >= due_amount:
        return True
    return False

def get_billing_address_for_user(user):
    return BillingAddress.objects.filter(owner=user, active=True).first()
