import { defineStore } from 'pinia'
import { useDataStore } from '@/stores/dataStore'
import { usePiyangoStore } from '../stores/piyangoStore'
import { usePiyangoOnayStore } from '../stores/piyangoOnayStore'
import { usePiyangoOnayValidationStore } from '../validation/piyangoOnayValidationStore'
import { useUsersStore } from '@/stores/usersStore'
import { usePiyangoDataStore } from '../stores/piyangoDataStore'

export const usePiyangoOnayService = defineStore('piyangoOnayService', () => {
  const dataStore = useDataStore()
  const piyangoStore = usePiyangoStore()
  const piyangoOnayStore = usePiyangoOnayStore()
  const piyangoOnayValidationStore = usePiyangoOnayValidationStore()
  const usersStore = useUsersStore()
  const piyangoDataStore = usePiyangoDataStore()

  const getKapsamDisiId = (): number | null => {
    const kapsamDisi = piyangoDataStore.piyangoOnayDurumlari.find(
      (item: Record<string, any>) => item.tipAdi === 'Kapsam Dışı'
    )
    return kapsamDisi ? kapsamDisi.islemId : null
  }

  const shouldKeepIzinFields = (islemTipiId: number | null): boolean => {
    return islemTipiId === 4 || islemTipiId === getKapsamDisiId()
  }

  const SaveOnayDurum = async () => {
    if (piyangoOnayValidationStore.FormCheck()) {
      piyangoOnayStore.loaded = false
      let form: any
      let dataForm = new FormData()

      if (!shouldKeepIzinFields(piyangoOnayStore.piyangoOnayForm.onayDurumuIslemTipiId)) {
        piyangoOnayStore.piyangoOnayForm.izinSayisi = ''
        piyangoOnayStore.piyangoOnayForm.izinTarihi = ''
        piyangoOnayStore.piyangoOnayForm.izinAciklamasi = ''
      }
      if (piyangoOnayStore.piyangoOnayForm.onayDurumuIslemTipiId !== getKapsamDisiId()) {
        piyangoOnayStore.piyangoOnayForm.kapsamDisiSebebi = null
      }
      if (
        piyangoOnayStore.piyangoOnayForm.onayDurumuIslemTipiId !== 4 &&
        piyangoOnayStore.piyangoOnayForm.onayDurumuIslemTipiId !== getKapsamDisiId()
      ) {
        piyangoOnayStore.piyangoOnayForm.mudurlukId = null
      }
      if (piyangoOnayStore.piyangoOnayForm.onayDurumuIslemTipiId !== 4) {
        piyangoOnayStore.piyangoOnayForm.cekilisGorevlisiId = null
      }
      dataForm.append(
        'onayDurumuIslemTipiId',
        piyangoOnayStore.piyangoOnayForm.onayDurumuIslemTipiId
      )
      dataForm.append('onayCekilisId', String(piyangoStore.selectedLottery))
      dataForm.append('kisiId', String(usersStore.userId))
      dataForm.append('file', piyangoOnayStore.piyangoOnayForm.file)
      dataForm.append('aciklama', piyangoOnayStore.piyangoOnayForm.aciklama || '')
      dataForm.append('izinSayisi', piyangoOnayStore.piyangoOnayForm.izinSayisi || '')
      dataForm.append('izinTarihi', piyangoOnayStore.piyangoOnayForm.izinTarihi || '')
      dataForm.append(
        'izinAciklamasi',
        piyangoOnayStore.piyangoOnayForm.izinAciklamasi != null
          ? String(piyangoOnayStore.piyangoOnayForm.izinAciklamasi)
          : ''
      )
      dataForm.append(
        'kapsamDisiSebebi',
        piyangoOnayStore.piyangoOnayForm.kapsamDisiSebebi != null
          ? String(piyangoOnayStore.piyangoOnayForm.kapsamDisiSebebi)
          : ''
      )
      dataForm.append(
        'mudurluk',
        piyangoOnayStore.piyangoOnayForm.mudurlukId != null
          ? String(piyangoOnayStore.piyangoOnayForm.mudurlukId)
          : ''
      )
      dataForm.append(
        'cekilisGorevlisi',
        piyangoOnayStore.piyangoOnayForm.cekilisGorevlisiId != null
          ? String(piyangoOnayStore.piyangoOnayForm.cekilisGorevlisiId)
          : ''
      )

      form = await dataStore.dataPost('OnayDurumu/', {
        data: dataForm,
        headers: { 'Content-Type': 'multipart/form-data' },
        toast: { toast: 'Onay durumu başarıyla kaydedildi', type: 'success' }
      })

      if (form !== 'errorfalse') {
        piyangoOnayValidationStore.formChanged = false
        piyangoStore.lotteryApprove =
          piyangoOnayStore.piyangoOnayForm.onayDurumuIslemTipiId
        piyangoOnayStore.ResetForm()
        window.location.reload()
      }
    } else {
      piyangoOnayValidationStore.isFormValid = true
    }
  }

  const SaveOnayDurumPanel = async () => {
    if (piyangoOnayValidationStore.FormPanelCheck()) {
      let form: any
      let dataForm = new FormData()

      if (!shouldKeepIzinFields(piyangoOnayStore.piyangoPanelOnayForm.onayDurumuIslemTipiId)) {
        piyangoOnayStore.piyangoPanelOnayForm.izinSayisi = ''
        piyangoOnayStore.piyangoPanelOnayForm.izinTarihi = ''
        piyangoOnayStore.piyangoPanelOnayForm.izinAciklamasi = ''
      }
      if (piyangoOnayStore.piyangoPanelOnayForm.onayDurumuIslemTipiId !== getKapsamDisiId()) {
        piyangoOnayStore.piyangoPanelOnayForm.kapsamDisiSebebi = null
      }
      if (
        piyangoOnayStore.piyangoPanelOnayForm.onayDurumuIslemTipiId !== 4 &&
        piyangoOnayStore.piyangoPanelOnayForm.onayDurumuIslemTipiId !== getKapsamDisiId()
      ) {
        piyangoOnayStore.piyangoPanelOnayForm.mudurlukId = null
      }
      if (piyangoOnayStore.piyangoPanelOnayForm.onayDurumuIslemTipiId !== 4) {
        piyangoOnayStore.piyangoPanelOnayForm.cekilisGorevlisiId = null
      }
      dataForm.append('onayDurumuIslemTipiId', piyangoOnayStore.piyangoPanelOnayForm.onayDurumuIslemTipiId)
      dataForm.append('id', piyangoOnayStore.piyangoPanelOnayForm.id)
      dataForm.append('onayCekilisId', String(piyangoStore.selectedLottery))
      dataForm.append('kisiId', String(usersStore.userId))
      dataForm.append('file', piyangoOnayStore.piyangoPanelOnayForm.file)
      dataForm.append('aciklama', piyangoOnayStore.piyangoPanelOnayForm.aciklama || '')
      dataForm.append('izinSayisi', piyangoOnayStore.piyangoPanelOnayForm.izinSayisi || '')
      dataForm.append('izinTarihi', piyangoOnayStore.piyangoPanelOnayForm.izinTarihi || '')
      dataForm.append(
        'izinAciklamasi',
        piyangoOnayStore.piyangoPanelOnayForm.izinAciklamasi != null
          ? String(piyangoOnayStore.piyangoPanelOnayForm.izinAciklamasi)
          : ''
      )
      dataForm.append(
        'kapsamDisiSebebi',
        piyangoOnayStore.piyangoPanelOnayForm.kapsamDisiSebebi != null
          ? String(piyangoOnayStore.piyangoPanelOnayForm.kapsamDisiSebebi)
          : ''
      )
      dataForm.append(
        'mudurluk',
        piyangoOnayStore.piyangoPanelOnayForm.mudurlukId != null
          ? String(piyangoOnayStore.piyangoPanelOnayForm.mudurlukId)
          : ''
      )
      dataForm.append(
        'cekilisGorevlisi',
        piyangoOnayStore.piyangoPanelOnayForm.cekilisGorevlisiId != null
          ? String(piyangoOnayStore.piyangoPanelOnayForm.cekilisGorevlisiId)
          : ''
      )

      form = await dataStore.dataPut(
        'OnayDurumu/' + piyangoOnayStore.piyangoPanelOnayForm.id,
        {
          data: dataForm,
          headers: { 'Content-Type': 'multipart/form-data' },
          toast: { toast: 'Onay durumu başarıyla kaydedildi', type: 'success' }
        }
      )

      if (form !== 'errorfalse') {
        piyangoOnayStore.refreshList = false
        setTimeout(() => {
          piyangoOnayStore.refreshList = true
        }, 10)
        piyangoOnayStore.onayFormPanel = false
      }
    } else {
      piyangoOnayValidationStore.isPanelFormValid = true
    }
  }
  return { SaveOnayDurum, SaveOnayDurumPanel }
})
