from appservices.common.util import *
from appservices.common.form_schemas import *

gold_sell_transactions = Blueprint("gold_sell_transactions",__name__)

def fetching_gold_transaction_details(each_transaction_api):
    transaction_api_dict = {}
    try:
        transaction_api_dict={
            "id":str(each_transaction_api.id),
            "apiName":each_transaction_api.goldTransactionApiId.apiName,
            "userName":each_transaction_api.userId.fullName,
            "transactionType":each_transaction_api.goldTransactionType,
            "transactionId":each_transaction_api.transactionId,
            "apiTransactionId":each_transaction_api.apiTransactionId,
            "invoiceId":each_transaction_api.invoiceId,
            "currentPrice":each_transaction_api.currentGoldPrice,
            "rateId":each_transaction_api.rateId,
            "purchaseAmount":each_transaction_api.goldPurchaseAmount,
            "purchaseGrams":each_transaction_api.goldPurchaseGrams,
            "purchaseGrandTotal":each_transaction_api.purchaseGrandTotal,
            "statusCheckId":each_transaction_api.statusCheckId,
            "pgOrderId":each_transaction_api.pgOrderId,
            # "paymentStatus":each_transaction_api.paymentStatus,
            # "purchaseGrams":each_transaction_api.purchaseGrams,
        }

        status=""
        if each_transaction_api.status == 1:
            status = "Success"
        elif each_transaction_api.status == 2:
            status = "Processing"
        elif each_transaction_api.status == 3:
            status = "Initiated"
        elif each_transaction_api.status == 0:
            status = "Failed"
        transaction_api_dict["status"] =status
        bankStatus=""
        print("(((((((((((each_transaction_api.paymentStatus)))))))))))",each_transaction_api.bankStatus)
        if each_transaction_api.bankStatus == 1:
            bankStatus = "Success"
        elif each_transaction_api.bankStatus == 2:
            bankStatus = "Pending"
        elif each_transaction_api.bankStatus == 3:
            bankStatus = "Initiated"
        elif each_transaction_api.bankStatus == 0:
            bankStatus = "Failed"
        else:
            bankStatus = "Pending"
        transaction_api_dict["bankStatus"] =bankStatus
        
        if each_transaction_api.createdOn:
            transaction_api_dict["createdOn"] = each_transaction_api.createdOn.astimezone(ist_timezone).strftime("%d-%m-%Y %I:%M %p")
        else:
            transaction_api_dict["createdOn"] = ""
    except Exception as e:
        app.logger.error(traceback.format_exc())
    return transaction_api_dict


