diff --git a/routes/sipro.py b/routes/sipro.py index d5b4517..806dd43 100644 --- a/routes/sipro.py +++ b/routes/sipro.py @@ -1,7 +1,7 @@ import datetime from enum import StrEnum from flask import Blueprint, request, jsonify -from sqlalchemy import func +from sqlalchemy import func, cast, String, Numeric, Float import auxiliary import database @@ -136,14 +136,17 @@ def get_users_statistics(): user_id = int(data['userId']) date_from = datetime.datetime.fromisoformat(data['dateFrom']) date_to = datetime.datetime.fromisoformat(data['dateTo']) + datetime.timedelta(hours=24, minutes=59, seconds=59) - query = (database.BalanceTransaction.query .filter(database.BalanceTransaction.user_id == user_id, database.BalanceTransaction.created_at.between(date_from, date_to)) .order_by(func.date_trunc('day', database.BalanceTransaction.created_at)) .group_by(func.date_trunc('day', database.BalanceTransaction.created_at)) .with_entities(func.date_trunc('day', database.BalanceTransaction.created_at).label('date'), - func.sum(database.BalanceTransaction.amount).label('value')) + func.cast(func.round(func.cast(func.sum(database.BalanceTransaction.amount), Numeric), 2), + Float).label( + 'value'), + func.string_agg(cast(database.BalanceTransaction.json_data['order_id'], String), ',').label( + 'order_ids')) .all()) - result = [{'date': row.date.isoformat(), 'value': row.value} for row in query] + result = [{'date': row.date.isoformat(), 'value': row.value, 'order_ids': row.order_ids} for row in query] return jsonify(result)