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

export const usePiyangoContactValidationStore = defineStore(
  'piyangoContactValidationStore',
  () => {
    const validationStore = useValidationStore()
    const piyangoContactStore = usePiyangoContactStore()

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

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

      validationStore.IsFieldEmpty(piyangoContactStore.contactData,invalidTexts,'adSoyad', 'Ad ve Soyad alanı boş bırakılamaz.')
      validationStore.IsFieldEmpty(piyangoContactStore.contactData,invalidTexts,'telefonNumarasi', 'Bir telefon numarası girmelisiniz.')
      if (!validationStore.checkEmpty(piyangoContactStore.contactData.telefonNumarasi)) {
        if(piyangoContactStore.contactData.telefonNumarasi.length !== 10){
          invalidTexts.telefonNumarasi =
            'Telefon numaranızı başında 0 olmadan 10 hane olarak giriniz.'
          isFormValid.value = false
        } else {
          delete invalidTexts.telefonNumarasi
        }
      }

      if (!validationStore.checkEmpty(piyangoContactStore.contactData.faksNumarasi)) {
        if(piyangoContactStore.contactData.faksNumarasi.length !== 10){
          invalidTexts.faksNumarasi =
            'Faks numaranızı başında 0 olmadan 10 hane olarak giriniz.'
          isFormValid.value = false
        } else {
          delete invalidTexts.faksNumarasi
        }
      }

      validationStore.IsFieldEmpty(piyangoContactStore.contactData,invalidTexts,'eposta', 'Mail adresini girmelisiniz.')
      validationStore.IsFieldEmpty(piyangoContactStore.contactData,invalidTexts,'unvan', 'Başlık alanı boş bırakılamaz.')

      if (!validationStore.checkEmpty(piyangoContactStore.contactData.eposta)) {
        if (!validationStore.checkEmail(piyangoContactStore.contactData.eposta)) {
          invalidTexts.eposta =
            'Lütfen eposta adresinizi doğru formatta giriniz. Örn: isim@alanadi.td'
          isFormValid.value = false
        } else {
          delete invalidTexts.eposta
        }
      }
      isFormValid.value = Object.keys(invalidTexts).length === 0
      return isFormValid.value
    }

    return { invalidTexts, formChanged, FormCheck }
  }
)
