import { RouteNames } from "src/router/router-constants";

export interface ChatbotPageContext {
    name: string;
    description: string;
    features: string[];
    path: RouteNames | null;
}

export const dashboardContext: ChatbotPageContext = {
    name: "Dashboard",
    description: "Landing page containing useful links and a carousel showcasing recent news, as well as a local weather widget in the top right corner",
    features: [
        "Used as a landing platform and navigate the left drawer",
        "Access the AI chatbot from the header",
        "Access common external tools using the links below the news Carousel",
    ],
    path: RouteNames.DASHBOARD,
};

export const leftDrawerContext: ChatbotPageContext = {
    name: "Left Drawer",
    description: "A drawer that acts as a navigation bar, routes to different parts of the website. Some icons will be hidden according to user access",
    features: [
        "The user can navigate to the home page.",
        "Can review and approve timesheets. requires access to timesheet_approval module.",
        "By default, the user can see the full list of employees. Requires user_management module access to edit, add, or view detailed profiles.",
        "Can access the timesheet interface to input employee hours.",
        "Can access your user profile to view information or change your UI preferences (light/dark mode and display language)",
        "Can access the Help page to view common Q&A regarding different modules",
        "Can logout",
    ],
    path: null,
};

export const profileContext: ChatbotPageContext = {
    name: "Profile",
    description: "Display and edit user information",
    features: [
        "View personal information such as first and last name, phone, birthdate and address.",
        "View Career information such as job title, company, supervisor, email and hiring date.",
        "Edit available preferences such as Display options of light and dark mode, as well as display language",
    ],
    path: RouteNames.PROFILE,
};

export const employeeListContext: ChatbotPageContext = {
    name: "Employee List",
    description: "View all the hired and currently active Staff",
    features: [
        "View the list of hired and active employees",
        "Access an individual employee's detailed profile if user has user_management module access",
        "Add, edit, or remove an employee if user has user_management module access",
        "Add, edit, or remove module access for any given employee if user has user_managmenet module access",
        "Add, edit, or remove schedule presets and assign those presets to employees. These presets can then be applied to the employee's timesheet with a single click. Requires user_management module access."
    ],
    path: RouteNames.EMPLOYEE_LIST,
};

export const timesheetApprovalContext: ChatbotPageContext = {
    name: "Timesheet Approval",
    description: "Page where employee hours and shifts are approved for accounting purposes. Requires timesheet_approval module access.",
    features: [
        "See a grid or list view of total hours for all employees in the given 2-week pay period.",
        "Access different periods thanks to the pay period navigator buttons (previous, next, date picker)",
        "Approve the hours for the cards displayed.",
        "Open a detailed dialog window for any employee",
        "The detailed dialog window includes bar and circle charts to visually see employee hours worked daily, the type of shifts worked, and expenses accrued",
        "The detailed dialog window allows the user to edit the any employee's timesheets or expenses",
    ],
    path: RouteNames.TIMESHEET_APPROVALS,
};

export const timesheetContext: ChatbotPageContext = {
    name: "Timesheet",
    description:
        "Page where an employee can enter their hours for their day and week. Display in 2-week pay periods.",
    features: [
        "Enter your in and out times per day",
        "Add and edit what kind of hours your shift was example regular, overtime, vacation etc.",
        "Edit your own shift hours",
        "Delete your shift hours",
        "List your expenses for the week",
        "Add expenses for the week, along with attached files for said expenses",
    ],
    path: RouteNames.TIMESHEET,
};

export const helpContext: ChatbotPageContext = {
    name: "Help",
    description: "page containing common Q&A segments regarding website functionalities",
    features: [
        "Browse by module for common questions and answers",
        "The modules displayed will only be those the user has access to.",
        "Each module consists of a series of Expanding Items. Clicking on a question item reveals the answer beneath.",
        "Each Expanding Item also has its own support image that appears next to the items.",
    ],
    path: RouteNames.HELP,
}

export const PageContexts: Record<RouteNames, ChatbotPageContext | null> = {
    "login": null,
    "login-success": null,
    "error": null,
    "/": dashboardContext,
    "employees": employeeListContext,
    "profile": profileContext,
    "timesheet": timesheetContext,
    "timesheet-approvals": timesheetApprovalContext,
    "help": helpContext,
}