@gold_sell_transactions.route("/gold_sell_all_transactions_list",methods=["POST","GET"])
@adminid_access_token_required
def gold_sell_all_transactions_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    permissionsList = check_permissions(session.get("adminId"),"goldSellAllTransactionPermission")
    if "view" in permissionsList:
        goldTransactionsList = []
        goldApisList = []
        merchantsList = []
        goldGatewayId=""
        merchantId=""
        pgList=[]
        searchId=""
        snoCount=0
        per_page = ""
        form = GoldSellAllTransactionSearchForm(request.args)
        try:
            adminId = session.get("adminId")

            startDate = request.args.get("startDate","")
            endDate = request.args.get("endDate","")
            # orderId = request.args.get("orderId","")
            # pgOrderId = request.args.get("pgOrderId","")
            merchantId = request.args.get("merchantId","")
            searchId=request.args.get("searchId","")
            # pgId=request.args.get("pgId","")
            goldGatewayId=request.args.get("goldGatewayId","")

            # Set default date format
            date_format = "%d-%m-%Y"
            pagination = None
            pgList = []
            try:
                if startDate:
                    startDate = datetime.datetime.strptime(startDate, date_format)
                    startDate = startDate.replace(hour=0, minute=0, second=0, microsecond=0)
                else:
                    startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)

                if endDate:
                    endDate = datetime.datetime.strptime(endDate, date_format)
                    endDate = endDate.replace(hour=23, minute=59, second=59, microsecond=999999)
                else:
                    endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)
            except Exception as ve:
                app.logger.error("Date parsing error: %s", ve)
                startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
                endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)

            if form.validate():

                page = request.args.get(get_page_parameter(), type=int, default=1)
                per_page = 20  # Number of items per page
                start = (page - 1) * per_page
                snoCount = start

                merchants_queryset = Users.objects(status__nin=[2]).only("id","fullName","phoneNumber").order_by("-createdOn")
                # for each_merchant in merchants_queryset:
                #     merchantDict = fetching_user_details(each_merchant)
                    # merchantsList.append(merchantDict)
                merchantsList=list(merchants_queryset)

                gold_queryset = TransactionAPI.objects(transactionType="Gold",status__in=[0,1]).only("id","apiName").order_by("-id")
                #     pgDict = fetching_transaction_api_details(each_gold_api)
                #     goldApisList.append(pgDict)
                goldApisList = list(gold_queryset)
                print("goldApisList",goldApisList)

                query=Q(status__in=[0,1,2,3,4,5],createdOn__gte=startDate,createdOn__lte=endDate,goldTransactionType="Debit")

                if searchId:
                    # gold_transaction_reports = gold_transaction_reports.filter(transactionId__icontains=searchId)
                    query &= Q(transactionId__icontains=searchId) | Q(pgOrderId__icontains=searchId)

                else:

                    if goldGatewayId:
                        # gold_transaction_reports = gold_transaction_reports.filter(transactionApiId__in=[goldGatewayId])
                        query&=Q(goldTransactionApiId=goldGatewayId)

                    if merchantId:
                                # payouts_queryset = payouts_queryset.filter(userId__in=[merchantId])
                        query &= Q(userId__in=[merchantId])

                

                total_count = GoldTransactions.objects(query).count()
                gold_transaction_reports = GoldTransactions.objects(query).order_by("-createdOn").all().skip(start).limit(per_page) 
                # for each_gold_api in gold_queryset:

                for each_payin in gold_transaction_reports:
                    payinDict = fetching_gold_transaction_details(each_payin)
                    print("(((((((payinDict)))))))",payinDict)
                    goldTransactionsList.append(payinDict)

                # Pagination object for rendering pagination controls in the template
                pagination = Pagination(page=page, total=total_count, per_page=per_page, alignment="right", record_name="payins")
            else:
                print("form errors",form.errors)

            return render_template("super_admin_templates/gold_sell_all_transactions_list.html",
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldTransactionsList=goldTransactionsList,
                goldApisList=goldApisList,
                pagination=pagination,
                # pgOrderId=pgOrderId,
                goldGatewayId=goldGatewayId,
                searchId=searchId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # pgId=pgId,
                pgList=pgList,
                form=form,
                snoCount=snoCount
                )
        except Exception as e:
            app.logger.error(traceback.format_exc())
            error = "Unable to fetch gold sell transaction data!!"
            return render_template("super_admin_templates/gold_sell_all_transactions_list.html", 
                error=error,
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldApisList=goldApisList,
                goldTransactionsList=goldTransactionsList,
                pagination=pagination,
                goldGatewayId=goldGatewayId,
                # pgOrderId=pgOrderId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # orderId=orderId,
                # pgId=pgId,
                pgList=pgList,
                searchId=searchId,
                form=form,
                snoCount=snoCount
                )
    else:
        flash("The staff member does not have permission to view gold sell transactions details.", "danger")
        return render_template("super_admin_templates/gold_sell_all_transactions_list.html")



