from appservices.common.util import *
from appservices.common.payment_gateways.idfc_payment_gateways import *

api_master = Blueprint("api_master",__name__)

###################Transaction API################
# Add Transaction API
@api_master.route("/add_transaction_api",methods=["POST","GET"])
def add_transaction_api():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        adminId = session.get("adminId")
        loginBrowser = request.headers.get("Sec-Ch-Ua")
        if loginBrowser:
            loginBrowseData = loginBrowser.split(";")
            browser = loginBrowseData[0]
        else:
            loginBrowseData = request.headers.get("User-Agent").split(";")
            browser = loginBrowseData[0]

        client_ip=0
        # Extracting client IP address
        if request.headers.getlist("X-Forwarded-For"): 
            client_ip = request.headers.getlist("X-Forwarded-For")[0]
        else:
            client_ip = request.remote_addr

        actionDate=datetime.datetime.now()
        permissionsList = check_permissions(adminId,"apiGatewaysPermissions")
        if "add" in permissionsList:
            if request.method == "POST":
                action = request.form.get("action", "HI").strip()
                data = request.form.to_dict()
                # Step 1: Handle OTP Generation
                if action == "generate":
                    mail_type = data.get("mailType", "").strip()
                    print(mail_type,"((((((((((((((((mail_type))))))))))))))))")
                    if not mail_type:
                        return jsonify({"responseStatus": 0, "result": "mailType is required!"}), 400


                    return jsonify(generate_otp_helper(mail_type))

                # tep 2: Handle OTP Verification
                elif action == "verify":
                    otp_check_id = request.form.get("otpCheckId","SAI")
                    otp_code = request.form.get("otpCode","K")

                    print(otp_check_id,"((((((((OTP CHECK ID????????????))))))))")
                    print(otp_code,"((((((((OTP CODE????????????))))))))")

                    if not otp_check_id or not otp_code:
                        return jsonify({"responseStatus": 0, "result": "Required fields are missing!"})

                    return jsonify(verify_otp_helper(otp_check_id, otp_code))

                elif action == "update":
                    otp_check_id = request.form.get("otpCheckId", "")
                    otp_record = OtpChecks.objects(id=otp_check_id, status=1).first()
                    admin_id = request.form.get("adminId", "")
                   
                    otpcheck_queryset = OtpChecks.objects(adminId=str(admin_id), id=str(otp_check_id), status=1).first()

                    if not otpcheck_queryset:
                        return jsonify({"responseStatus": 0, "result": "Invalid Request."})
                    # Update OTP status to 2 after verification
                    otpcheck_queryset.update(status=2)
                    return jsonify({"responseStatus": 1, "result": "OTP status successfully updated!"})

                apiName = request.form.get("apiName","")
                perdayTransactionLimit = request.form.get("perdayTransactionLimit")
                code = request.form.get("code","")
                subCode = request.form.get("subCode","")
                isActive = request.form.get("isActive")
                isUserWise = request.form.get("isUserWise")
                isSeamless = request.form.get("isSeamless")
                priceType = request.form.get("priceType","")
                virtualCode = request.form.get("virtualCode")
                lastSixDigits = request.form.get("lastSixDigits")
                autoSettlement = request.form.get("autoSettlement")
                cardBinEnable = request.form.get("cardBinEnable")
                ifscCode = request.form.get("ifscCode")
                transactionType = request.form.get("transactionType","") # "Service" or "PaymentGateway" or "Payout"
                inputKeyField = request.form.getlist("inputKeyField[]")
                inputValueField = request.form.getlist("inputValueField[]")

                jsonData = request.form.to_dict(flat=True)
                requestData = [jsonData]
                updatedrequestData = [jsonData]

                if not perdayTransactionLimit:
                    perdayTransactionLimit=0

                print("perdaaaaaaaaaaaaaaaa",perdayTransactionLimit, type(perdayTransactionLimit))

                print(type(cardBinEnable),"((((((cardBinEnable))))))")
                print(type(autoSettlement),"((((((autoSettlement))))))")

                if len(inputKeyField) == len(inputValueField):
                    # Create a list of dictionaries
                    paramsList = [{'key': key, 'value': value} for key, value in zip(inputKeyField, inputValueField)]
                else:
                    flash("Please give selected params values")
                    return redirect(url_for("api_master.api_masters_list"))

                if apiName:
                    try:
                        admin_queryset = SuperAdmin.objects(id=adminId,status=1).first()
                        if admin_queryset:
                            message=admin_queryset.userName+" "+apiName+" Transaction API created successfully!"
                            save_admin_log_table = save_admin_logs_data(adminId,None,None,"add_transaction_api","create",actionDate,client_ip,browser,message,requestData,updatedrequestData)
                        if cardBinEnable == "True":
                            cardBinEnable = True
                            # Update all other records to set cardBinEnable to False
                            TransactionAPI.objects.update(cardBinEnable=False)
                        else:
                            cardBinEnable = False

                        if autoSettlement == "True":
                            autoSettlement = True
                        else:
                            autoSettlement = False
                        transaction_table = TransactionAPI(
                            adminId=adminId,
                            apiName = apiName,
                            perdayTransactionLimit = perdayTransactionLimit,
                            code = code,
                            subCode = subCode,
                            virtualCode = virtualCode,
                            lastSixDigits = lastSixDigits,
                            cardBinEnable=cardBinEnable,
                            autoSettlement=autoSettlement,
                            ifscCode = ifscCode,
                            transactionType = transactionType,
                            paramsList = paramsList,
                            isSeamless=isSeamless,
                            priceType=priceType,
                            createdOn = datetime.datetime.now(),
                            status = 1,
                            )
                        save_table = transaction_table.save()
                        transactionApiId = str(save_table.id)

                        if isActive == None:
                            save_table.update(isActive=False)
                        else:
                            save_table.update(isActive=True)

                        if isUserWise == None:
                            save_table.update(isUserWise=False)
                        else:
                            save_table.update(isUserWise=True)

                        flash("Transaction API saved successfully!")
                        return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
                    except Exception as e:
                        flash("Unable to save transaction api!!")
                        app.logger.error(traceback.format_exc())
                        return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
                else:
                    flash("Required fields are missing!!")
                    return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
        else:
            flash("Staff member does not have given create api permissions!!")
            return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to save transaction api!!"
        return render_template("super_admin_templates/api_master_list.html",error=error)

