<template>
<NuxtLayout name="default" :menu="adminMenu">
  <div class="container-fluid">
    <div class="row">
      <div class="col-12">
        <div v-if="canView">
          <div class="user__container">
            <div class="d-flex justify-content-between align-items-center">
              <div>
                <h3>
                  {{ $t("Notifications") }}
                </h3>
                <p class="text__light text__13">
                  شما {{ list?.length }} اعلان خوانده نشده دارید.
                </p>
              </div>
              <div>
                <button-component
                  @click="openModal"
                  type="button"
                  classes="btn-primary"
                  buttonText="اعلان جدید"
                  title="اعلان جدید"
                >
                </button-component>
              </div>
            </div>
            <ul class="nav nav-tabs">
              <li class="nav-item">
                <button
                  title="همه"
                  type="button"
                  @click.prevent="filterNotifications('all')"
                  class="btn nav-link"
                  :class="{
                    active: activeTab == 'all',
                  }"
                >
                  <span class="badge badge-light">{{ counts?.all?.count }}</span>
                  همه
                </button>
              </li>
              <li class="nav-item">
                <button
                  title="جدید"
                  type="button"
                  @click.prevent="filterNotifications('new')"
                  class="btn nav-link"
                  :class="{
                    active: activeTab == 'new',
                  }"
                >
                  <span class="badge badge-light">{{ counts?.new?.count }}</span>

                  جدید
                </button>
              </li>
              <li class="nav-item">
                <button
                  title="خوانده نشده ها"
                  type="button"
                  @click.prevent="filterNotifications('unseen')"
                  class="btn nav-link"
                  :class="{
                    active: activeTab == 'unseen',
                  }"
                >
                  <span class="badge badge-light">{{ counts?.unseen?.count }}</span>

                  خوانده نشده ها
                </button>
              </li>

              <li class="nav-item">
                <button
                  title="خوانده شده ها"
                  type="button"
                  @click.prevent="filterNotifications('seen')"
                  class="btn nav-link"
                  :class="{
                    active: activeTab == 'seen',
                  }"
                >
                  <span class="badge badge-light">{{ counts?.seen?.count }}</span>

                  خوانده شده ها
                </button>
              </li>
            </ul>

            <the-content-loading
              class="absolute-positioning"
              v-if="fetchingData"
            ></the-content-loading>

            <div v-else>
              <div v-if="list && list.length">
                <div class="notif-list firefox-scrollbar">
                  <notification-item
                    v-for="(item, index) in list"
                    :item="item"
                    :index="index"
                    :key="item._id"
                    @getList="getList()"
                    @go-to-notification-show-page="
                      goToNotificationShowPage(item)
                    "
                  ></notification-item>
                </div>
                <jahat-pagination
                  v-if="pagination.total"
                  :paginationInfo="pagination"
                  @page-changed="pageChanged"
                  @page-limit-changed="pageLimitChanged"
                  @sort-changed="sortChanged"
                >
                </jahat-pagination>
              </div>
              <no-data v-else></no-data>
            </div>
          </div>
        </div>
        <no-data v-else>
          <the-content-loading v-if="fetchingData"></the-content-loading>

          <div v-else class="d-flex justify-content-center align-items-center">
            <div
              class="alert alert-warning d-flex justify-content-center align-items-center"
            >
              <span
                class="tavasi tavasi-warning-circle color-inherit ms-1 text__32"
              ></span>
              عدم دسترسی
            </div>
          </div>
        </no-data>
      </div>
    </div>

    <base-modal
      v-if="showModal"
      modalSize="modal-lg"
      modalTitle="اعلان جدید"
      :hasFooter="false"
      @close="closeModal"
    >
      <AdminNotificationForm
        ref="tabFormBuilder"
        :formData="notificationItem"
        @close-modal="closeModal"
      ></AdminNotificationForm>
    </base-modal>
  </div>
</NuxtLayout>
</template>

<script>
import notificationMixin from "~/mixins/notifications/notificationMixin";
import adminMenu from "~/json/admin/json/menu.json";
import { defineAsyncComponent } from "vue";
export default {
  name: "adminNotifications",
  setup() {
    definePageMeta({
      name: "adminNotifications",
      layout: false,
    });
  },

  extends: notificationMixin,

  mounted() {
    // this.canView = true;
    this.checkPermisionBeforGetList("notification_edit" ).then(() => {
      
      this.getList();
      this.numberOfMark();
    });
  },
  // watch: {
  // $route: {
  //   handler: function () {
  //     this.$store.state.collapsed = false;
  //   },
  //   deep: true,
  //   immediate: true,
  // },
  // },
  data() {
    return {
      showModal: false,
      adminMenu: adminMenu,
    };
  },

  methods: {
    onEditItem(item, index) {
      this.notificationItem = item;
      this.openModal();
    },
    onDeleteItem(item) {
      mySwalConfirm({
        title: "هشدار!!!",
        html: "از حذف این مورد مطمئن هستید؟",
      }).then((result) => {
        if (result.isConfirmed) {
          this.deleteItem(item).then(() => {
            setTimeout(() => {
              this.getList();
            }, 1000);
          });
        }
      });
    },

    openModal() {
      this.showModal = true;

      // setTimeout(() => {
      //   $("#base-modal").modal({ backdrop: "static", keyboard: false }, "show");
      // }, 500);
    },
    closeModal(isCreate = false) {
      // $("#base-modal").modal("hide");
      this.showModal = false;
      if (isCreate)
        setTimeout(() => {
          this.showModal = false;
          this.notificationItem = undefined;
          this.getList();
        }, 1000);
      else
        setTimeout(() => {
          this.showModal = false;
          this.notificationItem = undefined;
          this.getList();
        }, 500);
    },
  },
  components: {
    AdminNotificationForm: defineAsyncComponent(() =>
      import("@/components/admin/modal/AdminNotificationForm.vue")
    ),
  
  },
};

</script>