<script setup lang="ts">
import { ref, reactive, onMounted } from "vue";
import { useQuasar } from "quasar";
import { useRoute } from "vue-router";
import http from "@/plugins/http";
import config from "@/app.config";

import type { FormCommand } from "@/modules/12_evaluatePersonal/interface/index/evalute";

import { useCounterMixin } from "@/stores/mixin";
const route = useRoute();
const $q = useQuasar();

const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError } = mixin;

const id = ref<string>(route.params.id as string); //id ประเมิน
/** ฟรอมจัดเตรียมเอกสารเล่ม 1*/
const subject = ref<string>(""); //ชื่อผลงาน
const author = ref<string>(""); //เจ้าของผลงาน
const formCommand = reactive<FormCommand>({
  elementaryFullName: "", //ชื่อ-นามสกุลผู้บังคับบัญชาชั้นต้น
  elementaryPosition: "", //ตำแหน่งผู้บังคับบัญชาชั้นต้น
  abovelevelFullname: "", //ชื่อ-นามสกุลผู้บังคับบัญชาเหนือขึ้นไป 1 ระดับ
  abovelevelPosition: "", //ตำแหน่งผู้บังคับบัญชาเหนือขึ้นไป 1 ระดับ
});

/**
 * function เรียกข้อมลผลงาน
 */
async function fetchSigner() {
  showLoader();
  await http
    .get(config.API.evaluationSigner(id.value, 1))
    .then((res) => {
      const data = res.data.result;
      if (data) {
        formCommand.elementaryFullName =
          data == null ? "" : data.commanderFullname;
        formCommand.elementaryPosition =
          data == null ? "" : data.commanderPosition;
        formCommand.abovelevelFullname =
          data == null ? "" : data.commanderAboveFullname;
        formCommand.abovelevelPosition =
          data == null ? "" : data.commanderAbovePosition;
        author.value = data.author;
        subject.value = data.subject;
      }
    })
    .catch((e) => {
      messageError($q, e);
    })
    .finally(() => {
      setTimeout(() => {
        hideLoader();
      }, 1000);
    });
}

/**
 * ทำงานเมือ Components ถูกเรียกใช้งาน
 */
onMounted(async () => {
  await fetchSigner();
});
</script>

<template>
  <div class="q-pa-sm col-12">
    <div class="row q-col-gutter-sm">
      <!-- ผลงาน -->
      <div class="col-12">
        <q-card bordered style="border: 1px solid #d6dee1">
          <div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">ผลงาน</div>
          <div class="col-12"><q-separator /></div>
          <div class="row">
            <div class="col-12 q-pa-sm">
              <div class="row q-col-gutter-sm col-12">
                <div class="col-xs-12 col-sm-12 row">
                  <div class="row col-12 q-col-gutter-sm">
                    <q-input
                      readonly
                      dense
                      class="col-xs-12 col-sm-6"
                      outlined
                      label="ชื่อผลงาน"
                      v-model="subject"
                      :rules="[(val:string) => !!val || `${'กรุณากรอกชื่อผลงาน'}`]"
                      lazy-rules
                      hide-bottom-space
                    />
                    <q-input
                      readonly
                      class="col-xs-12 col-sm-6"
                      dense
                      outlined
                      v-model="author"
                      label="เจ้าของผลงาน"
                      :rules="[(val:string) => !!val || `${'กรุณากรอกเจ้าของผลงาน'}`]"
                      lazy-rules
                      hide-bottom-space
                    />
                  </div>
                </div>
              </div>
            </div>
          </div>
        </q-card>
      </div>

      <!-- เลือกผู้เซ็นเอกสาร -->
      <div class="col-12">
        <q-card bordered style="border: 1px solid #d6dee1">
          <div class="text-weight-medium bg-grey-1 q-py-sm q-px-md">
            เลือกผู้เซ็นเอกสาร
          </div>
          <div class="col-12"><q-separator /></div>
          <div class="row">
            <div class="col-12 q-pa-sm">
              <div class="row q-col-gutter-sm col-12">
                <div class="col-xs-12 col-sm-12 row">
                  <div class="text-weight-medium q-py-xs q-pl-sm">
                    ผู้บังคับบัญชาชั้นต้น
                  </div>
                  <div class="row col-12 q-col-gutter-sm">
                    <q-input
                      readonly
                      ref="elementaryFullNameRef"
                      dense
                      class="col-xs-12 col-sm-6"
                      outlined
                      label="ชื่อ-นามสกุล"
                      v-model="formCommand.elementaryFullName"
                      :rules="[(val:string) => !!val || `${'กรุณากรอกชื่อ-นามสกุล'}`]"
                      lazy-rules
                      hide-bottom-space
                    />
                    <q-input
                      readonly
                      ref="elementaryPositonRef"
                      class="col-xs-12 col-sm-6"
                      dense
                      outlined
                      v-model="formCommand.elementaryPosition"
                      label="ตำแหน่ง"
                      :rules="[(val:string) => !!val || `${'กรุณากรอกตำแหน่ง'}`]"
                      lazy-rules
                      hide-bottom-space
                    />
                  </div>
                </div>
              </div>

              <div class="row q-col-gutter-sm col-12">
                <div class="col-xs-12 col-sm-12 row">
                  <div class="text-weight-medium q-pl-sm q-pt-md q-mb-xs">
                    ผู้บังคับบัญชาเหนือขึ้นไป 1 ระดับ
                  </div>
                  <div class="row col-12 q-col-gutter-sm">
                    <q-input
                      readonly
                      ref="abovelevelFullnameRef"
                      dense
                      class="col-xs-12 col-sm-6"
                      outlined
                      v-model="formCommand.abovelevelFullname"
                      label="ชื่อ-นามสกุล"
                      :rules="[(val:string) => !!val || `${'กรุณากรอกชื่อ-นามสกุล'}`]"
                      lazy-rules
                      hide-bottom-space
                    />
                    <q-input
                      ref="abovelevelPositionRef"
                      class="col-xs-12 col-sm-6"
                      dense
                      readonly
                      outlined
                      v-model="formCommand.abovelevelPosition"
                      label="ตำแหน่ง"
                      :rules="[(val:string) => !!val || `${'กรุณากรอกตำแหน่ง'}`]"
                      lazy-rules
                      hide-bottom-space
                    />
                  </div>
                </div>
              </div>
            </div>
          </div>
        </q-card>
      </div>
    </div>
  </div>
</template>

<style scoped></style>
