367 lines
15 KiB
TypeScript
367 lines
15 KiB
TypeScript
import { routeLastSegment } from '@/lib/route';
|
|
import { Award, Book, Briefcase, CassetteTape, CreditCard, LayoutDashboard, Newspaper, Receipt, School, Settings, Users } from 'lucide-react';
|
|
|
|
const label = (value: unknown, fallback: string): string => (typeof value === 'string' && value.length ? value : fallback);
|
|
|
|
export default function getDashboardRoutes(translate: LanguageTranslations): DashboardRoute[] {
|
|
const { button, settings } = translate;
|
|
|
|
return [
|
|
{
|
|
title: label(button.main_menu, 'Main Menu'),
|
|
slug: 'main-menu',
|
|
pages: [
|
|
{
|
|
Icon: LayoutDashboard,
|
|
name: label(button.dashboard, 'Dashboard'),
|
|
path: route('dashboard'),
|
|
slug: routeLastSegment(route('dashboard')),
|
|
active: true,
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
children: [],
|
|
},
|
|
{
|
|
Icon: School,
|
|
name: label(button.courses, 'Courses'),
|
|
path: '',
|
|
slug: 'courses',
|
|
active: true,
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.categories, 'Categories'),
|
|
path: route('categories.index'),
|
|
slug: routeLastSegment(route('categories.index')),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.manage_courses, 'Manage Courses'),
|
|
slug: routeLastSegment(route('courses.index')),
|
|
path: route('courses.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.create_course, 'Create Course'),
|
|
slug: routeLastSegment(route('courses.create')),
|
|
path: route('courses.create'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.course_coupons, 'Course Coupons'),
|
|
slug: routeLastSegment(route('course-coupons.index')),
|
|
path: route('course-coupons.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Book,
|
|
name: label(button.exams, 'Exams'),
|
|
path: '',
|
|
slug: 'exams',
|
|
active: true,
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.categories, 'Categories'),
|
|
slug: routeLastSegment(route('exam-categories.index')),
|
|
path: route('exam-categories.index'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.manage_exams, 'Manage Exams'),
|
|
slug: routeLastSegment(route('exams.index')),
|
|
path: route('exams.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.create_exam, 'Create Exam'),
|
|
slug: routeLastSegment(route('exams.create')),
|
|
path: route('exams.create'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.exam_coupons, 'Exam Coupons'),
|
|
slug: routeLastSegment(route('exam-coupons.index')),
|
|
path: route('exam-coupons.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: CassetteTape,
|
|
name: label(button.enrollments, 'Enrollments'),
|
|
path: '',
|
|
slug: 'enrollments',
|
|
active: true,
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.course_enrollments, 'Course Enrollments'),
|
|
slug: routeLastSegment(route('course-enrollments.index')),
|
|
path: route('course-enrollments.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.exam_enrollments, 'Exam Enrollments'),
|
|
slug: routeLastSegment(route('exam-enrollments.index')),
|
|
path: route('exam-enrollments.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Users,
|
|
name: label(button.instructors, 'Instructors'),
|
|
path: '',
|
|
slug: 'instructors',
|
|
active: true,
|
|
access: ['admin', 'collaborative'],
|
|
children: [
|
|
{
|
|
name: label(button.manage_instructors, 'Manage Instructors'),
|
|
slug: routeLastSegment(route('instructors.index')),
|
|
path: route('instructors.index'),
|
|
access: ['admin', 'collaborative'],
|
|
},
|
|
{
|
|
name: label(button.create_instructor, 'Create Instructor'),
|
|
slug: routeLastSegment(route('instructors.create')),
|
|
path: route('instructors.create'),
|
|
access: ['admin', 'collaborative'],
|
|
},
|
|
{
|
|
name: label(button.applications, 'Applications'),
|
|
slug: routeLastSegment(route('instructors.applications')),
|
|
path: route('instructors.applications', {
|
|
status: 'pending',
|
|
}),
|
|
access: ['admin', 'collaborative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Receipt,
|
|
name: label(button.payouts, 'Payouts'),
|
|
path: '',
|
|
slug: 'payouts',
|
|
active: true,
|
|
access: ['instructor', 'collaborative'],
|
|
children: [
|
|
{
|
|
name: label(button.withdraw, 'Withdraw'),
|
|
slug: routeLastSegment(route('payouts.index')),
|
|
path: route('payouts.index'),
|
|
access: ['instructor', 'collaborative'],
|
|
},
|
|
{
|
|
name: label(button.settings, 'Settings'),
|
|
slug: routeLastSegment(route('payouts.settings.index')),
|
|
path: route('payouts.settings.index'),
|
|
access: ['instructor', 'collaborative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Receipt,
|
|
name: label(button.payout_report, 'Payout Report'),
|
|
path: '',
|
|
slug: 'payouts',
|
|
active: true,
|
|
access: ['admin', 'collaborative'],
|
|
children: [
|
|
{
|
|
name: label(button.payout_request, 'Payout Request'),
|
|
slug: routeLastSegment(route('payouts.request.index')),
|
|
path: route('payouts.request.index'),
|
|
access: ['admin', 'collaborative'],
|
|
},
|
|
{
|
|
name: label(button.payout_history, 'Payout History'),
|
|
slug: routeLastSegment(route('payouts.history.index')),
|
|
path: route('payouts.history.index'),
|
|
access: ['admin', 'collaborative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: CreditCard,
|
|
name: label(button.payment_report, 'Payment Report'),
|
|
path: '',
|
|
slug: 'payment-reports',
|
|
active: true,
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.online_payments, 'Online Payments'),
|
|
slug: routeLastSegment(route('payment-reports.online.index')),
|
|
path: route('payment-reports.online.index'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.offline_payments, 'Offline Payments'),
|
|
slug: routeLastSegment(route('payment-reports.offline.index')),
|
|
path: route('payment-reports.offline.index'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Briefcase,
|
|
name: label(button.job_circulars, 'Job Circulars'),
|
|
path: '',
|
|
slug: 'job-circulars',
|
|
active: true,
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.all_jobs, 'All Jobs'),
|
|
slug: routeLastSegment(route('job-circulars.index')),
|
|
path: route('job-circulars.index'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.create_job, 'Create Job'),
|
|
slug: routeLastSegment(route('job-circulars.create')),
|
|
path: route('job-circulars.create'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Book,
|
|
name: label(button.blogs, 'Blogs'),
|
|
path: '',
|
|
slug: 'blogs',
|
|
active: true,
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.categories, 'Categories'),
|
|
slug: routeLastSegment(route('blogs.categories.index')),
|
|
path: route('blogs.categories.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.create_blog, 'Create Blog'),
|
|
slug: routeLastSegment(route('blogs.create')),
|
|
path: route('blogs.create'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.manage_blog, 'Manage Blog'),
|
|
slug: routeLastSegment(route('blogs.index')),
|
|
path: route('blogs.index'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Newspaper,
|
|
name: label(button.newsletters, 'Newsletters'),
|
|
path: route('newsletters.index'),
|
|
slug: routeLastSegment(route('newsletters.index')),
|
|
active: true,
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
children: [],
|
|
},
|
|
{
|
|
Icon: Users,
|
|
name: label(button.all_users, 'All Users'),
|
|
path: route('users.index'),
|
|
slug: routeLastSegment(route('users.index')),
|
|
active: true,
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
children: [],
|
|
},
|
|
{
|
|
Icon: Award,
|
|
name: label(button.certificates, 'Certificates'),
|
|
path: '',
|
|
slug: 'certification',
|
|
active: true,
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.certificate, 'Certificate'),
|
|
slug: routeLastSegment(route('certificate.templates.index')),
|
|
path: route('certificate.templates.index'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.marksheet, 'Marksheet'),
|
|
slug: routeLastSegment(route('marksheet.templates.index')),
|
|
path: route('marksheet.templates.index'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
Icon: Settings,
|
|
name: label(button.settings, 'Settings'),
|
|
path: '',
|
|
slug: 'settings',
|
|
active: true,
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
children: [
|
|
{
|
|
name: label(button.account, 'Account'),
|
|
slug: routeLastSegment(route('settings.account')),
|
|
path: route('settings.account'),
|
|
access: ['admin', 'instructor', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.system, 'System'),
|
|
slug: routeLastSegment(route('settings.system')),
|
|
path: route('settings.system'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.pages, 'Pages'),
|
|
slug: routeLastSegment(route('settings.pages')),
|
|
path: route('settings.pages'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.storage, 'Storage'),
|
|
slug: routeLastSegment(route('settings.storage')),
|
|
path: route('settings.storage'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.payment, 'Payment'),
|
|
slug: routeLastSegment(route('settings.payment')),
|
|
path: route('settings.payment'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.smtp, 'SMTP'),
|
|
slug: routeLastSegment(route('settings.smtp')),
|
|
path: route('settings.smtp'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.auth0, 'Auth'),
|
|
slug: routeLastSegment(route('settings.auth0')),
|
|
path: route('settings.auth0'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(button.live_class, 'Live Class'),
|
|
slug: routeLastSegment(route('settings.live-class')),
|
|
path: route('settings.live-class'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
{
|
|
name: label(settings.translation_settings, 'Translation'),
|
|
slug: routeLastSegment(route('language.index')),
|
|
path: route('language.index'),
|
|
access: ['admin', 'collaborative', 'administrative'],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
];
|
|
}
|