From 9ea5b872fc8b1e7ca984e310f1b9873ea2c632fb Mon Sep 17 00:00:00 2001 From: ameye Date: Sat, 2 May 2026 14:15:12 -0400 Subject: [PATCH] Config for URLS prod --- app/api/routes/routes.py | 2 +- app/api/services/office_dashboard.py | 56 +++++++++++++++++++++++++++- app/api/services/register.py | 5 ++- app/models/signup.py | 26 +++++++++++++ 4 files changed, 85 insertions(+), 4 deletions(-) diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 98ac83f..6c23311 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -748,7 +748,7 @@ def get_recent_signup_office(): def get_recent_account_office(): # Call the dashboard service filters = {} - result = OfficeDashboardService.get_recent_signup_data(filters) + result = OfficeDashboardService.get_recent_account_data(filters) return jsonify(result) diff --git a/app/api/services/office_dashboard.py b/app/api/services/office_dashboard.py index 613aa73..c54b813 100644 --- a/app/api/services/office_dashboard.py +++ b/app/api/services/office_dashboard.py @@ -7,7 +7,7 @@ from app.utils.logger import logger from app.api.services.base_service import BaseService from sqlalchemy import func, desc from app.models import MembersProducts, Products, Payments, Members, CustomTemplates, ProductsTemplates, MembersProfile, \ - ProductsDetails, MembersWebfiles + ProductsDetails, MembersWebfiles, Signup class OfficeDashboardService(BaseService): @@ -622,7 +622,7 @@ class OfficeDashboardService(BaseService): return jsonify({"message": "Internal Server Error"}), 500 @staticmethod - def get_recent_signup_data(filters): + def get_recent_account_data(filters): try: if filters is None: filters = {} @@ -671,3 +671,55 @@ 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_recent_signup_data(filters): + try: + if filters is None: + filters = {} + + # Extract pagination parameters + page = int(filters.get('page', 1)) + limit = int(filters.get('limit', 20)) + email = filters.get('email') + firstname = filters.get('firstname') + lastname = filters.get('lastname') + + # Ensure page and limit are valid + if page < 1: + page = 1 + if limit < 1 or limit > 100: + limit = 20 + + membersList, total_count = Signup.get_all_start_signup(email, firstname, lastname, page, limit) + # Convert loans to dictionary format + member_data = [] + for member in membersList: + member_data.append({ + 'id': member.id, + 'email': member.email, + 'firstname': member.firstname, + 'lastname': member.lastname, + 'member_uid': member.uid, + 'status': member.status, + "added": member.added, + }) + + response_data = { + 'members': member_data, + 'count': 30, + 'pagination': { + 'total_count': total_count, + 'total_pages': 1, + 'current_page': page, + 'limit': limit, + 'has_next': page < 1, + 'has_prev': page > 1 + } + } + + 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 diff --git a/app/api/services/register.py b/app/api/services/register.py index b655b64..840348e 100644 --- a/app/api/services/register.py +++ b/app/api/services/register.py @@ -3,7 +3,7 @@ from app.utils.logger import logger from app.api.services.base_service import BaseService from marshmallow import ValidationError from app.extensions import db -from app.models import MembersPending, Members, Country +from app.models import MembersPending, Members, Country, Signup from app.api.helpers.response_helper import ResponseHelper from werkzeug.security import generate_password_hash, check_password_hash @@ -178,6 +178,9 @@ class RegisterService(BaseService): lastname = validated_data.get('lastname') email = str(validated_data.get('email')).lower() + # Keep a record on signup table + Signup.add_signup(firstname, lastname, email) + if RegisterService.ALLOWED_SIGNUP_EMAIL_RESUSE== '0': logger.info(f"RegisterService.ALLOWED_SIGNUP_EMAIL_RESUSE=0") if Members.get_member_by_email(email) != None: diff --git a/app/models/signup.py b/app/models/signup.py index 13c10d7..4593647 100644 --- a/app/models/signup.py +++ b/app/models/signup.py @@ -59,3 +59,29 @@ class Signup(db.Model): return signup_data + @classmethod + def get_all_start_signup(cls, email=None, firstname=None, lastname=None, page=1, limit=20): + + query = cls.query + logger.info(f"Get all customer back") + + if firstname: + query = query.filter(cls.firstname == firstname) + + if lastname: + query = query.filter(cls.lastname == lastname) + + if email: + query = query.filter(cls.email == email) + + # Order by created_at descending (newest first) + query = query.order_by(cls.added.desc()) + + # Get total count before pagination + total_count = query.count() + + # Apply pagination + offset = (page - 1) * limit + query = query.limit(limit).offset(offset) + + return query.all(), total_count