diff --git a/lnbits/extensions/events/crud.py b/lnbits/extensions/events/crud.py index 9e04476d3..4cc86ac4d 100644 --- a/lnbits/extensions/events/crud.py +++ b/lnbits/extensions/events/crud.py @@ -16,7 +16,7 @@ async def create_ticket( INSERT INTO events.ticket (id, wallet, event, name, email, registered, paid) VALUES (?, ?, ?, ?, ?, ?, ?) """, - (payment_hash, wallet, event, name, email, False, False), + (payment_hash, wallet, event, name, email, False, True), ) ticket = await get_ticket(payment_hash) diff --git a/lnbits/extensions/events/templates/events/display.html b/lnbits/extensions/events/templates/events/display.html index 4c1f557f1..7e62b7a74 100644 --- a/lnbits/extensions/events/templates/events/display.html +++ b/lnbits/extensions/events/templates/events/display.html @@ -135,14 +135,8 @@ var self = this axios - .post( - '/events/api/v1/tickets/' + '{{ event_id }}/{{ event_price }}', - { - event: '{{ event_id }}', - event_name: '{{ event_name }}', - name: self.formDialog.data.name, - email: self.formDialog.data.email - } + .get( + '/events/api/v1/tickets/' + '{{ event_id }}' ) .then(function (response) { self.paymentReq = response.data.payment_request @@ -161,7 +155,13 @@ paymentChecker = setInterval(function () { axios - .get('/events/api/v1/tickets/' + self.paymentCheck) + .post('/events/api/v1/tickets/' + '{{ event_id }}/' + self.paymentCheck, + { + event: '{{ event_id }}', + event_name: '{{ event_name }}', + name: self.formDialog.data.name, + email: self.formDialog.data.email + }) .then(function (res) { if (res.data.paid) { clearInterval(paymentChecker) diff --git a/lnbits/extensions/events/templates/events/register.html b/lnbits/extensions/events/templates/events/register.html index 4dff9afbb..3913cc0c4 100644 --- a/lnbits/extensions/events/templates/events/register.html +++ b/lnbits/extensions/events/templates/events/register.html @@ -133,7 +133,7 @@ var self = this LNbits.api - .request('GET', '/events/api/v1/register/ticket/' + res) + .request('GET', '/events/api/v1/register/ticket/' + res.split("//")[1]) .then(function (response) { self.$q.notify({ type: 'positive', diff --git a/lnbits/extensions/events/templates/events/ticket.html b/lnbits/extensions/events/templates/events/ticket.html index a53f834f9..21b7cfa82 100644 --- a/lnbits/extensions/events/templates/events/ticket.html +++ b/lnbits/extensions/events/templates/events/ticket.html @@ -13,9 +13,8 @@

diff --git a/lnbits/extensions/events/views_api.py b/lnbits/extensions/events/views_api.py index 87edb07da..45ee4de05 100644 --- a/lnbits/extensions/events/views_api.py +++ b/lnbits/extensions/events/views_api.py @@ -97,8 +97,8 @@ async def api_tickets( return [ticket.dict() for ticket in await get_tickets(wallet_ids)] -@events_ext.post("/api/v1/tickets/{event_id}/{sats}") -async def api_ticket_make_ticket(event_id, sats, data: CreateTicket): +@events_ext.get("/api/v1/tickets/{event_id}") +async def api_ticket_make_ticket(event_id): event = await get_event(event_id) if not event: raise HTTPException( @@ -107,37 +107,35 @@ async def api_ticket_make_ticket(event_id, sats, data: CreateTicket): try: payment_hash, payment_request = await create_invoice( wallet_id=event.wallet, - amount=int(sats), + amount=event.price_per_ticket, memo=f"{event_id}", extra={"tag": "events"}, ) except Exception as e: raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=str(e)) - ticket = await create_ticket( - payment_hash=payment_hash, - wallet=event.wallet, - event=event_id, - name=data.name, - email=data.email, - ) - - if not ticket: - raise HTTPException( - status_code=HTTPStatus.NOT_FOUND, detail=f"Event could not be fetched." - ) - return {"payment_hash": payment_hash, "payment_request": payment_request} -@events_ext.get("/api/v1/tickets/{payment_hash}") -async def api_ticket_send_ticket(payment_hash): - ticket = await get_ticket(payment_hash) - +@events_ext.post("/api/v1/tickets/{event_id}/{payment_hash}") +async def api_ticket_send_ticket(event_id, payment_hash, data: CreateTicket): + event = await get_event(event_id) try: status = await api_payment(payment_hash) if status["paid"]: - await set_ticket_paid(payment_hash=payment_hash) + ticket = await create_ticket( + payment_hash=payment_hash, + wallet=event.wallet, + event=event_id, + name=data.name, + email=data.email, + ) + + if not ticket: + raise HTTPException( + status_code=HTTPStatus.NOT_FOUND, detail=f"Event could not be fetched." + ) + return {"paid": True, "ticket_id": ticket.id} except Exception: raise HTTPException(status_code=HTTPStatus.NOT_FOUND, detail="Not paid")