from flask import Blueprint, request, jsonify, send_from_directory from app.api.services import ( LoginService, RegisterService, AccountService, ProductsService, EligibilityCheckService, SelectOfferService, ProvideLoanService, LoanStatusService, RepaymentService, CustomerConsentService, NotificationCallbackService, AuthorizationService, MyProductsService, ContactService, ) from app.utils.logger import logger from app.api.middlewares import enforce_json, require_auth import os from flask_jwt_extended import ( JWTManager, jwt_required, create_access_token, get_jwt_identity, create_refresh_token, ) api = Blueprint("api", __name__) @api.before_request def cors_middleware(): """Middleware applied globally to all API routes in this blueprint""" return enforce_json() # Swagger JSON file @api.route("/swagger.json", methods=["GET"]) def swagger_json(): swagger_dir = os.path.join("swagger") return send_from_directory(swagger_dir, "merms_swagger.json") @api.route("/swagger/") def serve_paths(filename): swagger_dir = os.path.join("swagger") return send_from_directory(swagger_dir, filename) @api.route("/panel/auth/reset", methods=["POST"]) @jwt_required() def merms_reset(): data = request.get_json() response = LoginService.process_reset(data) return response @api.route("/panel/Login", methods=["POST"]) @jwt_required() def merms_login(): data = request.get_json() response = LoginService.process_request(data) return response @api.route("/panel/Register", methods=["POST"]) @jwt_required() def merms_register(): data = request.get_json() response = RegisterService.process_request(data) return response #/panel/Register/verify @api.route("/panel/Register/verify", methods=["POST"]) @jwt_required() def merms_register_verify(): data = request.get_json() response = RegisterService.process_verify(data) return response @api.route("/panel/Register/complete", methods=["POST"]) @jwt_required() def merms_register_complete(): data = request.get_json() response = RegisterService.process_complete(data) return response @api.route("/panel/account", methods=["POST"]) @jwt_required() def merms_account(): data = request.get_json() response = AccountService.process_request(data) return response @api.route("/panel/account-bar", methods=["POST"]) @jwt_required() def merms_account_bar(): data = request.get_json() response = AccountService.process_bar_request(data) return response @api.route("/panel/account/bar", methods=["POST"]) @jwt_required() def merms_account_bar2(): data = request.get_json() response = AccountService.process_bar_request(data) return response @api.route("/panel/account/actions", methods=["POST"]) @jwt_required() def merms_account_actions(): data = request.get_json() response = AccountService.process_action_request(data) return response @api.route("/panel/account/productsurl", methods=["POST"]) @jwt_required() def merms_account_product_url(): data = request.get_json() response = ProductsService.product_url_request(data) return response @api.route("/panel/account/products/url", methods=["POST"]) def myproduct_url(): data = request.get_json() logger.info(f"Route Product URL Data ==>>>> {data}") response = ProductsService.product_url_request(data) return response # @api.route("/panel/contacts", methods=["POST"]) def merms_contacts(): data = request.get_json() logger.info(f"Route ContactService URL Data ==>>>> {data}") response = ContactService.process_request(data) return response @api.route("/panel/account/products", methods=["POST"]) @jwt_required() def merms_products(): data = request.get_json() response = ProductsService.process_request(data) return response @api.route("/panel/myproduct/dash", methods=["POST"]) def myproduct_dash(): data = request.get_json() logger.info(f"Route MyProduct Data ==>>>> {data}") response = MyProductsService.process_request(data) return response # /panel/myproduct/subscription @api.route("/panel/myproduct/subscription", methods=["POST"]) def myproduct_subscription(): data = request.get_json() logger.info(f"Route MyProduct Data ==>>>> {data}") response = MyProductsService.process_subscription(data) return response #/panel/myproduct/provision @api.route("/panel/myproduct/provision", methods=["POST"]) def myproduct_provision(): data = request.get_json() logger.info(f"Route MyProduct Data ==>>>> {data}") response = MyProductsService.process_provision(data) return response @api.route("/panel/myproduct/provision-actions", methods=["POST"]) def myproduct_provision_actions(): data = request.get_json() logger.info(f"Route MyProduct Provision Actions ==>>>> {data}") response = MyProductsService.process_provision_actions(data) return response # /panel/account/calendar @api.route("/panel/account/calendar", methods=["POST"]) def mycalendar_dash(): data = request.get_json() logger.info(f"Route Calendar Data ==>>>> {data}") response = AccountService.process_calendar(data) return response # Health Check Endpoint @api.route("/test", methods=["GET"]) def test_check(): data = {"uid": "ok", "token":"jjjfjfjfjfjjf"} logger.info(f"Member Actions Error: {action_data}") response = AccountService.process_action_request(data) #response = ProductsService.process_request(data) return {"status": "ok"}, 200 # # EligibilityCheck Endpoint # @api.route("/EligibilityCheck", methods=["POST"]) # @jwt_required() # def eligibility_check(): # data = request.get_json() # # logger.info(f"EligibilityCheck request received: {data}") # response = EligibilityCheckService.process_request(data) # return response # # # SelectOffer Endpoint # @api.route("/SelectOffer", methods=["POST"]) # @jwt_required() # def select_offer(): # data = request.get_json() # # logger.info(f"SelectOffer request received: {data}") # response = SelectOfferService.process_request(data) # return response # # # # ProvideLoan Endpoint # @api.route("/ProvideLoan", methods=["POST"]) # @jwt_required() # def provide_loan(): # data = request.get_json() # # logger.info(f"ProvideLoan request received: {data}") # response = ProvideLoanService.process_request(data) # return response # # # # LoanStatus Endpoint # @api.route("/LoanStatus", methods=["POST"]) # @jwt_required() # def loan_status(): # data = request.get_json() # # logger.info(f"LoanStatus request received: {data}") # response = LoanStatusService.process_request(data) # return response # # # # Repayment Endpoint # @api.route("/Repayment", methods=["POST"]) # @jwt_required() # def repayment(): # data = request.get_json() # logger.error(f"HERE 0000a **** ") # # logger.info(f"Repayment request received: {data}") # response = RepaymentService.process_request(data) # return response # # # # CustomerConsent Endpoint # @api.route("/CustomerConsent", methods=["POST"]) # @jwt_required() # def customer_consent(): # data = request.get_json() # # logger.info(f"CustomerConsent request received: {data}") # response = CustomerConsentService.process_request(data) # return response # # # # NotificationCallback Endpoint # @api.route("/NotificationCallback", methods=["POST"]) # @jwt_required() # def notification_callback(): # data = request.get_json() # # logger.info(f"NotificationCallback request received: {data}") # response = NotificationCallbackService.process_request(data) # return response # Health Check Endpoint @api.route("/health", methods=["GET"]) def health_check(): return {"status": "ok"}, 200 # Authorize endpoint @api.route("/Authorize", methods=["POST"]) def authorize(): data = request.get_json() # logger.info(f"Authorize request received: {data}") response = AuthorizationService.process_request(data) return response # Authorize refresh endpoint @api.route("/AuthorizeRefresh", methods=["POST"]) @jwt_required(refresh=True) def refresh(): data = request.get_json() # logger.info(f"Authorize refresh request received: {data}") response = AuthorizationService.process_refresh_request() return response