import type { UserModuleAccess } from 'src/modules/shared/models/user.models';

export type HelpModuleOptions = {
    label: string;
    path: string;
    description: string;
    icon: string;
};

export type Options = Record<UserModuleAccess, HelpModuleOptions[]>;
export type PartialOptions = Partial<Record<UserModuleAccess, HelpModuleOptions[]>>;

//Shared images and descriptions
import calendar from 'src/assets/help-ss/calendar.png';
import employee_list_display from 'src/assets/help-ss/employee-list-grid.png';
import employee_list_card from 'src/assets/help-ss/employee-list.png';
import search_bar from 'src/assets/help-ss/search-bar.png';

const calendar_nav_desc = "descriptions.shared.calendar";
const display_desc = "descriptions.shared.display";
const search_bar_desc = "descriptions.shared.search";

// Dashboard images and descriptions
import dashboard from 'src/assets/help-ss/dashboard.png';
import menu from 'src/assets/help-ss/dashboard.png';
import notifications from 'src/assets/help-ss/dashboard.png';
import chatbot from 'src/assets/help-ss/dashboard.png';

const menu_desc = "descriptions.dashboard.menu";
const news_feed_desc = "descriptions.dashboard.news_feed";
const chat_bot_desc = "descriptions.dashboard.chat_bot";
const notification_desc = "descriptions.dashboard.notifications";

export const dashboard_options: HelpModuleOptions[] = [
    { label: 'help.tutorial.dashboard.menu', path: dashboard, description: menu_desc, icon: 'menu' },
    { label: 'help.tutorial.dashboard.news_feed', path: menu, description: news_feed_desc, icon: 'newspaper' },
    { label: 'help.tutorial.dashboard.notifications', path: notifications, description: notification_desc, icon: 'notifications_active' },
    { label: 'help.tutorial.dashboard.chat_bot', path: chatbot, description: chat_bot_desc, icon: 'smart_toy' },
];

// profile images and descriptions
import personal_info from 'src/assets/help-ss/personal_infos.png';
import professionnal_info from 'src/assets/help-ss/professionnal_infos.png';
import preferences from 'src/assets/help-ss/preferences.png';

const personal_infos_desc = "descriptions.personal_profile.personal_info";
const professional_info_desc = "descriptions.personal_profile.professional_info";
const preferences_details_desc = "descriptions.personal_profile.preferences";

export const profile_options: HelpModuleOptions[] = [
    { label: 'help.tutorial.personal_profile.personal_info', path: personal_info, description: personal_infos_desc, icon: 'contact_page' },
    { label: 'help.tutorial.personal_profile.professional_info', path: professionnal_info, description: professional_info_desc, icon: 'badge' },
    { label: 'help.tutorial.shared.preferences', path: preferences, description: preferences_details_desc, icon: 'display_settings' },
];

// timesheet images and descriptions
import create_shift from 'src/assets/help-ss/create-shift.png';
import update_shift from 'src/assets/help-ss/update-shift.png';
import delete_shift from 'src/assets/help-ss/delete-shift.png';
import comment_shift from 'src/assets/help-ss/commenting-shift.png';
import create_expense from 'src/assets/help-ss/expenses.png';
import delete_expense from 'src/assets/help-ss/delete-expense.png';
import update_expense from 'src/assets/help-ss/update-expense.png';

const create_shift_desc = "descriptions.timesheets.create_shift";
const update_shift_desc = "descriptions.timesheets.update_shift";
const delete_shift_desc = "descriptions.timesheets.delete_shift";
const comment_shift_desc = "descriptions.timesheets.comment_shift";
const create_expense_desc = "descriptions.timesheets.create_expense";
const update_expense_desc = "descriptions.timesheets.update_expense";
const delete_expense_desc = "descriptions.timesheets.delete_expense";

export const timesheets_options: HelpModuleOptions[] = [
    { label: 'help.tutorial.timesheets.create_shift', path: create_shift, description: create_shift_desc, icon: 'add' },
    { label: 'help.tutorial.timesheets.update_shift', path: update_shift, description: update_shift_desc, icon: 'create' },
    { label: 'help.tutorial.timesheets.delete_shift', path: delete_shift, description: delete_shift_desc, icon: 'las la-trash' },
    { label: 'help.tutorial.timesheets.comment_shift', path: comment_shift, description: comment_shift_desc, icon: 'chat_bubble_outline' },
    { label: 'help.tutorial.timesheets.create_expense', path: create_expense, description: create_expense_desc, icon: 'add' },
    { label: 'help.tutorial.timesheets.update_expense', path: update_expense, description: update_expense_desc, icon: 'create' },
    { label: 'help.tutorial.timesheets.delete_expense', path: delete_expense, description: delete_expense_desc, icon: 'clear' },
    { label: 'help.tutorial.shared.calendar', path: calendar, description: calendar_nav_desc, icon: 'calendar_month' },
];

