<template>
  <div class="toptitle text-dark col-12 row items-center">
    <q-btn
      icon="mdi-arrow-left"
      unelevated
      round
      dense
      flat
      color="primary"
      class="q-mr-sm"
      @click="router.go(-1)"
    />
    ตรวจสอบการชำระเงิน
  </div>
  <q-list bordered class="col-12 rounded-borders" v-if="bank.length > 0">
    <q-item class="q-pa-md">
      <q-item-section avatar>
        <q-icon name="mdi-cash" color="positive" size="30px" />
      </q-item-section>
      <q-item-section>
        <div class="row">
          <q-item-label class="text-weight-medium text-subtitle1 q-pl-sm"
            >ชำระเงินค่าสมัครสอบผ่านสำนัก/หน่วยงาน</q-item-label
          >
          <q-space />
          <q-btn color="primary" icon="check" @click="modalCheck"
            >ตรวจสอบข้อมูล
          </q-btn>
        </div>
      </q-item-section>
    </q-item>
    <q-separator />
    <q-slide-transition :duration="100" class="">
      <div class="q-pa-md bg-grey-1">
        <div class="row q-col-gutter-sm">
          <div class="col-xs-12 col-sm-7">
            <q-card
              bordered
              class="items-start q-pa-md row q-mb-sm"
              style="height: 300px"
            >
              <div class="row col-12">
                <div class="col-12" v-for="item in bank" :key="item.id">
                  <div class="row q-pl-md col-12">
                    <div class="q-pb-xs col-4">
                      <span class="text-weight-medium">ธนาคาร :</span>
                      <span class="text-blue q-pl-xs">{{ item.bankName }}</span>
                    </div>
                    <div class="q-pb-xs col-4">
                      <span class="text-weight-medium">ชื่อบัญชี :</span>
                      <span class="text-blue q-pl-xs">{{
                        item.accountName
                      }}</span>
                    </div>
                    <div class="q-pb-xs col-4">
                      <span class="text-weight-medium">เลขบัญชี :</span>
                      <span class="text-blue q-pl-xs">
                        {{ item.accountNumber }}</span
                      >
                    </div>
                  </div>
                  <q-separator class="q-my-md" />
                </div>
                <div class="col-12">
                  <div>
                    <q-card bordered class="q-pa-md">
                      <div class="q-pb-sm">
                        <span class="text-weight-medium">รหัสใบสั่งซื้อ :</span>
                        <span class="text-blue q-pl-sm">12837495985900</span>
                      </div>
                      <div>
                        <span class="text-weight-medium">ยอดสุทธิ (บาท) :</span>
                        <span class="text-blue q-pl-sm text-bold">{{
                          fee
                        }}</span>
                      </div>
                    </q-card>
                  </div>
                </div>
              </div>
            </q-card>
          </div>
          <div class="col-xs-12 col-sm-5">
            <label class="col-12 row">
              <q-img
                src="@/assets/ex_slip.jpeg"
                fit="contain"
                style="min-height: 300px; max-height: 300px"
                class="col-12 bg-white"
                v-if="img == ''"
              >
              </q-img>
              <q-img
                :src="img"
                fit="contain"
                style="min-height: 300px; max-height: 300px"
                class="col-12 bg-white"
                @click="openImg"
                v-else
              >
              </q-img>
            </label>
          </div>
        </div>
      </div>
    </q-slide-transition>
  </q-list>
  <q-list bordered class="col-12 rounded-borders" v-else>
    <q-item class="q-pa-md">
      <q-avatar size="32px">
        <q-img src="@/assets/krungthai.png" class="col-12" />
      </q-avatar>
      <q-item-section>
        <div class="row">
          <q-item-label class="text-weight-medium text-subtitle1 q-pl-sm">
            ชำระเงินค่าสมัครสอบผ่านธนาคารกรุงไทย</q-item-label
          >
          <q-space />
          <q-btn color="primary" icon="check" @click="modalCheck"
            >ตรวจสอบข้อมูล
          </q-btn>
        </div>
      </q-item-section>
    </q-item>
    <q-separator />
    <q-slide-transition :duration="100">
      <div class="q-pa-md bg-grey-1">
        <div class="row q-col-gutter-sm">
          <div class="col-xs-12 col-sm-7">
            <q-card bordered class="q-pa-md">
              <div class="q-pb-sm">
                <span class="text-weight-medium">รหัสใบสั่งซื้อ :</span>
                <span class="text-blue q-pl-sm">12837495985900</span>
              </div>
              <div>
                <span class="text-weight-medium">ยอดสุทธิ (บาท) :</span>
                <span class="text-blue q-pl-sm text-bold">{{ fee }}</span>
              </div>
            </q-card>
            <div class="q-pt-md q-pb-xs text-bold">ธนาคารกรุงไทย</div>
            <div class="q-pb-md">สอดบัตร ATM กดรหัสและเลือกรายการ</div>
            <ul class="q-gutter-y-sm">
              <li>ขั้นที่ 1 บริการอื่นๆ</li>
              <li>ขั้นที่ 2 ชำระค่าบริการ</li>
              <li>ขั้นที่ 3 ระบุรหัสบริษัท</li>
              <li>
                ขั้นที่ 4 เลือกบัญชีผู้ชำระเงิน คือ
                บัญชีของตัวท่านว่าเป็นบัญชีออมทรัพย์ หรือ กระแสรายวัน
              </li>
              <li>
                ขั้นที่ 5 ใส่รหัสบริษัทฯ คือ
                <span class="text-blue text-bold">2111</span> และ ใส่ Ref No.1
                ขั้นด้วยเครื่องหมายจุด ( . ) แล้วตามด้วย Ref No.2 (ดูใน
                "ใบแจ้งการชำระเงิน")
              </li>
              <li>
                ยกตัวอย่างเช่น ถ้า Ref No.1 คือ 012345 และ Ref No.2 คือ
                308833ต้องใส่ เป็น 012345.308833
              </li>
              <li>ขั้นที่ 6 ใส่จำนวนเงินที่ชำระรวมหน่วยสตางค์</li>
              <li>ขั้นที่ 7 ตรวจสอบรายการ</li>
            </ul>
          </div>
          <div class="col-xs-12 col-sm-5">
            <label for="file-upload" class="col-12 row">
              <q-img
                src="@/assets/ex_slip.jpeg"
                fit="contain"
                style="min-height: 300px; max-height: 300px"
                class="col-12 bg-white"
                v-if="img == ''"
              >
              </q-img>
              <q-img
                :src="img"
                fit="contain"
                style="min-height: 300px; max-height: 300px"
                class="col-12 bg-white"
                v-else
                @click="openImg"
              >
              </q-img>
            </label>
            <q-file
              id="file-upload"
              v-model="filePayment"
              dense
              label="อัปโหลดหลักฐานชำระเงิน"
              outlined
              use-chips
              multiple
              class="q-pl-sm"
              v-if="status == 'payment' || status == 'rejectPayment'"
            >
              <template v-slot:prepend>
                <q-icon name="attach_file" />
              </template>
            </q-file>
          </div>
        </div>
      </div>
    </q-slide-transition>
  </q-list>

  <q-dialog :model-value="modal" persistent>
    <q-card style="min-width: 700px">
      <q-form ref="myForm">
        <div class="row items-center q-pa-sm">
          <div class="row">
            <div class="text-bold">ตรวจสอบการชำระเงิน</div>
          </div>
          <q-space />
          <q-btn
            icon="close"
            unelevated
            round
            dense
            style="color: #ff8080; background-color: #ffdede"
            size="12px"
            @click="close"
          />
        </div>
        <q-separator />
        <div class="q-pa-sm">
          <div class="col-12 row q-pa-md">
            <q-radio
              v-model="approve"
              checked-icon="task_alt"
              unchecked-icon="panorama_fish_eye"
              val="1"
              label="ผ่านการตรวจสอบคุณสมบัติ"
              dense
              class="col-12"
              @update:modelValue="reason = ''"
            />
            <q-radio
              v-model="approve"
              checked-icon="task_alt"
              unchecked-icon="panorama_fish_eye"
              val="2"
              label="ไม่ผ่านการตรวจสอบคุณสมบัติ(ผู้สมัครแก้ข้อมูลสมัคร)"
              dense
              class="col-12"
            />
            <q-input
              class="col-12"
              outlined
              v-model="reason"
              dense
              lazy-rules
              autofocus
              hide-bottom-space
              v-if="approve == '2'"
              type="textarea"
            ></q-input>
          </div>
        </div>
        <q-separator />
        <q-card-actions align="right" class="bg-white text-teal">
          <q-btn
            flat
            round
            color="public"
            @click="checkSave"
            icon="mdi-content-save-outline"
          >
            <q-tooltip>บันทึกตรวจสอบ</q-tooltip>
          </q-btn>
        </q-card-actions>
      </q-form>
    </q-card>
  </q-dialog>
