dash data
This commit is contained in:
@@ -501,7 +501,7 @@ def get_recent_signup_office():
|
|||||||
def get_office_sidebar():
|
def get_office_sidebar():
|
||||||
# Call the dashboard service
|
# Call the dashboard service
|
||||||
filters = {}
|
filters = {}
|
||||||
result = OfficeDashboardService.get_payments_data(filters)
|
result = OfficeDashboardService.get_office_sidebar(filters)
|
||||||
return jsonify(result)
|
return jsonify(result)
|
||||||
|
|
||||||
@api.route('/office/users', methods=['GET'])
|
@api.route('/office/users', methods=['GET'])
|
||||||
|
|||||||
@@ -419,3 +419,85 @@ class OfficeDashboardService(BaseService):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
|
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
|
||||||
return jsonify({"message": "Internal Server Error"}), 500
|
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
|
||||||
@@ -181,3 +181,15 @@ class Members(db.Model):
|
|||||||
query = query.limit(limit).offset(offset)
|
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