# View All Transaction API's
@api_master.route("/api_masters_list",methods=["POST","GET"])
def api_masters_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    adminId = session.get("adminId")
    permissionsList = check_permissions(adminId,"apiGatewaysPermissions")
    if "view" in permissionsList:    
        transactionAPIList =[]
        try:
            redirectTo = request.args.get('redirectTo','')
            if redirectTo:
                redirectval = redirectTo
            else:
                redirectval = "Transaction"

            search = False  
            search_element = request.args.get('search_element','')
            if not search_element:
                search_element = request.form.get("search_element","")
            if search_element:
                search = True

            # page = request.args.get(get_page_parameter(), type=int, default=1)
            # page_start,page_end=fetch_limit_length_based_on_page_index(page,10)
            # pagination = Pagination(
            #     page=page,
            #     record_name='api_master',
            #     per_page=10,
            #     alignment="right"
            #     )

             ######### categories list ############

            transaction_apis_queryset = TransactionAPI.objects(status__in=[0,1]).order_by("-id").all()
            if search_element:
                transaction_apis_queryset = transaction_apis_queryset.filter(Q(apiName__icontains=search_element))
            #length = transaction_apis_queryset.count()
            #transaction_apis_queryset=transaction_apis_queryset[page_start:page_end]

            for each_transaction_api in transaction_apis_queryset:
                transaction_api_dict = fetching_transaction_api_details(each_transaction_api)
                print("((((((1111111))))))",transaction_api_dict)
                transactionAPIList.append(transaction_api_dict)



            # pagination = Pagination(
            #     page=page,
            #     total=length,
            #     found=length,
            #     record_name='API MASTER',
            #     per_page=10,
            #     alignment="right"
            #     )

            # flash('Transaction API List details fetched successfully')
            return render_template("super_admin_templates/api_master_list.html",
                search_element=search_element,
                transactionAPIList=transactionAPIList,
                #pagination=pagination,
                redirectval = redirectval
                )
        except Exception as e:
            app.logger.error(traceback.format_exc())
            error = "Unable to fetch transaction api details!!"
            return render_template("super_admin_templates/api_master_list.html",
                search_element=search_element,
                transactionAPIList=transactionAPIList,
                #pagination=pagination,
                redirectval = redirectval
                )
    else:
        flash("Staff member does not have given view api permissions!!")
        return render_template("super_admin_templates/api_master_list.html")

