42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from database import creer_connexion, serialiser_valeur
|
|
from models.transaction import TransactionDAO
|
|
|
|
class StatsService:
|
|
def __init__(self):
|
|
self.transaction_dao = TransactionDAO()
|
|
|
|
def obtenir_statistiques(self, id_utilisateur_courant):
|
|
conn = creer_connexion()
|
|
try:
|
|
curseur = conn.cursor()
|
|
|
|
curseur.execute(
|
|
"""
|
|
SELECT COALESCE(SUM(balance), 0) AS total_balance,
|
|
COUNT(*) AS total_accounts
|
|
FROM accounts
|
|
WHERE user_id = %s AND status = 'active'
|
|
""",
|
|
(id_utilisateur_courant,)
|
|
)
|
|
stats_comptes = curseur.fetchone()
|
|
|
|
stats_tx = self.transaction_dao.statistiques(conn, id_utilisateur_courant)
|
|
|
|
curseur.execute(
|
|
'SELECT COUNT(*) AS total_beneficiaries FROM beneficiaries WHERE user_id = %s',
|
|
(id_utilisateur_courant,)
|
|
)
|
|
stats_ben = curseur.fetchone()
|
|
|
|
return {
|
|
'total_balance': serialiser_valeur(stats_comptes['total_balance']),
|
|
'total_accounts': stats_comptes['total_accounts'],
|
|
'monthly_transactions': stats_tx['transactions_mois'],
|
|
'total_sent': serialiser_valeur(stats_tx['total_envoye']),
|
|
'total_received': serialiser_valeur(stats_tx['total_recu']),
|
|
'total_beneficiaries': stats_ben['total_beneficiaries']
|
|
}
|
|
finally:
|
|
conn.close()
|