import { defineStore } from 'pinia'
import { ref, reactive } from 'vue'
import { useGlobalStore } from '@/stores/globalStore'
import { usePiyangoStore } from './piyangoStore'
import { useUsersStore } from '@/stores/usersStore'


export const usePiyangoDosyaKapamaStore = defineStore('piyangoDosyaKapamaStore', () => {
  const globalStore = useGlobalStore()
  const piyangoStore = usePiyangoStore()
  const usersStore = useUsersStore()

  const baseDosyaKapamaData = reactive<Record<string, any>>({
    katilimSekli: '',
    cD: false,
    kutuMuhurlemeTutanagi: false,
    kutuAcmaTutanagi: false,
    cekilisTutanagi: false,
    cekilisIzinAlinanTarihSaatAdres: false,
    oncedenBelirlenenIkramiyeCekilis: false,
    cekilisNumaraUzerindenCekilis: false,
    dagitilmayanKuponTespiti: false,
    cekilisSonucuIlan: false,
    ilandaTarihGazete: false,
    ilandaToplamKatilimci: false,
    cekilisTutanagiIleUyumluKazananlar: false,
    ilanSonBasvuruTeslimSuresi: false,
    taahhutEdilenIkramiyeAdedi: null,
    teslimEdilenIkramiyeAdedi: null,
    asilIkramiyeSayisi: null,
    yedekIkramiyeSayisi: null,
    nufusCuzdani: false,
    noterOnayliIbraname: false,
    teslimBelgesi: false,
    faturaFotokopileri: false,
    tescileAitBelgeler: false,
    sureIcindesAlinmayanIkramiyeAdedi: null,
    tebligat: false,
    feragat: false,
    bagis: false,
    kuponAsli: false,
    duyuruMateryali: false,
    ikramiyelerinSonTeslimTarihi: '',
    teminatIadeTarihi: '',
    cekilisId: piyangoStore.selectedLottery
  })
  const baseDosyaKapamaIkramiyeData = reactive<Record<string, any>>({
    taahhutEdilenIkramiye: '',
    tahhutEdilenIkramiyeAdet: '',
    teslimEdilenIkramiyeAsil: '',
    teslimEdilenIkramiyeYedek: '',
    teslimEdilenIkramiye: '',
    alinmayanIkramiye: '',
    aciklama: '',
    duzenleyenId: usersStore.userId,
    ikramiyeId:'',
    cekilisId: piyangoStore.selectedLottery
  })
  const dosyaKapamaData = reactive<Record<string, any>>({})
  const safeDosyaKapamaData = reactive<Record<string, any>>({})
  const isNew = ref<boolean>(false)
  const isUpdate = ref<boolean>(false)
  const formChanged = ref<boolean>(false)
  const loaded = ref<boolean>(false)

  const dosyaKapamaIkramiyeData = reactive<Record<string, any>>({})
  const safeDosyaKapamaIkramiyeData = reactive<Record<string, any>>({})
  const isDosyaKapamaIkramiyeUpdate = ref<boolean>(false)
  const isDosyaKapamaIkramiyeFormChanged = ref<boolean>(false)
  const isDosyaKapamaIkramiyeLoaded = ref<boolean>(false)
  const dosyaKapamaIkramiyeListesiRefresh = ref<boolean>(false)
  const dosyaKapamaIkramiyePanel = ref<boolean>(false)

  const ResetFormData = () => {
    globalStore.ResetObject(dosyaKapamaData, baseDosyaKapamaData)
    Object.assign(dosyaKapamaData, baseDosyaKapamaData)
  }

  const RestoreFormData = () => {
    globalStore.ResetObject(dosyaKapamaData, baseDosyaKapamaData)
    Object.assign(dosyaKapamaData, safeDosyaKapamaData)
  }

  const ResetIkramiyeFormData = () => {
    globalStore.ResetObject(dosyaKapamaIkramiyeData, baseDosyaKapamaIkramiyeData)
    Object.assign(dosyaKapamaIkramiyeData, baseDosyaKapamaIkramiyeData)
  }

  return {
    baseDosyaKapamaData,
    dosyaKapamaData,
    safeDosyaKapamaData,
    isNew,
    isUpdate,
    formChanged,
    loaded,
    baseDosyaKapamaIkramiyeData,
    dosyaKapamaIkramiyeData,
    safeDosyaKapamaIkramiyeData,
    isDosyaKapamaIkramiyeUpdate,
    isDosyaKapamaIkramiyeFormChanged,
    isDosyaKapamaIkramiyeLoaded,
    dosyaKapamaIkramiyeListesiRefresh,
    dosyaKapamaIkramiyePanel,
    ResetFormData,
    RestoreFormData,
    ResetIkramiyeFormData
  }
})
