<template>
  <form-select
    @change="OnIkramiyeChanged"
    modelKey="ikramiyeId"
    clearable
    label="Kazandığı İkramiye"
    :listData="piyangoIkramiyeStore.piyangoAllIkramiyeData"
    listText="cinsi"
    listVal="id"
    v-model="selectedIkramiye"
    :invalidText="
      piyangoDosyaKapamaValidationStore.ikramiyeInvalidTexts.tahhutEdilenIkramiye
    ">
    <template #activator="data">
      {{
        data.activatorData !== undefined &&
        Object.keys(data.activatorData).length > 0 &&
        selectedIkramiye !== null
          ? data.activatorData.cinsi +
            ', ' +
            data.activatorData.marka +
            ', ' +
            data.activatorData.model +
            ' (' +
            data.activatorData.asilTalihliAdedi +
            ' adet)'
          : 'Lütfen Seçim Yapınız'
      }}
    </template>
    <template #option="data">
      {{
        data.optionData.cinsi +
        ', ' +
        data.optionData.marka +
        ', ' +
        data.optionData.model +
        ' (' +
        data.optionData.asilTalihliAdedi +
        ' adet)'
      }}
    </template>
  </form-select>
  <div class="form-item">Toplam İkramiye: {{ totalIkramiye }}</div>
  <form-input
    v-model="piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeAsil"
    label="Teslim Edilen İkramiye Asil Adet"
    modelKey="teslimEdilenIkramiyeAsil"
    :invalidText="
      piyangoDosyaKapamaValidationStore.ikramiyeInvalidTexts.teslimEdilenIkramiyeAsil
    "
    @keydown="validationStore.allowNumbersWithKeys"
    @keyup="CalculateAlinmayanIkramiye" />
  <form-input
    v-model="piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeYedek"
    label="Teslim Edilen İkramiye Yedek Adet"
    modelKey="teslimEdilenIkramiyeYedek"
    :invalidText="
      piyangoDosyaKapamaValidationStore.ikramiyeInvalidTexts.teslimEdilenIkramiyeYedek
    "
    @keydown="validationStore.allowNumbersWithKeys"
    @keyup="CalculateAlinmayanIkramiye" />
  <form-input
    disabled
    v-model="piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.alinmayanIkramiye"
    label="Alınmayan İkramiye Adet"
    modelKey="alinmayanIkramiye"
    :invalidText="
      piyangoDosyaKapamaValidationStore.ikramiyeInvalidTexts.alinmayanIkramiye
    " />
  <form-input
    v-model="piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.aciklama"
    label="Açıklama"
    modelKey="aciklama" />
</template>
<script setup lang="ts">
  import { onBeforeMount, ref } from 'vue'
  import { useValidationStore } from '@/stores/validationStore'
  const validationStore = useValidationStore()
  import { usePiyangoDosyaKapamaStore } from '../../stores/piyangoDosyaKapamaStore'
  const piyangoDosyaKapamaStore = usePiyangoDosyaKapamaStore()
  import { usePiyangoDosyaKapamaValidationStore } from '../../validation/piyangoDosyaKapamaValidationStore'
  const piyangoDosyaKapamaValidationStore = usePiyangoDosyaKapamaValidationStore()
  import { usePiyangoIkramiyeService } from '../../service/piyangoIkramiyeService'
  const piyangoIkramiyeService = usePiyangoIkramiyeService()
  import { usePiyangoIkramiyeStore } from '../../stores/piyangoIkramiyeStore'
  const piyangoIkramiyeStore = usePiyangoIkramiyeStore()

  const selectedIkramiye = ref<string | number | null>(null)
  const totalIkramiye = ref<number | null>(null)

  const CalculateAlinmayanIkramiye = () => {
    piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.alinmayanIkramiye =
      Number(totalIkramiye.value) -
      Number(
        piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeAsil || 0
      ) -
      Number(
        piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeYedek || 0
      )

    piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiye =
      Number(
        piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeAsil || 0
      ) +
      Number(
        piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.teslimEdilenIkramiyeYedek || 0
      )
  }

  const OnIkramiyeChanged = (e: Event, val: any, item: Record<string, any>) => {

    piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.ikramiyeId = item.id

    piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.tahhutEdilenIkramiye = `
    ${item.cinsi}, ${item.marka}, ${item.model}, (${item.asilTalihliAdedi} adet)
    `

    piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.tahhutEdilenIkramiyeAdet =
      item.asilTalihliAdedi
  }

  onBeforeMount(async () => {
    if (piyangoIkramiyeStore.piyangoAllIkramiyeData.length === 0)
      await piyangoIkramiyeService.GetAllIkramiyeler()

    piyangoIkramiyeStore.piyangoAllIkramiyeData.forEach((item) => {
      if (
        `${item.cinsi}, ${item.marka}, ${item.model}, (${item.asilTalihliAdedi} adet)` ===
        piyangoDosyaKapamaStore.dosyaKapamaIkramiyeData.tahhutEdilenIkramiye
      ) {
        selectedIkramiye.value = item.id
      }
    })
    totalIkramiye.value = piyangoIkramiyeStore.piyangoAllIkramiyeData.reduce(
      (acc, item) => acc + (item.asilTalihliAdedi || 0),
      0
    )
  })
</script>
