From c92255c0c57f1312342a04ae9641a2c1aa4f4af9 Mon Sep 17 00:00:00 2001 From: VivianDee <115420678+VivianDee@users.noreply.github.com> Date: Wed, 11 Mar 2026 11:06:26 +0100 Subject: [PATCH] [add]: Balance Check --- app/api/routes/routes.py | 16 +++++++ app/api/schemas/verify_account_balance.py | 10 ++++ app/api/services/verify_account_balance.py | 53 ++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 app/api/schemas/verify_account_balance.py create mode 100644 app/api/services/verify_account_balance.py diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 6e2a34a..e39b85a 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -56,6 +56,22 @@ def rac_check(): except Exception as e: logger.exception("Unhandled exception in /RACCheck route") return jsonify({"message": "Unhandled server error"}), 500 + + + +# RACCheck Endpoint +@api.route('/VerifyAccountBalance', methods=['POST']) +@jwt_required() +def verify_account_balance(): + logger.info("VerifyAccountBalance request received") + try: + logger.info("VerifyAccountBalance inside try request received") + data = request.get_json() + response = VerifyAccountBalanceService.process_request(data) + return response + except Exception as e: + logger.exception("Unhandled exception in /VerifyAccountBalance route") + return jsonify({"message": "Unhandled server error"}), 500 # CompleteRACcheck Endpoint @api.route('/CompleteRACcheck', methods=['POST']) diff --git a/app/api/schemas/verify_account_balance.py b/app/api/schemas/verify_account_balance.py new file mode 100644 index 0000000..0f988b9 --- /dev/null +++ b/app/api/schemas/verify_account_balance.py @@ -0,0 +1,10 @@ +from marshmallow import Schema, fields + +from marshmallow import Schema, fields +from datetime import date + + +class VerifyAccountBalanceSchema(Schema): + accountId = fields.Str(required=True) + amount = fields.Str(required=True) + requestId = fields.Str(required=True) diff --git a/app/api/services/verify_account_balance.py b/app/api/services/verify_account_balance.py new file mode 100644 index 0000000..7314e0b --- /dev/null +++ b/app/api/services/verify_account_balance.py @@ -0,0 +1,53 @@ +from app.api.schemas.verify_account_balance import VerifyAccountBalanceSchema +from flask import request, jsonify +from marshmallow import ValidationError +from app.utils.logger import logger +from app.api.helpers.response_helper import ResponseHelper +from datetime import datetime +from decimal import Decimal + +class VerifyAccountBalanceService: + @staticmethod + def process_request(data): + """ + Process the RACCheck request. + + Args: + data (dict): The request data. + + Returns: + tuple: JSON response and status code. + """ + try: + logger.info("Processing RACCheck request") + + # Validate input data + schema = VerifyAccountBalanceSchema() + validated_data = schema.load(data) + + account_id = validated_data["account_id"] + request_id = validated_data["request_id"] + amount = validated_data["amount"] + + + # response_schema = RACCheckResponseSchema() + result = { + "responseCode": "00", + "responseMessage": "Operation Successful", + "isSufficient": True + } + + return jsonify(result), 200 + + except ValidationError as err: + logger.error(f"Validation Error: {err.messages}") + return jsonify({ + "message": "Validation exception", + "errors": err.messages + }), 422 + + except Exception as e: + logger.error(f"An error occurred: {str(e)}", exc_info=True) + return jsonify({ + "message": "Internal Server Error" + }), 500