import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useValidationStore } from '@/stores/validationStore'
import { usePiyangoDosyaKapamaStore } from '../stores/piyangoDosyaKapamaStore'

export const usePiyangoDosyaKapamaValidationStore = defineStore(
  'piyangoDosyaKapamaValidationStore',
  () => {
    const piyangoDosyaKapamaStore = usePiyangoDosyaKapamaStore()
    const validationStore = useValidationStore()

    const isFormValid = ref<boolean>(true)
    const invalidTexts = reactive<Record<string, any>>({})
    const isIkramiyeFormValid = ref<boolean>(true)
    const ikramiyeInvalidTexts = reactive<Record<string, any>>({})

    const FormCheck = (): boolean => {
      Object.assign(invalidTexts, {})

      validationStore.IsFieldEmpty(
        piyangoDosyaKapamaStore.dosyaKapamaData,
        invalidTexts,
        'mecraAdi',
        'Yayınlanacak mecranın adını yazınız.'
      )

      isFormValid.value = Object.keys(invalidTexts).length === 0
      return isFormValid.value
    }

    const IkramiyeFormCheck = (): boolean => {
      Object.assign(ikramiyeInvalidTexts, {})

      validationStore.IsFieldEmpty(
        piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData,
        ikramiyeInvalidTexts,
        'tahhutEdilenIkramiye',
        'Lütfen taahhüt edilen ikramiyeyi seçiniz.'
      )
      if (
        validationStore.checkEmpty(
          piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.tahhutEdilenIkramiyeAdet
        )
      ) {
        isIkramiyeFormValid.value = false
        ikramiyeInvalidTexts.tahhutEdilenIkramiye =
          'Lütfen taahhüt edilen ikramiyeyi seçiniz.'
      }

      if (
        validationStore.checkEmpty(
          piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeAsil
        ) &&
        validationStore.checkEmpty(
          piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeAsil
        )
      ) {
        isIkramiyeFormValid.value = false
        ikramiyeInvalidTexts.teslimEdilenIkramiyeAsil =
          'En az 1 asil veya yedek talihli adedi girmelisiniz'
        ikramiyeInvalidTexts.teslimEdilenIkramiyeYedek =
          'En az 1 asil veya yedek talihli adedi girmelisiniz'
      }

      validationStore.IsFieldEmpty(
        piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData,
        ikramiyeInvalidTexts,
        'alinmayanIkramiye',
        'Alınmayan ikramiye adedi boş olamaz. En az 1 asil veya yedek ikramiye adedi giriniz.'
      )

      isIkramiyeFormValid.value = Object.keys(ikramiyeInvalidTexts).length === 0
      return isIkramiyeFormValid.value
    }

    return {
      isFormValid,
      invalidTexts,
      isIkramiyeFormValid,
      ikramiyeInvalidTexts,
      FormCheck,
      IkramiyeFormCheck
    }
  }
)
