<template>
  <el-dropdown class="notification">
    <el-button type="primary">
      <font-awesome-icon icon="fa-solid fa-envelope" />
      Notification<el-icon class="el-icon--right"><arrow-down /></el-icon>
    </el-button>
    <template #dropdown>
      <el-dropdown-menu>
        <el-dropdown-item v-for="offer in offers" :key="offer.offerId">
          <router-link
            :to="
              '/matched-result/' + offer.offerId + '/' + offer.wishlistItemId
            "
          >
            You have a offer matched (click to check details)
          </router-link>
        </el-dropdown-item>
        <el-dropdown-item v-for="offer in offers2" :key="offer.offerId">
          <router-link
            :to="
              '/matched-result/' + offer.offerId + '/' + offer.wishlistItemId
            "
          >
            You have a wishlist matched (click to check details)
          </router-link>
        </el-dropdown-item>
      </el-dropdown-menu>
    </template>
  </el-dropdown>
</template>

<script setup lang="ts">
import { ref, watch } from "vue";
import { OfferNotification } from "@/models/OfferNotification";
import * as NotificationService from "@/services/NotificationService";
import { useRoute } from "vue-router";
import { onMounted } from "vue";

const route = useRoute();

function getCookie(userId: string) {
  const value = `; ${document.cookie}`;
  const parts: string[] = value.split(`; ${userId}=`);
  if (parts.length === 2) return parts?.pop()?.split(";").shift();
}

const offers = ref([] as OfferNotification[]);
const offers2 = ref([] as OfferNotification[]);
async function fetchNotification(userId: number) {
  const response = await NotificationService.getNotificationFromServerWithID(
    userId
  );
  // const response2 =
  //   await NotificationService.getNotificationwishFromServerWithID(userId);
  // console.log(response2);
  offers.value = response.data;
  // offers2.value = response2.data;
}

async function fetchNotificationwish(userId: number) {
  const response2 =
    await NotificationService.getNotificationwishFromServerWithID(userId);
  offers2.value = response2.data;
}

watch(
  () => route.name,
  (values) => {
    const userIdString: string = getCookie("userId");
    let userIdNumber = +userIdString;
    fetchNotification(userIdNumber);
    fetchNotificationwish(userIdNumber);
  },
  { immediate: true }
);
</script>

<style scoped>
.notification {
  margin: auto;
  justify-content: space-between;
}
.example-showcase .el-dropdown + .el-dropdown {
  margin-left: 15px;
}
.example-showcase .el-dropdown-link {
  cursor: pointer;
  color: var(--el-color-primary);
  display: flex;
  align-items: center;
}
</style>