<script setup lang="ts">
import { ref } from "vue";
import { useQuasar } from "quasar";

import http from "@/plugins/http";
import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin";

import DialogHeader from "@/components/DialogHeader.vue";

const $q = useQuasar();
const { showLoader, hideLoader, success, messageError, dialogConfirm } =
  useCounterMixin(); //เรียกฟังก์ชันกลาง

/**
 * props จาก components Dashborad
 */
const props = defineProps({
  modal: {
    type: Boolean,
    default: false,
  },
  idInbox: {
    type: String,
    default: "",
  },
  clickClose: {
    type: Function,
    default: () => {},
  },
});

const subject = ref<string>(""); // หัวข้อ
const body = ref<string>(""); //ข้อความ

/**
 * ยืนยันการจตอบกลับการส่งข้อความ
 */
function onSubmit() {
  dialogConfirm($q, async () => {
    showLoader();
    await http
      .put(config.API.replyMessage(props.idInbox), {
        subject: subject.value,
        body: body.value,
      })
      .then(() => {
        props.clickClose();
        success($q, "ส่งข้อความสำเร็จ");
      })
      .catch((e) => {
        messageError($q, e);
      })
      .finally(() => {
        hideLoader();
      });
  });
}
</script>

<template>
  <q-dialog v-model="props.modal" persistent>
    <q-card style="width: 40vw; max-width: 40vw">
      <q-form greedy @submit.prevent @validation-success="onSubmit">
        <DialogHeader tittle="ส่งข้อความ" :close="clickClose" />
        <q-separator />
        <q-card-section class="q-pa-sm bg-grey-1">
          <div class="row col-12 q-col-gutter-sm">
            <div class="col-xs-12">
              <div class="col-12 row q-py-sm items-center q-col-gutter-sm">
                <q-input
                  class="full-width inputgreen cursor-pointer"
                  hide-bottom-space
                  outlined
                  dense
                  lazy-rules
                  :rules="[(val:string) => !!val || 'กรุณากรอกหัวข้อ']"
                  v-model="subject"
                  label="หัวข้อ"
                />

                <q-input
                  type="textarea"
                  class="full-width inputgreen cursor-pointer"
                  hide-bottom-space
                  outlined
                  dense
                  lazy-rules
                  :rules="[(val:string) => !!val || 'กรุณากรอกข้อความ']"
                  v-model="body"
                  label="ข้อความ"
                />
              </div>
            </div>
          </div>
        </q-card-section>
        <q-separator />
        <q-card-actions align="right">
          <q-btn label="ส่งข้อความ" color="public" type="submit">
            <q-tooltip>บันทึก</q-tooltip>
          </q-btn>
        </q-card-actions>
      </q-form>
    </q-card>
  </q-dialog>
</template>