@gold_sell_transactions.route("/gold_sell_success_transactions_list",methods=["POST","GET"])
@adminid_access_token_required
def gold_sell_success_transactions_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    permissionsList = check_permissions(session.get("adminId"),"goldSellSuccessTransactionPermission")
    if "view" in permissionsList:
        goldTransactionsList = []
        goldApisList = []
        merchantsList = []
        goldGatewayId=""
        merchantId=""
        pgList=[]
        searchId=""
        snoCount=0
        per_page = ""
        form = GoldSellSuccessTransactionSearchForm(request.args)
        try:
            adminId = session.get("adminId")

            startDate = request.args.get("startDate","")
            endDate = request.args.get("endDate","")
            # orderId = request.args.get("orderId","")
            # pgOrderId = request.args.get("pgOrderId","")
            merchantId = request.args.get("merchantId","")
            searchId=request.args.get("searchId","")
            # pgId=request.args.get("pgId","")
            goldGatewayId=request.args.get("goldGatewayId","")

            # Set default date format
            date_format = "%d-%m-%Y"
            pagination = None
            pgList = []
            try:
                if startDate:
                    startDate = datetime.datetime.strptime(startDate, date_format)
                    startDate = startDate.replace(hour=0, minute=0, second=0, microsecond=0)
                else:
                    startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)

                if endDate:
                    endDate = datetime.datetime.strptime(endDate, date_format)
                    endDate = endDate.replace(hour=23, minute=59, second=59, microsecond=999999)
                else:
                    endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)
            except Exception as ve:
                app.logger.error("Date parsing error: %s", ve)
                startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
                endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)

            if form.validate():

                page = request.args.get(get_page_parameter(), type=int, default=1)
                per_page = 20  # Number of items per page
                start = (page - 1) * per_page
                snoCount = start

                merchants_queryset = Users.objects(status__nin=[2]).only("id","fullName","phoneNumber").order_by("-createdOn")
                # for each_merchant in merchants_queryset:
                #     merchantDict = fetching_user_details(each_merchant)
                    # merchantsList.append(merchantDict)
                merchantsList=list(merchants_queryset)

                gold_queryset = TransactionAPI.objects(transactionType="Gold",status__in=[0,1]).only("id","apiName").order_by("-id")
                #     pgDict = fetching_transaction_api_details(each_gold_api)
                #     goldApisList.append(pgDict)
                goldApisList = list(gold_queryset)
                print("goldApisList",goldApisList)

                query=Q(status__in=[1],createdOn__gte=startDate,createdOn__lte=endDate,goldTransactionType="Debit")

                if searchId:
                    # gold_transaction_reports = gold_transaction_reports.filter(transactionId__icontains=searchId)
                    query &= Q(transactionId__icontains=searchId) | Q(pgOrderId__icontains=searchId)

                else:
                    if goldGatewayId:
                        # gold_transaction_reports = gold_transaction_reports.filter(transactionApiId__in=[goldGatewayId])
                        query&=Q(goldTransactionApiId=goldGatewayId)

                    if merchantId:
                                # payouts_queryset = payouts_queryset.filter(userId__in=[merchantId])
                        query &= Q(userId__in=[merchantId])

                

                total_count = GoldTransactions.objects(query).count()
                gold_transaction_reports = GoldTransactions.objects(query).order_by("-createdOn").all().skip(start).limit(per_page) 
                # for each_gold_api in gold_queryset:

                for each_payin in gold_transaction_reports:
                    payinDict = fetching_gold_transaction_details(each_payin)
                    print("(((((((payinDict)))))))",payinDict)
                    goldTransactionsList.append(payinDict)

                # Pagination object for rendering pagination controls in the template
                pagination = Pagination(page=page, total=total_count, per_page=per_page, alignment="right", record_name="payins")
            else:
                print("form errors",form.errors)

            return render_template("super_admin_templates/gold_sell_success_transactions_list.html",
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldTransactionsList=goldTransactionsList,
                goldApisList=goldApisList,
                pagination=pagination,
                # pgOrderId=pgOrderId,
                goldGatewayId=goldGatewayId,
                searchId=searchId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # pgId=pgId,
                pgList=pgList,
                form=form,
                snoCount=snoCount
                )
        except Exception as e:
            app.logger.error(traceback.format_exc())
            error = "Unable to fetch gold transaction list data!!"
            return render_template("super_admin_templates/gold_sell_success_transactions_list.html", 
                error=error,
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldApisList=goldApisList,
                goldTransactionsList=goldTransactionsList,
                pagination=pagination,
                goldGatewayId=goldGatewayId,
                # pgOrderId=pgOrderId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # orderId=orderId,
                # pgId=pgId,
                pgList=pgList,
                searchId=searchId,
                form=form,
                snoCount=snoCount
                )
    else:
        flash("The staff member does not have permission to view gold sell successs transactions details.", "danger")
        return render_template("super_admin_templates/gold_sell_success_transactions_list.html")



