import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useValidationStore } from '@/stores/validationStore'
import { usePiyangoStore } from '../stores/piyangoStore'
import { usePiyangoIkramiyeStore } from '../stores/piyangoIkramiyeStore'

export const usePiyangoIkramiyeValidationStore = defineStore(
  'piyangoIkramiyeValidationStore',
  () => {
    const validationStore = useValidationStore()
    const piyangoStore = usePiyangoStore()
    const piyangoIkramiyeStore = usePiyangoIkramiyeStore()

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

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

      validationStore.IsFieldEmpty(
        piyangoIkramiyeStore.piyangoIkramiyeForm,
        invalidTexts,
        'cinsi',
        'Bu alan boş bırakılamaz.'
      )
      validationStore.IsFieldEmpty(
        piyangoIkramiyeStore.piyangoIkramiyeForm,
        invalidTexts,
        'marka',
        'Bu alan boş bırakılamaz.'
      )
      validationStore.IsFieldEmpty(
        piyangoIkramiyeStore.piyangoIkramiyeForm,
        invalidTexts,
        'model',
        'Bu alan boş bırakılamaz.'
      )
      validationStore.IsFieldEmpty(
        piyangoIkramiyeStore.piyangoIkramiyeForm,
        invalidTexts,
        'birimFiyat',
        'İkramiyenin birim fiyatını giriniz.'
      )
      validationStore.IsFieldEmpty(
        piyangoIkramiyeStore.piyangoIkramiyeForm,
        invalidTexts,
        'paraBirimiId',
        'Para birimini seçmelisiniz'
      )
      validationStore.IsFieldEmpty(
        piyangoIkramiyeStore.piyangoIkramiyeForm,
        invalidTexts,
        'asilTalihliAdedi',
        piyangoStore.isLotteryForCharity
          ? 'Talihli adedini giriniz.'
          : 'Asıl talihli adedini giriniz.'
      )
      if (!piyangoStore.isLotteryForCharity)
        validationStore.IsFieldEmpty(
          piyangoIkramiyeStore.piyangoIkramiyeForm,
          invalidTexts,
          'yedekTalihliAdedi',
          'Yedek talihli adedini giriniz.'
        )
      validationStore.IsFieldEmpty(
        piyangoIkramiyeStore.piyangoIkramiyeForm,
        invalidTexts,
        'toplamDeger',
        'Toplam değer alanı boş bırakılamaz.'
      )
      isFormValid.value = Object.keys(invalidTexts).length === 0
      return isFormValid.value
    }

    return {
      formChanged,
      isFormValid,
      invalidTexts,
      FormCheck
    }
  }
)
