dash data
This commit is contained in:
@@ -501,7 +501,7 @@ def get_recent_signup_office():
|
||||
def get_office_sidebar():
|
||||
# Call the dashboard service
|
||||
filters = {}
|
||||
result = OfficeDashboardService.get_payments_data(filters)
|
||||
result = OfficeDashboardService.get_office_sidebar(filters)
|
||||
return jsonify(result)
|
||||
|
||||
@api.route('/office/users', methods=['GET'])
|
||||
|
||||
@@ -419,3 +419,85 @@ class OfficeDashboardService(BaseService):
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
|
||||
return jsonify({"message": "Internal Server Error"}), 500
|
||||
|
||||
|
||||
@staticmethod
|
||||
def get_office_sidebar(filters):
|
||||
try:
|
||||
if filters is None:
|
||||
filters = {}
|
||||
|
||||
# Extract filters
|
||||
option_name = filters.get('option_name')
|
||||
# member_id = filters.get('member_id')
|
||||
|
||||
# Extract pagination parameters
|
||||
page = int(filters.get('page', 1))
|
||||
limit = int(filters.get('limit', 20))
|
||||
|
||||
# Ensure page and limit are valid
|
||||
if page < 1:
|
||||
page = 1
|
||||
if limit < 1 or limit > 100:
|
||||
limit = 20
|
||||
|
||||
membersPayList, total_count = Payments.get_all_payments(option_name, None, page, limit)
|
||||
# Convert loans to dictionary format
|
||||
member_sub_data = []
|
||||
for subs in membersPayList:
|
||||
member_sub_data.append({
|
||||
'id': subs.id,
|
||||
'member_id': subs.member_id,
|
||||
'option_name': subs.option_name,
|
||||
'option_type': subs.option_type,
|
||||
'payment_uid': subs.payment_uid,
|
||||
'amount': subs.amount * 0.01,
|
||||
'status': subs.status,
|
||||
'sub_start': subs.sub_start,
|
||||
'sub_stop': subs.sub_stop,
|
||||
"added": subs.added,
|
||||
})
|
||||
|
||||
recentLogin = Members.get_recent_member_login(10)
|
||||
if recentLogin:
|
||||
recent_login_data = []
|
||||
for subs in recentLogin:
|
||||
recent_login_data.append({
|
||||
'id': subs.id,
|
||||
'firstname' : subs.firstname,
|
||||
'lastname' : subs.lastname,
|
||||
'username' : subs.username,
|
||||
"added": subs.added,
|
||||
})
|
||||
|
||||
|
||||
|
||||
# Calculate total pages
|
||||
total_pages = (total_count + limit - 1) // limit
|
||||
|
||||
recent_payment_summary = {
|
||||
"approved": 0,
|
||||
"verified": 0,
|
||||
"failed": 0,
|
||||
"total": 0
|
||||
}
|
||||
|
||||
recent_deployment_summary = {
|
||||
"pending": 0,
|
||||
"started": 0,
|
||||
"stuck": 0,
|
||||
"completed": 0
|
||||
}
|
||||
|
||||
response_data = {
|
||||
'recent_payment_summary': recent_payment_summary,
|
||||
'recent_deployment_summary': recent_deployment_summary,
|
||||
'recent_login': recent_login_data,
|
||||
'recent_deployment_error': [],
|
||||
}
|
||||
|
||||
return response_data
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
|
||||
return jsonify({"message": "Internal Server Error"}), 500
|
||||
+13
-1
@@ -180,4 +180,16 @@ class Members(db.Model):
|
||||
offset = (page - 1) * limit
|
||||
query = query.limit(limit).offset(offset)
|
||||
|
||||
return query.all(), total_count
|
||||
return query.all(), total_count
|
||||
|
||||
@classmethod
|
||||
def get_recent_member_login(cls, limit=10):
|
||||
|
||||
query = cls.query
|
||||
logger.info(f"Get Recent Member Login")
|
||||
|
||||
# Order by created_at descending (newest first)
|
||||
query = query.order_by(cls.added.desc())
|
||||
query = query.limit(limit).offset(0)
|
||||
|
||||
return query.all()
|
||||
Reference in New Issue
Block a user