import {User} from "@/interfaces/user"; import Link from "next/link"; import FocusLayer from "@/components/FocusLayer"; import {preventNavigation} from "@/utils/navigation.disabled"; import {useRouter} from "next/router"; import {BsList, BsQuestionCircle, BsQuestionCircleFill} from "react-icons/bs"; import clsx from "clsx"; import moment from "moment"; import MobileMenu from "./MobileMenu"; import {useEffect, useState} from "react"; import {Type} from "@/interfaces/user"; import {USER_TYPE_LABELS} from "@/resources/user"; import useGroups from "@/hooks/useGroups"; import {isUserFromCorporate} from "@/utils/groups"; import Button from "./Low/Button"; import Modal from "./Modal"; import Input from "./Low/Input"; import TicketSubmission from "./High/TicketSubmission"; interface Props { user: User; navDisabled?: boolean; focusMode?: boolean; onFocusLayerMouseEnter?: () => void; path: string; } /* eslint-disable @next/next/no-img-element */ export default function Navbar({user, path, navDisabled = false, focusMode = false, onFocusLayerMouseEnter}: Props) { const [isMenuOpen, setIsMenuOpen] = useState(false); const [disablePaymentPage, setDisablePaymentPage] = useState(true); const [isTicketOpen, setIsTicketOpen] = useState(false); const disableNavigation = preventNavigation(navDisabled, focusMode); const expirationDateColor = (date: Date) => { const momentDate = moment(date); const today = moment(new Date()); if (today.add(1, "days").isAfter(momentDate)) return "!bg-mti-red-ultralight border-mti-red-light"; if (today.add(3, "days").isAfter(momentDate)) return "!bg-mti-rose-ultralight border-mti-rose-light"; if (today.add(7, "days").isAfter(momentDate)) return "!bg-mti-orange-ultralight border-mti-orange-light"; }; const showExpirationDate = () => { if (!user.subscriptionExpirationDate) return false; const momentDate = moment(user.subscriptionExpirationDate); const today = moment(new Date()); return today.add(7, "days").isAfter(momentDate); }; useEffect(() => { if (user.type !== "student" && user.type !== "teacher") return setDisablePaymentPage(false); isUserFromCorporate(user.id).then((result) => setDisablePaymentPage(result)); }, [user]); return ( <> setIsTicketOpen(false)} title="Submit a ticket"> setIsTicketOpen(false)} /> {user && setIsMenuOpen(false)} user={user} />}
EnCoach's Logo

EnCoach

{/* OPEN TICKET SYSTEM */} {showExpirationDate() && ( {!user.subscriptionExpirationDate && "Unlimited"} {user.subscriptionExpirationDate && moment(user.subscriptionExpirationDate).format("DD/MM/YYYY")} )} {user.name} {user.type === "corporate" ? `${user.corporateInformation?.companyInformation.name} |` : ""} {user.name} |{" "} {USER_TYPE_LABELS[user.type]}
setIsMenuOpen(true)}>
{focusMode && }
); }