{% extends "public.html" %} {% block page %}
<div class="row q-col-gutter-md justify-center">
  <div class="col-12 col-md-7 col-lg-6 q-gutter-y-md">
    <q-card class="q-pa-lg">
      <q-card-section class="q-pa-none">
        <h3 class="q-my-none">{{ event_name }}</h3>
        <br />
        <h5 class="q-my-none">{{ event_info }}</h5>
        <br />
        <q-form @submit="Invoice()" class="q-gutter-md">
          <q-input
            filled
            dense
            v-model.trim="formDialog.data.name"
            type="name"
            label="Your name "
          ></q-input>
          <q-input
            filled
            dense
            v-model.trim="formDialog.data.email"
            type="email"
            label="Your email "
          ></q-input>

          <div class="row q-mt-lg">
            <q-btn
              unelevated
              color="primary"
              :disable="formDialog.data.name == '' || formDialog.data.email == '' || paymentReq"
              type="submit"
              >Submit</q-btn
            >
            <q-btn @click="resetForm" flat color="grey" class="q-ml-auto"
              >Cancel</q-btn
            >
          </div>
        </q-form>
      </q-card-section>
    </q-card>

    <q-card v-show="ticketLink.show" class="q-pa-lg">
      <div class="text-center q-mb-lg">
        <q-btn
          unelevated
          size="xl"
          :href="ticketLink.data.link"
          target="_blank"
          color="primary"
          type="a"
          >Link to your ticket!</q-btn
        >
        <br /><br />
        <p>You'll be redirected in a few moments...</p>
      </div>
    </q-card>
  </div>

  <q-dialog v-model="receive.show" position="top" @hide="closeReceiveDialog">
    <q-card
      v-if="!receive.paymentReq"
      class="q-pa-lg q-pt-xl lnbits__dialog-card"
    >
    </q-card>
    <q-card v-else class="q-pa-lg q-pt-xl lnbits__dialog-card">
      <div class="text-center q-mb-lg">
        <a :href="'lightning:' + receive.paymentReq">
          <q-responsive :ratio="1" class="q-mx-xl">
            <qrcode
              :value="paymentReq"
              :options="{width: 340}"
              class="rounded-borders"
            ></qrcode>
          </q-responsive>
        </a>
      </div>
      <div class="row q-mt-lg">
        <q-btn outline color="grey" @click="copyText(receive.paymentReq)"
          >Copy invoice</q-btn
        >
        <q-btn v-close-popup flat color="grey" class="q-ml-auto">Close</q-btn>
      </div>
    </q-card>
  </q-dialog>
</div>

{% endblock %} {% block scripts %}
<script>
  console.log('{{ form_costpword }}')
  Vue.component(VueQrcode.name, VueQrcode)

  new Vue({
    el: '#vue',
    mixins: [windowMixin],
    data: function () {
      return {
        paymentReq: null,
        redirectUrl: null,
        formDialog: {
          show: false,
          data: {
            name: '',
            email: ''
          }
        },
        ticketLink: {
          show: false,
          data: {
            link: ''
          }
        },
        receive: {
          show: false,
          status: 'pending',
          paymentReq: null
        }
      }
    },

    methods: {
      resetForm: function (e) {
        e.preventDefault()
        this.formDialog.data.name = ''
        this.formDialog.data.email = ''
      },

      closeReceiveDialog: function () {
        var checker = this.receive.paymentChecker
        dismissMsg()

        clearInterval(paymentChecker)
        setTimeout(function () {}, 10000)
      },
      Invoice: function () {
        var self = this
        axios

          .get('/events/api/v1/tickets/' + '{{ event_id }}')
          .then(function (response) {
            self.paymentReq = response.data.payment_request
            self.paymentCheck = response.data.payment_hash

            dismissMsg = self.$q.notify({
              timeout: 0,
              message: 'Waiting for payment...'
            })

            self.receive = {
              show: true,
              status: 'pending',
              paymentReq: self.paymentReq
            }

            paymentChecker = setInterval(function () {
              axios
                .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)
                    dismissMsg()
                    self.formDialog.data.name = ''
                    self.formDialog.data.email = ''

                    self.$q.notify({
                      type: 'positive',
                      message: 'Sent, thank you!',
                      icon: null
                    })
                    self.receive = {
                      show: false,
                      status: 'complete',
                      paymentReq: null
                    }

                    self.ticketLink = {
                      show: true,
                      data: {
                        link: '/events/ticket/' + res.data.ticket_id
                      }
                    }
                    setTimeout(function () {
                      window.location.href =
                        '/events/ticket/' + res.data.ticket_id
                    }, 5000)
                  }
                })
                .catch(function (error) {
                  LNbits.utils.notifyApiError(error)
                })
            }, 2000)
          })
          .catch(function (error) {
            LNbits.utils.notifyApiError(error)
          })
      }
    }
  })
</script>
{% endblock %}