// employee management images and descriptions
import terminated_employee_display from 'src/assets/help-ss/terminated-employee-list.png';
import create_employee from 'src/assets/help-ss/create-employee.png';
import update_employee from 'src/assets/help-ss/update-employee.png';
import access_management from 'src/assets/help-ss/access-management.png';
import schedule_preset from 'src/assets/help-ss/schedule-preset-management.png';

const terminated_employee_desc = "descriptions.employee_list.terminated_employees";
const terminating_employee_desc = "descriptions.employee_management.terminating_employee";
const create_employee_desc = "descriptions.employee_management.create_employee";
const update_employee_desc = "descriptions.employee_management.update_employee";
const module_access_desc = "descriptions.employee_management.module_access";
const schedule_preset_desc = "descriptions.employee_management.schedule_preset";


export const employee_list_options: HelpModuleOptions[] = [
    { label: 'help.tutorial.shared.display', path: employee_list_card, description: display_desc, icon: 'display_settings' },
    { label: 'help.tutorial.shared.search', path: search_bar, description: search_bar_desc, icon: 'search' },
];

export const employee_management_options: HelpModuleOptions[] = [
    { label: 'help.tutorial.employee_list.terminated_employees', path: terminated_employee_display, description: terminated_employee_desc, icon: 'work_off' },
    { label: 'help.tutorial.employee_management.create_employee', path: create_employee, description: create_employee_desc, icon: 'person_add' },
    { label: 'help.tutorial.employee_management.update_employee', path: update_employee, description: update_employee_desc, icon: 'las la-id-card' },
    { label: 'help.tutorial.employee_management.module_access', path: access_management, description: module_access_desc, icon: 'las la-key' },
    { label: 'help.tutorial.employee_management.schedule_preset', path: schedule_preset, description: schedule_preset_desc, icon: 'calendar_month' },
    { label: 'help.tutorial.employee_management.terminating_employee', path: update_employee, description: terminating_employee_desc, icon: 'work_off' },
    { label: 'help.tutorial.shared.display', path: employee_list_display, description: display_desc, icon: 'display_settings' },
    { label: 'help.tutorial.shared.search', path: search_bar, description: search_bar_desc, icon: 'search' },
];

// Timesheets approval images and descriptions
import comment_expense from 'src/assets/help-ss/timesheet-details.png';
import timesheet_approval_inspect from 'src/assets/help-ss/timesheet-approvals.png';
import timesheet_details from 'src/assets/help-ss/timesheet-details.png';
import timesheet_approval_list from 'src/assets/help-ss/timesheet-appovals-list.png';


const comment_expense_desc = "descriptions.timesheets_approval.comment_expense";
const timesheets_approval_desc = "descriptions.timesheets_approval.approval";
const timesheets_approval_inspect_desc = "descriptions.timesheets_approval.inspect";

export const timesheets_approval_options: HelpModuleOptions[] = [
    { label: 'help.tutorial.timesheets_approval.approval', path: timesheet_approval_inspect, description: timesheets_approval_desc, icon: 'verified' },
    { label: 'help.tutorial.timesheets_approval.inspect', path: timesheet_details, description: timesheets_approval_inspect_desc, icon: 'work_history' },
    { label: 'help.tutorial.timesheets_approval.comment_expense', path: comment_expense, description: comment_expense_desc, icon: 'chat_bubble_outline' },
    { label: 'help.tutorial.shared.display', path: timesheet_approval_list, description: display_desc, icon: 'display_settings' },
    { label: 'help.tutorial.shared.search', path: search_bar, description: search_bar_desc, icon: 'search' },
    { label: 'help.tutorial.shared.calendar', path: calendar, description: calendar_nav_desc, icon: 'calendar_month' },
];


// Chatbot images and descriptions
import chatbot_access from 'src/assets/help-ss/access-management.png';
const chatbot_access_desc = "descriptions.chatbot.access";

export const chatbot_options: HelpModuleOptions[] = [
    { label: 'help.tutorial.chatbot.access', path: chatbot_access, description: chatbot_access_desc, icon: "access"}
];

export const help_module_details: Options = {
    dashboard: [],
    personal_profile: profile_options,
    timesheets: timesheets_options,
    employee_list: employee_list_options,
    employee_management: employee_management_options,
    timesheets_approval: timesheets_approval_options,
    chatbot: [],
};
