import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useValidationStore } from '@/stores/validationStore'
import { useMuhasebeSettingsStore } from '../store/muhasebeSettingsStore'

export const useMuhasebeSettingsValidationStore = defineStore(
  'muhasebeSettingsValidationStore',
  () => {
    const muhasebeSettingsStore = useMuhasebeSettingsStore()
    const validationStore = useValidationStore()

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

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

      validationStore.IsFieldEmpty(
        muhasebeSettingsStore.muhasebeSettingsForm,
        invalidTexts,
        'basvuruBedeliKdvOrani',
        'Lütfen izin bedeli oranını giriniz.'
      )
      if (
        !validationStore.checkEmpty(
          muhasebeSettingsStore.muhasebeSettingsForm.basvuruBedeliKdvOrani
        )
      ) {
        if (
          Number(muhasebeSettingsStore.muhasebeSettingsForm.basvuruBedeliKdvOrani) ===
            0 ||
          Number(muhasebeSettingsStore.muhasebeSettingsForm.basvuruBedeliKdvOrani) > 100
        ) {
          isFormValid.value = false
          invalidTexts['basvuruBedeliKdvOrani'] =
            'Lütfen 0-100 arasında bir değer giriniz.'
        } else {
          delete invalidTexts['basvuruBedeliKdvOrani']
        }
      }
      validationStore.IsFieldEmpty(
        muhasebeSettingsStore.muhasebeSettingsForm,
        invalidTexts,
        'basvuruBedeli',
        'Lütfen başvuru bedeli tutarını giriniz.'
      )
      validationStore.IsFieldEmpty(
        muhasebeSettingsStore.muhasebeSettingsForm,
        invalidTexts,
        'kurumBanka',
        'Lütfen banka adını giriniz'
      )
      validationStore.IsFieldEmpty(
        muhasebeSettingsStore.muhasebeSettingsForm,
        invalidTexts,
        'kurumBankaSube',
        'Lütfen banka şubesini giriniz.'
      )
      validationStore.IsFieldEmpty(
        muhasebeSettingsStore.muhasebeSettingsForm,
        invalidTexts,
        'kurumIBAN',
        'Lütfen IBAN bilgisini giriniz.'
      )

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

      return isFormValid.value
    }

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