</template>
<script setup lang="ts">
import { useRoute, useRouter } from "vue-router";
import { onMounted, ref } from "vue";
import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
import config from "@/app.config";

const filePayment = ref<File[]>([]);
const bank = ref<any>([]);
const fee = ref<number>();
const $q = useQuasar();
const router = useRouter();
const mixin = useCounterMixin(); //เรียกฟังก์ชันกลาง
const { success, messageError, showLoader, hideLoader } = mixin;
const route = useRoute();
const examId = ref<string>(route.params.examId.toString());
const candidateId = ref<string>(route.params.candidateId.toString());
const modal = ref<boolean>(false);
const approve = ref<string>("1");
const reason = ref<string>("");
const img = ref<string>("");
const props = defineProps({
  fetchStep: {
    type: Function,
    default: () => console.log("not function"),
  },
  status: {
    type: String,
    required: true,
  },
});

onMounted(async () => {
  hideLoader();
  await fetchPaymentExam();
  await fetchData();
});

const fetchData = async () => {
  showLoader();
  await http
    .get(config.API.candidatePayment(candidateId.value))
    .then((res) => {
      const data = res.data.result;
      img.value = data;
    })
    .catch((e) => {
      messageError($q, e);
    })
    .finally(() => {
      hideLoader();
    });
};

const fetchPaymentExam = async () => {
  showLoader();
  await http
    .get(config.API.periodExamPayment(examId.value))
    .then((res) => {
      const data = res.data.result;
      bank.value = data.bankExam;
      fee.value = data.fee;
    })
    .catch((e) => {
      messageError($q, e);
    })
    .finally(async () => {
      hideLoader();
    });
};

const confirm = async (status: boolean, reason: string) => {
  showLoader();
  await http
    .put(config.API.candidateCheckPayment(candidateId.value), {
      status: status,
      reason: reason,
    })
    .then((res) => {})
    .catch((e) => {
      messageError($q, e);
    })
    .finally(async () => {
      hideLoader();
      success($q, "ตรวจสอบข้อมูลชำระเงินสำเร็จ");
      router.push(`/qualify/manage/${examId.value}`);
    });
};

const checkSave = () => {
  if (approve.value == "1") {
    confirm(true, "");
  } else {
    confirm(false, reason.value);
  }
};

const openImg = () => {
  window.open(img.value);
};

const modalCheck = () => {
  modal.value = true;
};

const close = () => {
  modal.value = false;
};
</script>
