diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 9bc8ca6..979df80 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -281,7 +281,7 @@ def merms_report_topics(): @jwt_required() def merms_report_topics_payment(): data = request.get_json() - response = ReportService.process_report_topic_request(data) + response = ReportService.process_report_topic_item("PAYMENT", data) return response @@ -289,7 +289,7 @@ def merms_report_topics_payment(): @jwt_required() def merms_report_topics_system(): data = request.get_json() - response = ReportService.process_report_topic_request(data) + response = ReportService.process_report_topic_item("SYSTEM",data) return response @@ -297,7 +297,7 @@ def merms_report_topics_system(): @jwt_required() def merms_report_topics_product(): data = request.get_json() - response = ReportService.process_report_topic_request(data) + response = ReportService.process_report_topic_item("PRODUCT",data) return response diff --git a/app/api/schemas/report.py b/app/api/schemas/report.py new file mode 100644 index 0000000..00a5344 --- /dev/null +++ b/app/api/schemas/report.py @@ -0,0 +1,6 @@ +from marshmallow import Schema, fields + +class ReportSchema(Schema): + token = fields.Str(required=True) + uid = fields.Str(required=True) + page = fields.Str(required=True) diff --git a/app/api/services/reports.py b/app/api/services/reports.py index 9024d44..36daba8 100644 --- a/app/api/services/reports.py +++ b/app/api/services/reports.py @@ -1,4 +1,6 @@ from flask import session, jsonify + +from app.api.schemas.report import ReportSchema # from app.models.loan import Loan from app.utils.logger import logger from app.api.services.base_service import BaseService @@ -71,3 +73,59 @@ class ReportService(BaseService): } return data + + @staticmethod + def process_report_topic_item(report_type, data): + try: + with db.session.begin(): + logger.info(f"Incoming ReportService Item Data ==>>>> {data}") + validated_data = ReportService.validate_data(data, ReportSchema()) + token = validated_data.get('token') + uid = validated_data.get('uid') + page = validated_data.get('page') + + + member_data = Members.get_member_by_uid(uid) + member_id = member_data.id + response_data =[] + + if report_type == "Payment": + response_data = { + "last_update": datetime.datetime.utcnow(), + "member_id": member_id, + "payment": [], + } + + if report_type == "Product": + response_data = { + "last_update": datetime.datetime.utcnow(), + "member_id": member_id, + "product": [], + } + + if report_type == "System": + response_data = { + "last_update": datetime.datetime.utcnow(), + "member_id": member_id, + "system": [], + } + + 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() + +