# Update transaction api
@api_master.route("/update_transaction_api",methods=["POST","GET"])
def update_transaction_api():
    if not session.get("adminId"):
        return redirect("admin_login")
    adminId=session.get("adminId")    
    loginBrowser = request.headers.get("Sec-Ch-Ua")
    if loginBrowser:
        loginBrowseData = loginBrowser.split(";")
        browser = loginBrowseData[0]
    else:
        loginBrowseData = request.headers.get("User-Agent").split(";")
        browser = loginBrowseData[0]

    existing_record=""
    client_ip=0
    # Extracting client IP address
    if request.headers.getlist("X-Forwarded-For"): 
        client_ip = request.headers.getlist("X-Forwarded-For")[0]
    else:
        client_ip = request.remote_addr

    actionDate=datetime.datetime.now()
    permissionsList = check_permissions(session.get("adminId"),"apiGatewaysPermissions")
    if "edit" in permissionsList:
        try:
            transactionApiId = request.args.get("transactionApiId","")
            if request.method == "POST":
                action = request.form.get("action", "HI").strip()
                data = request.form.to_dict()
                # Step 1: Handle OTP Generation
                if action == "generate":
                    mail_type = data.get("mailType", "").strip()
                    print(mail_type,"((((((((((((((((mail_type))))))))))))))))")
                    if not mail_type:
                        return jsonify({"responseStatus": 0, "result": "mailType is required!"}), 400


                    return jsonify(generate_otp_helper(mail_type))

                # tep 2: Handle OTP Verification
                elif action == "verify":
                    otp_check_id = request.form.get("otpCheckId","SAI")
                    otp_code = request.form.get("otpCode","K")

                    print(otp_check_id,"((((((((OTP CHECK ID????????????))))))))")
                    print(otp_code,"((((((((OTP CODE????????????))))))))")

                    if not otp_check_id or not otp_code:
                        return jsonify({"responseStatus": 0, "result": "Required fields are missing!"})

                    return jsonify(verify_otp_helper(otp_check_id, otp_code))

                elif action == "update":
                    otp_check_id = request.form.get("otpCheckId", "")
                    otp_record = OtpChecks.objects(id=otp_check_id, status=1).first()
                    admin_id = request.form.get("adminId", "")
                   
                    otpcheck_queryset = OtpChecks.objects(adminId=str(admin_id), id=str(otp_check_id), status=1).first()

                    if not otpcheck_queryset:
                        return jsonify({"responseStatus": 0, "result": "Invalid Request."})
                    # Update OTP status to 2 after verification
                    otpcheck_queryset.update(status=2)
                    return jsonify({"responseStatus": 1, "result": "OTP status successfully updated!"})
                    
                apiName = request.form.get("apiName","")
                perdayTransactionLimit = request.form.get("perdayTransactionLimit","")
                isActive = request.form.get("isActive")
                isUserWise = request.form.get("isUserWise")
                transactionType = request.form.get("transactionType","")
                virtualCode = request.form.get("virtualCode","")
                lastSixDigits = request.form.get("lastSixDigits","")
                ifscCode = request.form.get("ifscCode","")
                subCode = request.form.get("subCode","")
                isSeamless = request.form.get("isSeamless")
                priceType = request.form.get("priceType","")
                autoSettlement = request.form.get("autoSettlement")
                cardBinEnable = request.form.get("cardBinEnable")
                defaultTransactionAPI = request.form.get("defaultTransactionAPI")

                inputKeyField = request.form.getlist("inputKeyField[]")
                inputValueField = request.form.getlist("inputValueField[]")

                jsonData = request.form.to_dict(flat=True)

                if len(inputKeyField) == len(inputValueField):
                    # Create a list of dictionaries
                    paramsList = [{'key': key, 'value': value} for key, value in zip(inputKeyField, inputValueField)]
                else:
                    flash("Please give selected params values")
                    return redirect(url_for("api_master.api_masters_list"))

                transaction_api_queryset = TransactionAPI.objects(id=transactionApiId,status__nin=[2]).first()
                existing_record = transaction_api_queryset.to_json()

                message=transaction_api_queryset.adminId.userName+" "+apiName+" Transaction API updated successfully!"
                requestData=[existing_record]
                updatedrequestData=[jsonData]
                save_admin_log_table = save_admin_logs_data(adminId,None,None,"update_transaction_api","update",actionDate,client_ip,browser,message,requestData,updatedrequestData)

                


                if transaction_api_queryset:
                    if cardBinEnable == "True":
                        cardBinEnable = True
                        # Update all other records to set cardBinEnable to False
                        TransactionAPI.objects(status__in=[0, 1]).update(cardBinEnable=False)
                    else:
                        cardBinEnable = False

                    if autoSettlement == "True":
                        autoSettlement = True
                    else:
                        autoSettlement = False

                    if isSeamless == "True":
                        isSeamless = True
                    else:
                        isSeamless = False
                    

                
                    transaction_api_queryset.update(
                        apiName = apiName,
                        perdayTransactionLimit = perdayTransactionLimit,
                        virtualCode = virtualCode,
                        lastSixDigits=lastSixDigits,
                        ifscCode = ifscCode,
                        subCode = subCode,
                        cardBinEnable=cardBinEnable,
                        autoSettlement=autoSettlement,
                        transactionType = transactionType,
                        paramsList = paramsList,
                        isSeamless=isSeamless,
                        priceType=priceType
                        )
                    if isActive == None:
                        transaction_api_queryset.update(isActive=False)
                    else:
                        transaction_api_queryset.update(isActive=True)

                    if isUserWise == None:
                        transaction_api_queryset.update(isUserWise=False)
                    else:
                        transaction_api_queryset.update(isUserWise=True)

                    flash("Transaction API updated successfully!")
                    return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
                else:
                    flash("Invaild id!!")
                    return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
        except Exception as e:
            app.logger.error(traceback.format_exc())
            error = "Unable to update transaction api!!"
            return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
    else:
        flash("Staff member does not have given update api permissions!!")
        return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))


