357 lines
10 KiB
Python
357 lines
10 KiB
Python
from flask import Blueprint, request, jsonify, send_from_directory
|
|
from app.api.services import (
|
|
LoginService,
|
|
RegisterService,
|
|
AccountService,
|
|
ProductsService,
|
|
AuthorizationService,
|
|
MyProductsService,
|
|
ContactService,
|
|
OfficeAuthService,
|
|
OfficeDashboardService, WebContentsService
|
|
)
|
|
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/<path:filename>")
|
|
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/auth/resetverify", methods=["POST"])
|
|
# @jwt_required()
|
|
def merms_resetverify():
|
|
data = request.get_json()
|
|
response = LoginService.verify_reset(data)
|
|
return response
|
|
|
|
@api.route("/panel/auth/resetcomplete", methods=["POST"])
|
|
# @jwt_required()
|
|
def merms_resetcomplete():
|
|
data = request.get_json()
|
|
response = LoginService.complete_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/account/products/refresh", methods=["POST"])
|
|
def myproduct_refresh():
|
|
data = request.get_json()
|
|
logger.info(f"Route Product URL Data ==>>>> {data}")
|
|
response = ProductsService.myproduct_refresh_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: {data}")
|
|
response = AccountService.process_action_request(data)
|
|
#response = ProductsService.process_request(data)
|
|
return {"status": "ok"}, 200
|
|
|
|
#======================================================
|
|
@api.route('/office/login', methods=['POST'])
|
|
def login():
|
|
data = request.get_json()
|
|
|
|
# Check if username and password are provided
|
|
if not data or 'username' not in data or 'password' not in data:
|
|
return jsonify({
|
|
'error': 'Missing credentials',
|
|
'message': 'Username and password are required'
|
|
}), 400
|
|
|
|
username = data.get('username', '')
|
|
password = data.get('password', '')
|
|
|
|
# Call the login method from AuthService
|
|
result = OfficeAuthService.login(username, password)
|
|
|
|
# Check if result is a tuple (error response)
|
|
if isinstance(result, tuple):
|
|
return jsonify(result[0]), result[1]
|
|
|
|
return jsonify(result)
|
|
|
|
@api.route('/office/dashboard', methods=['GET'])
|
|
# @token_required
|
|
def get_dashboard():
|
|
# Call the dashboard service
|
|
result = OfficeDashboardService.get_dashboard_data()
|
|
return jsonify(result)
|
|
|
|
@api.route('/office/transaction', methods=['GET'])
|
|
# @token_required
|
|
def get_subscription_office():
|
|
# Call the dashboard service
|
|
result = OfficeDashboardService.get_subscriptions_data()
|
|
return jsonify(result)
|
|
|
|
|
|
#=====================================================
|
|
@api.route('/web/contents', methods=['GET'])
|
|
# @token_required
|
|
def get_web_contents():
|
|
# Call the dashboard service
|
|
result = WebContentsService.get_web_contents_data()
|
|
return jsonify(result)
|
|
|
|
#===================================================
|
|
# # 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
|