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

export const useCustomerIrtibatValidationStore = defineStore(
  'customerIrtibatValidationStore',
  () => {
    const customerIrtibatStore = useCustomerIrtibatStore()
    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(
        customerIrtibatStore.customerIrtibatForm,
        invalidTexts,
        'firstName',
        'Lütfen adını giriniz.'
      )

      validationStore.IsFieldEmpty(
        customerIrtibatStore.customerIrtibatForm,
        invalidTexts,
        'lastName',
        'Lütfen soyadını giriniz.'
      )

      validationStore.IsFieldEmpty(
        customerIrtibatStore.customerIrtibatForm,
        invalidTexts,
        'phone',
        'Lütfen telefon numarasını giriniz'
      )

      if (!validationStore.checkEmpty(customerIrtibatStore.customerIrtibatForm.email)) {
        if (customerIrtibatStore.customerIrtibatForm.phone.length !== 10) {
          isFormValid.value = false
          invalidTexts.phone =
            'Lütfen telefon numarasını başında 0 olmadan 10 haneli olarak giriniz.'
        } else {
          delete invalidTexts.phone
        }
      }

      validationStore.IsFieldEmpty(
        customerIrtibatStore.customerIrtibatForm,
        invalidTexts,
        'email',
        'Lütfen e-posta adresini giriniz'
      )

      if (!validationStore.checkEmpty(customerIrtibatStore.customerIrtibatForm.email)) {
        if (!validationStore.checkEmail(customerIrtibatStore.customerIrtibatForm.email)) {
          isFormValid.value = false
          invalidTexts.email =
            'Lütfen eposta adresinizi doğru formatta giriniz. Örn: isim@alanadi.td'
        } else {
          delete invalidTexts.email
        }
      }

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

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