# Update transaction api status
@api_master.route("/update_transaction_api_status",methods=["POST","GET"])
def update_transaction_api_status():
    if not session.get("adminId"):
        return redirect("admin_login")
    adminId=session.get("adminId")
    loginBrowser = request.headers.get("Sec-Ch-Ua")
    if loginBrowser:
        loginBrowseData = loginBrowser.split(";")
        browser = loginBrowseData[0]
    else:
        loginBrowseData = request.headers.get("User-Agent").split(";")
        browser = loginBrowseData[0]

    client_ip=0
    # Extracting client IP address
    if request.headers.getlist("X-Forwarded-For"): 
        client_ip = request.headers.getlist("X-Forwarded-For")[0]
    else:
        client_ip = request.remote_addr

    actionDate=datetime.datetime.now()

    jsonData = request.form.to_dict(flat=True)

    existing_record = ""
    updatedrequestData = [jsonData]
    permissionsList = check_permissions(session.get("adminId"),"apiGatewaysPermissions")
    if "edit" in permissionsList:
        transactionApiId = request.args.get("transactionApiId","")
        if transactionApiId:
            try:
                transaction_api_queryset = TransactionAPI.objects(id=transactionApiId,status__nin=[2]).first()
                existing_record = transaction_api_queryset.to_json()
                requestData = [existing_record]
                if transaction_api_queryset:
                    if transaction_api_queryset.status == 0:
                        transaction_api_queryset.update(status=1)
                        flash("Transaction API activated successfully!")
                        message=transaction_api_queryset.adminId.userName+" "+transaction_api_queryset.apiName+" Transaction API activated successfully!"
                    elif transaction_api_queryset.status == 1:
                        transaction_api_queryset.update(status=0)
                        flash("Transaction API deactivated successfully!")
                        message=transaction_api_queryset.adminId.userName+" "+transaction_api_queryset.apiName+" Transaction API deactivated successfully!"
                    save_admin_log_table = save_admin_logs_data(adminId,None,None,"update_transaction_api_status","updatestatus",actionDate,client_ip,browser,message,requestData,updatedrequestData)
                    return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
                else:
                    flash("Invaild id!!")
                    return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
            except Exception as e:
                app.logger.error(traceback.format_exc())
                return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
        else:
            return redirect(url_for("api_master.api_masters_list"))
    else:
        flash("Staff member does not have given update status api permissions!!")
        return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))

