diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 7865794..dba64b4 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -14,7 +14,7 @@ from app.api.services import ( CommonDataService, OfficeCustomerService, GenerativesService, OfficeUsersService, OfficeTemplatesService, OfficeCountryService, WebsiteService, - FileUploadService + FileUploadService, ReportService ) from app.api.services.comments import CommentsService from app.models import Country @@ -269,6 +269,16 @@ def get_myproduct_templates(): return response +@api.route("/panel/report/topics", methods=["POST"]) +@jwt_required() +def merms_report_topics(): + data = request.get_json() + response = ReportService.process_report_topic_request(data) + return response + + + + @api.route("/panel/account/products/color-styles", methods=["POST"]) # @token_required def get_myproduct_colorstyles(): diff --git a/app/api/services/__init__.py b/app/api/services/__init__.py index adedff3..db4d1a7 100644 --- a/app/api/services/__init__.py +++ b/app/api/services/__init__.py @@ -12,6 +12,7 @@ from app.api.services.common_data import CommonDataService from app.api.services.genaratives import GenerativesService from app.api.services.comments import CommentsService from app.api.services.file_upload import FileUploadService +from app.api.services.reports import ReportService #WEBSITE diff --git a/app/api/services/reports.py b/app/api/services/reports.py new file mode 100644 index 0000000..2dd42d1 --- /dev/null +++ b/app/api/services/reports.py @@ -0,0 +1,72 @@ +from flask import session, jsonify +# from app.models.loan import Loan +from app.utils.logger import logger +from app.api.services.base_service import BaseService +# from app.api.schemas.eligibility_check import EligibilityCheckSchema +from marshmallow import ValidationError +# from app.api.enums import TransactionType +# from app.api.integrations import SimbrellaIntegration +from app.extensions import db +from app.models import MembersProducts, Products, Members + +# from app.api.services.offer_analysis import OfferAnalysis +from app.api.helpers.response_helper import ResponseHelper +from werkzeug.security import generate_password_hash, check_password_hash +# from app.api.schemas.register import RegisterSchema +from app.api.schemas.products import ProductsSchema +from app.api.schemas.user import UserSchema + +import datetime +import jwt +import random +from app.config import Config + + +class ReportService(BaseService): + + @staticmethod + def process_report_topic_request(data): + try: + with db.session.begin(): + logger.info(f"Incoming ReportService data ==>>>> {data}") + validated_data = ReportService.validate_data(data, UserSchema()) + token = validated_data.get('token') + uid = validated_data.get('uid') + member_data = Members.get_member_by_uid(uid) + member_id = member_data.id + + topics_data = ReportService.configured_report_types() + response_data = { + "last_update": datetime.datetime.utcnow(), + "member_id": member_id, + "topics": topics_data, + } + + return ResponseHelper.success(data=response_data) + + except ValidationError as err: + + logger.error(f"Validation Error: {getattr(err, 'messages', str(err))}") + db.session.rollback() + return ResponseHelper.unprocessable_entity(result_description="Validation exception") + + except ValueError as err: + logger.error(f"{getattr(err, 'messages', str(err))}") + db.session.rollback() + return ResponseHelper.error(result_description=str(err)) + + except Exception as e: + logger.error(f"An error occurred: {str(e)}", exc_info=True) + db.session.rollback() + return ResponseHelper.internal_server_error() + + @staticmethod + def configured_report_types(): + data = { + "topics":[ + {"name": 'Payments', "url": 'payment', "active": True, "list_order": 0}, + {"name": 'Product', "url": 'product', "active": True, "list_order": 1}, + ] + + } + return data