import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useValidationStore } from '@/stores/validationStore'
import { usePiyangoTeminatStore } from '../stores/piyangoTeminatStore'
import { useUsersStore } from '@/stores/usersStore'

export const usePiyangoTeminatValidationStore = defineStore(
  'piyangoTeminatValidationStore',
  () => {
    const piyangoTeminatStore = usePiyangoTeminatStore()
    const validationStore = useValidationStore()
    const usersStore = useUsersStore()

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

    const FormCheck = (): boolean => {
      Object.assign(invalidTexts, {})
      if (usersStore.isPanelUser) {
        validationStore.IsFieldEmpty(
          piyangoTeminatStore.piyangoTeminatFormData,
          invalidTexts,
          'state',
          'Lütfen işlem tipini seçiniz.'
        )
        validationStore.IsFieldEmpty(
          piyangoTeminatStore.piyangoTeminatFormData,
          invalidTexts,
          'refundDate',
          'Lütfen iade tarihini seçiniz.'
        )
        validationStore.IsFieldEmpty(
          piyangoTeminatStore.piyangoTeminatFormData,
          invalidTexts,
          'refundCount',
          'Lütfen iade sayı no giriniz.'
        )
      }

      validationStore.IsFieldEmpty(
        piyangoTeminatStore.piyangoTeminatFormData,
        invalidTexts,
        'amount',
        'Lütfen tutarı giriniz.'
      )
      validationStore.IsFieldEmpty(
        piyangoTeminatStore.piyangoTeminatFormData,
        invalidTexts,
        'bankName',
        'Lütfen banka adını giriniz.'
      )
      validationStore.IsFieldEmpty(
        piyangoTeminatStore.piyangoTeminatFormData,
        invalidTexts,
        'bankBranch',
        'Lütfen banka şubesini giriniz.'
      )
      validationStore.IsFieldEmpty(
        piyangoTeminatStore.piyangoTeminatFormData,
        invalidTexts,
        'teminatParentType',
        'Lütfen ödeme türünü seçiniz.'
      )
      validationStore.IsFieldEmpty(
        piyangoTeminatStore.piyangoTeminatFormData,
        invalidTexts,
        'teminantChildType',
        'Lütfen teminat türünü seçiniz.'
      )
      validationStore.IsFieldEmpty(
        piyangoTeminatStore.piyangoTeminatFormData,
        invalidTexts,
        'teminantDate',
        'Tarih alanı boş bırakılamaz.'
      )
      validationStore.IsFieldEmpty(
        piyangoTeminatStore.piyangoTeminatFormData,
        invalidTexts,
        'teminantNo',
        'No alanı boş bırakılamaz.'
      )

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

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