# Delete Transaction API
@api_master.route("/delete_transaction_API",methods=["GET"])
def delete_transaction_API():
    try:
        if not session.get("adminId"):
            return redirect("admin_login")
        adminId=session.get("adminId")
        loginBrowser = request.headers.get("Sec-Ch-Ua")
        if loginBrowser:
            loginBrowseData = loginBrowser.split(";")
            browser = loginBrowseData[0]
        else:
            loginBrowseData = request.headers.get("User-Agent").split(";")
            browser = loginBrowseData[0]

        client_ip=0
        # Extracting client IP address
        if request.headers.getlist("X-Forwarded-For"): 
            client_ip = request.headers.getlist("X-Forwarded-For")[0]
        else:
            client_ip = request.remote_addr

        actionDate=datetime.datetime.now()

        jsonData = request.form.to_dict(flat=True)

        existing_record = ""
        updatedrequestData = [jsonData]

        if request.method == "GET":
            transactionApiId = request.args.get("transactionApiId","")
            transaction_api_queryset = TransactionAPI.objects(id=categoryId,status__in=[0,1]).first()
            existing_record = transaction_api_queryset.to_json()
            requestData = [existing_record]
            transaction_api_queryset.update(status=2)
            flash("Transaction API deleted successfully!")
            message=transaction_api_queryset.adminId.userName+" "+transaction_api_queryset.apiName+" Transaction API deleted successfully!"
            save_admin_log_table = save_admin_logs_data(adminId,None,None,"delete_transaction_API","delete",actionDate,client_ip,browser,message,requestData,updatedrequestData)
            return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to delete transaction api!!")
        return redirect(url_for("api_master.api_masters_list",redirectTo="Transaction"))

@api_master.route("/get_payout_total_balance",methods=["POST","GET"])
def get_payout_total_balance():
    if not session.get("adminId"):
        return redirect("admin_login")
    permissionsList = check_permissions(session.get("adminId"),"fundSourcesPermissions")
    if "view" in permissionsList:
        try:
            if request.method == "GET":
                payoutsList = []
                transaction_apis_queryset = TransactionAPI.objects(transactionType="Payout",status__in=[0,1]).order_by("-id").all()
                for each_payout in transaction_apis_queryset:
                    admin_balance_queryset = AdminPayoutBalances.objects(apiTransactionId=str(each_payout.id)).first()
                    if admin_balance_queryset:
                        previousBalance = admin_balance_queryset.previousBalance
                        currentBalance = admin_balance_queryset.currentBalance
                        updatedOn = admin_balance_queryset.createdOn.astimezone(ist_timezone).strftime("%d-%m-%Y %I:%M %p")
                    else:
                        previousBalance = 0
                        currentBalance = 0
                        updatedOn = ""
                    payoutDict = {
                    "id":str(each_payout.id),
                    "apiName":each_payout.apiName,
                    "transactionType":each_payout.transactionType,
                    "updatedOn":updatedOn,
                    "previousBalance":previousBalance,
                    "currentBalance":"{:.2f}".format(float(currentBalance))
                    }
                    payoutsList.append(payoutDict)
                return render_template("super_admin_templates/fund_sources_list.html",payoutsList=payoutsList)
        except Exception as e:
            app.logger.error(traceback.format_exc())
            flash("Unable to get payout total balance!!")
            return redirect(url_for("api_master.get_payout_total_balance"))
    else:
        flash("Staff member does not have given view payout balances permissions!!")
        return render_template("super_admin_templates/fund_sources_list.html")


