feat: balance and reward
This commit is contained in:
		@@ -1,3 +1,4 @@
 | 
			
		||||
import datetime
 | 
			
		||||
from enum import StrEnum
 | 
			
		||||
from flask import Blueprint, request, jsonify
 | 
			
		||||
from sqlalchemy import func
 | 
			
		||||
@@ -127,3 +128,22 @@ def get_users():
 | 
			
		||||
             .all())
 | 
			
		||||
    response = [{'id': user.id, 'login': user.login} for user in query]
 | 
			
		||||
    return jsonify(response)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@sipro_blueprint.get('/statistics')
 | 
			
		||||
def get_users_statistics():
 | 
			
		||||
    data: dict = request.args
 | 
			
		||||
    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'))
 | 
			
		||||
             .all())
 | 
			
		||||
    result = [{'date': row.date.isoformat(), 'value': row.value} for row in query]
 | 
			
		||||
    return jsonify(result)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user