@gold_sell_transactions.route("/gold_sell_process_transactions_list",methods=["POST","GET"])
@adminid_access_token_required
def gold_sell_process_transactions_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    permissionsList = check_permissions(session.get("adminId"),"goldSellProcessTransactionPermission")
    if "view" in permissionsList:
        goldTransactionsList = []
        goldApisList = []
        merchantsList = []
        goldGatewayId=""
        merchantId=""
        pgList=[]
        searchId=""
        snoCount=0
        per_page = ""
        form = GoldSellProcessTransactionSearchForm(request.args)
        try:
            adminId = session.get("adminId")

            startDate = request.args.get("startDate","")
            endDate = request.args.get("endDate","")
            # orderId = request.args.get("orderId","")
            # pgOrderId = request.args.get("pgOrderId","")
            merchantId = request.args.get("merchantId","")
            searchId=request.args.get("searchId","")
            # pgId=request.args.get("pgId","")
            goldGatewayId=request.args.get("goldGatewayId","")

            # Set default date format
            date_format = "%d-%m-%Y"
            pagination = None
            pgList = []
            try:
                if startDate:
                    startDate = datetime.datetime.strptime(startDate, date_format)
                    startDate = startDate.replace(hour=0, minute=0, second=0, microsecond=0)
                else:
                    startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)

                if endDate:
                    endDate = datetime.datetime.strptime(endDate, date_format)
                    endDate = endDate.replace(hour=23, minute=59, second=59, microsecond=999999)
                else:
                    endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)
            except Exception as ve:
                app.logger.error("Date parsing error: %s", ve)
                startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
                endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)

            if form.validate():

                page = request.args.get(get_page_parameter(), type=int, default=1)
                per_page = 20  # Number of items per page
                start = (page - 1) * per_page
                snoCount = start

                merchants_queryset = Users.objects(status__nin=[2]).only("id","fullName","phoneNumber").order_by("-createdOn")
                # for each_merchant in merchants_queryset:
                #     merchantDict = fetching_user_details(each_merchant)
                    # merchantsList.append(merchantDict)
                merchantsList=list(merchants_queryset)

                gold_queryset = TransactionAPI.objects(transactionType="Gold",status__in=[0,1]).only("id","apiName").order_by("-id")
                #     pgDict = fetching_transaction_api_details(each_gold_api)
                #     goldApisList.append(pgDict)
                goldApisList = list(gold_queryset)
                print("goldApisList",goldApisList)

                query=Q(status__in=[2,3],createdOn__gte=startDate,createdOn__lte=endDate,goldTransactionType="Debit",bankStatus=1)

                if searchId:
                    # gold_transaction_reports = gold_transaction_reports.filter(transactionId__icontains=searchId)
                    query &= Q(transactionId__icontains=searchId) | Q(pgOrderId__icontains=searchId)

                else:
                    if goldGatewayId:
                        # gold_transaction_reports = gold_transaction_reports.filter(transactionApiId__in=[goldGatewayId])
                        query&=Q(goldTransactionApiId=goldGatewayId)

                    if merchantId:
                                # payouts_queryset = payouts_queryset.filter(userId__in=[merchantId])
                        query &= Q(userId__in=[merchantId])

                total_count = GoldTransactions.objects(query).count()
                gold_transaction_reports = GoldTransactions.objects(query).order_by("-createdOn").all().skip(start).limit(per_page) 
                # for each_gold_api in gold_queryset:

                for each_payin in gold_transaction_reports:
                    payinDict = fetching_gold_transaction_details(each_payin)
                    print("(((((((payinDict)))))))",payinDict)
                    goldTransactionsList.append(payinDict)

                # Pagination object for rendering pagination controls in the template
                pagination = Pagination(page=page, total=total_count, per_page=per_page, alignment="right", record_name="payins")
            else:
                print("form errors",form.errors)

            return render_template("super_admin_templates/gold_sell_process_transactions_list.html",
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldTransactionsList=goldTransactionsList,
                goldApisList=goldApisList,
                pagination=pagination,
                # pgOrderId=pgOrderId,
                goldGatewayId=goldGatewayId,
                searchId=searchId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # pgId=pgId,
                pgList=pgList,
                form=form,
                snoCount=snoCount
                )
        except Exception as e:
            app.logger.error(traceback.format_exc())
            error = "Unable to fetch gold sell process transaction list data!!"
            return render_template("super_admin_templates/gold_sell_process_transactions_list.html", 
                error=error,
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldApisList=goldApisList,
                goldTransactionsList=goldTransactionsList,
                pagination=pagination,
                goldGatewayId=goldGatewayId,
                # pgOrderId=pgOrderId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # orderId=orderId,
                # pgId=pgId,
                pgList=pgList,
                searchId=searchId,
                form=form,
                snoCount=snoCount
                )
    else:
        flash("The staff member does not have permission to view gold sell process transactions details.", "danger")
        return render_template("super_admin_templates/gold_sell_process_transactions_list.html")