@api_master.route("/get_payout_balance",methods=["POST","GET"])
def get_payout_balance():
    apiId = request.args.get("apiId","")
    try:
        print("*****get_payout_balance*****")
        if not apiId:
            flash("Required fields are missing!!")
            return redirect(url_for("api_master.get_payout_total_balance"))

        api_queryset = TransactionAPI.objects(id=apiId).first()
        if not api_queryset:
            flash("Invaild api id!!")
            return redirect(url_for("api_master.get_payout_total_balance"))
        balance_check=payout_balance_check(apiId)
        return redirect(url_for("api_master.get_payout_total_balance"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        flash("Unable to get payout balance!!")
        return redirect(url_for("api_master.get_payout_total_balance"))


@api_master.route("/dynamic_apis_list",methods=["POST","GET"])
def dynamic_apis_list():
    data_status = {"responseStatus":0,"result":""}
    apisList = []
    try:
        walletType = request.form.get("walletType")
        apis_queryset = TransactionAPI.objects(transactionType=walletType,status=1).order_by('-id')
        for each_api in apis_queryset:
            apiDict = fetching_transaction_api_details(each_api)
            apisList.append(apiDict)

        data_status["responseStatus"]=1
        data_status["result"]="Success"
        data_status["apisList"]=apisList
        return data_status
    except Exception as e:
        app.logger.error(traceback.format_exc())
        data_status["result"]="Unsuccess!!"
        return data_status

@api_master.route("/api_switches_list",methods=["POST","GET"])
def api_switches_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    patternsList = []
    walletType = ""
    apiId = ""
    switchapiId = ""
    
    adminId = session.get("adminId")
    try:
        redirectTo = request.args.get("redirectTo","ApiSwitch")
        if redirectTo:
            redirectval = redirectTo
        else:
            redirectval = "ApiSwitch"

        walletType = request.form.get("walletType","")
        profileIdsList = request.form.getlist("profileIdsList[]")
        apiId = request.form.get("apiId","")
        switchapiId = request.form.get("switchapiId","")

        # print(walletType,"((((((walletType))))))")
        # print(profileIdsList,"((((((profileIdsList))))))")
        # print(apiId,"((((((apiId))))))")
        # print(switchapiId,"((((((switchapiId))))))")
        
        if request.method == "GET":
            patterns_queryset = Patterns.objects(status__in=[0,1]).order_by("-id").all()
            for each_pattern in patterns_queryset:
                pattern_dict = fetching_pattern_details(each_pattern)
                patternsList.append(pattern_dict)
            return render_template("super_admin_templates/api_switches_list.html",patternsList=patternsList)

        if request.method == "POST":
            if walletType and profileIdsList and apiId and switchapiId:
                profiles_queryset = Patterns.objects(id__in=profileIdsList).order_by("-id")
                if walletType == "PaymentGateway":
                    for each_profile in profiles_queryset:
                        each_profile.update(defaultPayinPaymentGatewayId=ObjectId(switchapiId))
                else:
                    for each_profile in profiles_queryset:
                        each_profile.update(payoutPaymentGatewayId=ObjectId(switchapiId))
                flash("API switched successfully!")
                return render_template("super_admin_templates/api_switches_list.html",
                    walletType=walletType,
                    apiId=apiId,
                    switchapiId=switchapiId,
                    patternsList=patternsList,
                    redirectval=redirectval
                    )
            else:
                flash("Required fields are missing!!")
                return redirect(url_for("api_master.api_switches_list"))
    except Exception as e:
        app.logger.error(traceback.format_exc())
        error = "Unable to fetch api switches details!!"
        return render_template("super_admin_templates/api_switches_list.html", 
            error=error,
            walletType=walletType,
            apiId=apiId,
            switchapiId=switchapiId,
            patternsList=patternsList,
            redirectval=redirectval
            )