from flask import Blueprint, request

from functions import Invoices
from functions.Response import sendResponse

invoicesBlueprint = Blueprint("invoices", __name__)


@invoicesBlueprint.post("/<id>/send")
def sendInvoice(id):
    return sendResponse(Invoices.sendInvoice, request, id)


@invoicesBlueprint.put("/<id>/pay")
def markAsPaid(id):
    return sendResponse(Invoices.markAsPaid, request, id)


@invoicesBlueprint.post("/order_invoice")
def orderInvoice():
    return sendResponse(Invoices.createOrderInvoice, request)


@invoicesBlueprint.post("/payment_methods")
def savePaymenMethod():
    return sendResponse(Invoices.savePaymenMethod, request)


@invoicesBlueprint.put("/payment_methods")
def updatePaymentMethod():
    return sendResponse(Invoices.updatePaymentMethod, request)

@invoicesBlueprint.delete("/payment_methods")
def deletePaymentMethod():
    return sendResponse(Invoices.deletePaymentMethod, request)

@invoicesBlueprint.get("/payment_methods")
def getPaymentMethods():
    return sendResponse(Invoices.getPaymentMethods, request)


@invoicesBlueprint.get("/setup_intent")
def createSetupIntent():
    return sendResponse(Invoices.createSetupIntent, request)


@invoicesBlueprint.get("/daily_invoice")
def createDailyInvoice():
    return sendResponse(Invoices.createDailyInvoice, request, authRequired=False)


@invoicesBlueprint.get("/order-charges-invoices")
def orderChargeInvoices():
    return sendResponse(Invoices.orderChargeInvoices, request, authRequired=False)


@invoicesBlueprint.post("/stripe-account_session")
def createAccountSession():
    return sendResponse(Invoices.createStripeAccountSession, request)