@gold_sell_transactions.route("/gold_sell_Failed_transactions_list",methods=["POST","GET"])
@adminid_access_token_required
def gold_sell_Failed_transactions_list():
    if not session.get("adminId"):
        return redirect("admin_login")
    permissionsList = check_permissions(session.get("adminId"),"goldSellFailedTransactionPermission")
    if "view" in permissionsList:
        goldTransactionsList = []
        goldApisList = []
        merchantsList = []
        goldGatewayId=""
        merchantId=""
        pgList=[]
        searchId=""
        snoCount=0
        per_page = ""
        form = GoldSellFailedTransactionSearchForm(request.args)
        try:
            adminId = session.get("adminId")

            startDate = request.args.get("startDate","")
            endDate = request.args.get("endDate","")
            # orderId = request.args.get("orderId","")
            # pgOrderId = request.args.get("pgOrderId","")
            merchantId = request.args.get("merchantId","")
            searchId=request.args.get("searchId","")
            # pgId=request.args.get("pgId","")
            goldGatewayId=request.args.get("goldGatewayId","")

            # Set default date format
            date_format = "%d-%m-%Y"
            pagination = None
            pgList = []
            try:
                if startDate:
                    startDate = datetime.datetime.strptime(startDate, date_format)
                    startDate = startDate.replace(hour=0, minute=0, second=0, microsecond=0)
                else:
                    startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)

                if endDate:
                    endDate = datetime.datetime.strptime(endDate, date_format)
                    endDate = endDate.replace(hour=23, minute=59, second=59, microsecond=999999)
                else:
                    endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)
            except Exception as ve:
                app.logger.error("Date parsing error: %s", ve)
                startDate = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
                endDate = datetime.datetime.now().replace(hour=23, minute=59, second=59, microsecond=999999)

            if form.validate():

                page = request.args.get(get_page_parameter(), type=int, default=1)
                per_page = 20  # Number of items per page
                start = (page - 1) * per_page
                snoCount = start

                merchants_queryset = Users.objects(status__nin=[2]).only("id","fullName","phoneNumber").order_by("-createdOn")
                # for each_merchant in merchants_queryset:
                #     merchantDict = fetching_user_details(each_merchant)
                    # merchantsList.append(merchantDict)
                merchantsList=list(merchants_queryset)

                gold_queryset = TransactionAPI.objects(transactionType="Gold",status__in=[0,1]).only("id","apiName").order_by("-id")
                #     pgDict = fetching_transaction_api_details(each_gold_api)
                #     goldApisList.append(pgDict)
                goldApisList = list(gold_queryset)
                print("goldApisList",goldApisList)

                # query=Q(status__in=[0,1,2,3,4,5],createdOn__gte=startDate,createdOn__lte=endDate,goldTransactionType="credit",paymentStatus=1)
                # query=Q(createdOn__gte=startDate) & Q(createdOn__lte=endDate)& Q(goldTransactionType="credit") & Q(status=0) | Q(paymentStatus=0)
                query = Q(createdOn__gte=startDate) & Q(createdOn__lte=endDate) & Q(goldTransactionType="Debit") & (Q(status=0) | Q(bankStatus=0))


                # query = Q(createdOn__gte=startDate, createdOn__lte=endDate, goldTransactionType="credit") & (Q(paymentStatus=1) | Q(status=0))
                if searchId:
                    # gold_transaction_reports = gold_transaction_reports.filter(transactionId__icontains=searchId)
                    query &= Q(transactionId__icontains=searchId) | Q(pgOrderId__icontains=searchId)

                else:
                    
                    if goldGatewayId:
                        # gold_transaction_reports = gold_transaction_reports.filter(transactionApiId__in=[goldGatewayId])
                        query&=Q(goldTransactionApiId=goldGatewayId)

                    if merchantId:
                                # payouts_queryset = payouts_queryset.filter(userId__in=[merchantId])
                        query &= Q(userId__in=[merchantId])


                total_count = GoldTransactions.objects(query).count()
                gold_transaction_reports = GoldTransactions.objects(query).order_by("-createdOn").all().skip(start).limit(per_page) 
                # for each_gold_api in gold_queryset:

                for each_payin in gold_transaction_reports:
                    payinDict = fetching_gold_transaction_details(each_payin)
                    print("(((((((payinDict)))))))",payinDict)
                    goldTransactionsList.append(payinDict)

                # Pagination object for rendering pagination controls in the template
                pagination = Pagination(page=page, total=total_count, per_page=per_page, alignment="right", record_name="payins")
            else:
                print("form errors",form.errors)

            return render_template("super_admin_templates/gold_sell_Failed_transactions_list.html",
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldTransactionsList=goldTransactionsList,
                goldApisList=goldApisList,
                pagination=pagination,
                # pgOrderId=pgOrderId,
                goldGatewayId=goldGatewayId,
                searchId=searchId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # pgId=pgId,
                pgList=pgList,
                form=form,
                snoCount=snoCount
                )
        except Exception as e:
            app.logger.error(traceback.format_exc())
            error = "Unable to fetch gold sell failed transaction list!!"
            return render_template("super_admin_templates/gold_sell_Failed_transactions_list.html", 
                error=error,
                startDate=startDate.strftime(date_format),
                endDate=endDate.strftime(date_format),
                goldApisList=goldApisList,
                goldTransactionsList=goldTransactionsList,
                pagination=pagination,
                goldGatewayId=goldGatewayId,
                # pgOrderId=pgOrderId,
                merchantsList=merchantsList,
                merchantId=merchantId,
                # orderId=orderId,
                # pgId=pgId,
                pgList=pgList,
                searchId=searchId,
                form=form,
                snoCount=snoCount
                )
    else:
        flash("The staff member does not have permission to view gold sell failed transactions details.", "danger")
        return render_template("super_admin_templates/gold_sell_Failed_transactions_list.html")