import { defineComponent, ref } from 'vue'

import { CTitleBanner } from '../../../components/CTitleBanner'
import { CDateTime } from '../../../components/CDateTime'
import { CMyFieldDb } from '../../../components/CMyFieldDb'
import { useQuasar } from 'quasar'
import { useI18n } from 'vue-i18n'
import { useUserStore } from '@store/UserStore'
import { useGlobalStore } from '@store/globalStore'
import { useCircuitStore } from '@store/CircuitStore'
import { tools } from '@tools'
import { costanti } from '@costanti'
import { shared_consts } from '@src/common/shared_vuejs'
import type { IOptQueryGM } from '@src/model'

export default defineComponent({
  name: 'Dbop',
  components: { CTitleBanner, CDateTime, CMyFieldDb },
  props: {},
  setup() {
    const $q = useQuasar()
    const { t } = useI18n()
    const circuitStore = useCircuitStore()

    const ris = ref('')
    const riga = ref(0)
    const numpersone = ref(7)
    const date_start = ref(new Date())
    const col = ref(0)
    const placca = ref('')
    const valmin = ref(200)
    const circuitId = ref('')
    const valmax = ref(400)
    const defmin = ref(shared_consts.CIRCUIT_PARAMS.SCOPERTO_MIN_GRP)
    const defmax = ref(shared_consts.CIRCUIT_PARAMS.SCOPERTO_MAX_GRP)
    const defpersmin = ref(100)
    const defpersmax = ref(200)
    const search_username = ref('')
    const search = ref('')
    const replace_username = ref('')
    const risultato = ref('')
    const risultatoHTML = ref('')
    const incaricamento = ref(false)

    const globalStore = useGlobalStore()

    function EseguiFunz(miafunz: string, search_username?: string, replace_username?: string, valmin?: number, valmax?: number, circuitId?: string) {
      const userStore = useUserStore()

      $q.dialog({
        message: t('dialog.continue') + ' ' + miafunz + ' ?',
        ok: {
          label: t('dialog.yes'),
          push: true,
        },
        cancel: {
          label: t('dialog.cancel'),
        },
        title: 'Funzione:',
      }).onOk(async () => {
        const mydata = {
          dbop: miafunz,
          riga: riga,
          col: col,
          date_start: date_start,
          numpersone: numpersone,
          search_username,
          replace_username,
          search: search.value,
          valmin: tools.convstrToNum(valmin),
          valmax: tools.convstrToNum(valmax),
          circuitId,
        }

        incaricamento.value = true
        $q.loading.show({ message: t('otherpages.update') })

        const risfunz = await userStore.execDbOp({ mydata })

        $q.loading.hide()
        await globalStore.loadSite()

        incaricamento.value = false

        console.log('risfunz', risfunz)

        ris.value = ''

        risultato.value = ''
        if (risfunz.data && risfunz.data.mystr) {
          risultato.value = risfunz.data.mystr
        }
      })
    }

    async function getListaArg() {
      risultatoHTML.value = ''
      risultatoHTML.value = await globalStore.getGM_Lista_Argomenti(true)
    }

    async function getTabellaDaGM(options: IOptQueryGM) {
      risultatoHTML.value = ''
      risultatoHTML.value = await globalStore.getGM_Tabella(options)
    }

    return {
      EseguiFunz,
      tools,
      costanti,
      search_username,
      replace_username,
      valmin,
      valmax,
      defmin,
      defmax,
      defpersmin,
      defpersmax,
      circuitId,
      circuitStore,
      incaricamento,
      ris,
      risultato,
      search,
      globalStore,
      risultatoHTML,
      getListaArg,
      getTabellaDaGM,
    }
  },
})
