recreate project
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Seeds;
|
||||
|
||||
use CodeIgniter\Database\Seeder;
|
||||
|
||||
class NavSeeder extends Seeder
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
$db = \Config\Database::connect();
|
||||
|
||||
// Top-level groups (dropdown headers are just parents with no URL)
|
||||
$groups = [
|
||||
['label'=>'Users', 'url'=>null, 'sort_order'=>10],
|
||||
['label'=>'Roles', 'url'=>null, 'sort_order'=>20],
|
||||
['label'=>'Configuration', 'url'=>null, 'sort_order'=>30],
|
||||
['label'=>'Staffing', 'url'=>null, 'sort_order'=>40],
|
||||
['label'=>'Parents', 'url'=>null, 'sort_order'=>50],
|
||||
['label'=>'Student-Affairs', 'url'=>null, 'sort_order'=>60],
|
||||
['label'=>'Classes', 'url'=>null, 'sort_order'=>70],
|
||||
['label'=>'Communication', 'url'=>null, 'sort_order'=>80],
|
||||
['label'=>'Financial', 'url'=>null, 'sort_order'=>90],
|
||||
['label'=>'Printables', 'url'=>null, 'sort_order'=>100],
|
||||
['label'=>'Event Management', 'url'=>null, 'sort_order'=>110],
|
||||
];
|
||||
|
||||
$builder = $db->table('nav_items');
|
||||
$ids = [];
|
||||
foreach ($groups as $g) {
|
||||
$builder->insert([
|
||||
'parent_id' => null,
|
||||
'label' => $g['label'],
|
||||
'url' => null,
|
||||
'sort_order' => $g['sort_order'],
|
||||
'is_enabled' => 1,
|
||||
'created_at' => utc_now()
|
||||
]);
|
||||
$ids[$g['label']] = $db->insertID();
|
||||
}
|
||||
|
||||
// Children for Users
|
||||
$items = [
|
||||
['parent'=>'Users', 'label'=>'Active Notifications', 'url'=>'notifications/active', 'sort_order'=>1],
|
||||
['parent'=>'Users', 'label'=>'Deleted Notifications','url'=>'notifications/deleted','sort_order'=>2],
|
||||
['parent'=>'Users', 'label'=>'Login Activity', 'url'=>'user/login_activity', 'sort_order'=>3],
|
||||
['parent'=>'Users', 'label'=>'User List', 'url'=>'user/user_list', 'sort_order'=>4],
|
||||
|
||||
// Roles
|
||||
['parent'=>'Roles', 'label'=>'Assign User Role', 'url'=>'rolepermission/assign_role', 'sort_order'=>1],
|
||||
['parent'=>'Roles', 'label'=>'Role Management', 'url'=>'rolepermission/roles', 'sort_order'=>2],
|
||||
|
||||
// Configuration
|
||||
['parent'=>'Configuration','label'=>'Add/Edit Configuration','url'=>'configuration/configuration_view','sort_order'=>1],
|
||||
|
||||
// Staffing
|
||||
['parent'=>'Staffing','label'=>'Staff Profile','url'=>'staff/index','sort_order'=>1],
|
||||
['parent'=>'Staffing','label'=>'Teacher Class Assignment','url'=>'administrator/teacher_class_assignment','sort_order'=>2],
|
||||
|
||||
// Parents
|
||||
['parent'=>'Parents','label'=>'Parent Profile','url'=>'administrator/parent_profiles','sort_order'=>1],
|
||||
|
||||
// Student-Affairs
|
||||
['parent'=>'Student-Affairs','label'=>'Attendance Management','url'=>'administrator/daily_attendance','sort_order'=>1],
|
||||
['parent'=>'Student-Affairs','label'=>'Attendance Tracking System','url'=>'attendance/violations','sort_order'=>2],
|
||||
['parent'=>'Student-Affairs','label'=>'Attendance Scans','url'=>'rfid_coming_soon','sort_order'=>3],
|
||||
['parent'=>'Student-Affairs','label'=>'Classes List','url'=>'administrator/class_assignment','sort_order'=>4],
|
||||
['parent'=>'Student-Affairs','label'=>'Emergency Contact','url'=>'administrator/emergency_contact','sort_order'=>5],
|
||||
['parent'=>'Student-Affairs','label'=>'Enrollment-Withdrawal','url'=>'enroll_withdraw/enrollment_withdrawal','sort_order'=>6],
|
||||
['parent'=>'Student-Affairs','label'=>'Flags Management','url'=>'flags/flags_management','sort_order'=>7],
|
||||
['parent'=>'Student-Affairs','label'=>'School Calendar','url'=>'administrator/calendar_view','sort_order'=>8],
|
||||
['parent'=>'Student-Affairs','label'=>'Score Analysis','url'=>'report/combined','sort_order'=>9],
|
||||
['parent'=>'Student-Affairs','label'=>'Score Management','url'=>'grading','sort_order'=>10],
|
||||
['parent'=>'Student-Affairs','label'=>'Student Class Assignment','url'=>'administrator/student_class_assignment','sort_order'=>11],
|
||||
['parent'=>'Student-Affairs','label'=>'Student Profile','url'=>'administrator/student_profiles','sort_order'=>12],
|
||||
|
||||
// Classes
|
||||
['parent'=>'Classes','label'=>'Classes List','url'=>'administrator/class_assignment','sort_order'=>1],
|
||||
|
||||
// Communication
|
||||
['parent'=>'Communication','label'=>'Parent Email Extractor','url'=>'emails/parent_email_extractor','sort_order'=>1],
|
||||
['parent'=>'Communication','label'=>'Parent Profile','url'=>'administrator/parent_profiles','sort_order'=>2],
|
||||
['parent'=>'Communication','label'=>'Student Profile','url'=>'administrator/student_profiles','sort_order'=>3],
|
||||
|
||||
// Financial
|
||||
['parent'=>'Financial','label'=>'Discount Management','url'=>'discounts/list','sort_order'=>1],
|
||||
['parent'=>'Financial','label'=>'Expenses Management','url'=>'expenses/index','sort_order'=>2],
|
||||
['parent'=>'Financial','label'=>'Financial Report','url'=>'payment/financial_report','sort_order'=>3],
|
||||
['parent'=>'Financial','label'=>'Invoices Management','url'=>'invoice_payment/invoice_management','sort_order'=>4],
|
||||
['parent'=>'Financial','label'=>'Manual Payment','url'=>'payment/manual_pay','sort_order'=>5],
|
||||
['parent'=>'Financial','label'=>'PaypalTransactions','url'=>'administrator/paypal_transactions','sort_order'=>6],
|
||||
['parent'=>'Financial','label'=>'Refund Management','url'=>'refunds/list','sort_order'=>7],
|
||||
['parent'=>'Financial','label'=>'Reimbursement Management','url'=>'reimbursements/index','sort_order'=>8],
|
||||
|
||||
// Printables
|
||||
['parent'=>'Printables','label'=>'Badges','url'=>'printables_reports/badge_form','sort_order'=>1],
|
||||
['parent'=>'Printables','label'=>'Class Prep','url'=>'class-prep','sort_order'=>2],
|
||||
['parent'=>'Printables','label'=>'Report Cards','url'=>'printables_reports/report_card','sort_order'=>3],
|
||||
['parent'=>'Printables','label'=>'Stickers','url'=>'printables_reports/stickers','sort_order'=>4],
|
||||
|
||||
// Event Management
|
||||
['parent'=>'Event Management','label'=>'Calendar','url'=>'administrator/calendar','sort_order'=>1],
|
||||
['parent'=>'Event Management','label'=>'Events','url'=>'administrator/events','sort_order'=>2],
|
||||
];
|
||||
|
||||
foreach ($items as $it) {
|
||||
$builder->insert([
|
||||
'parent_id' => $ids[$it['parent']] ?? null,
|
||||
'label' => $it['label'],
|
||||
'url' => $it['url'],
|
||||
'sort_order' => $it['sort_order'],
|
||||
'is_enabled' => 1,
|
||||
'created_at' => utc_now(),
|
||||
]);
|
||||
}
|
||||
|
||||
// Map roles quickly: give full menu to administrator & principal; a subset to others
|
||||
$roleMap = $db->table('role_nav_items');
|
||||
$navRows = $db->table('nav_items')->orderBy('id')->get()->getResultArray();
|
||||
|
||||
$grantAllTo = ['administrator','principal','vice_principal'];
|
||||
foreach ($navRows as $row) {
|
||||
foreach ($grantAllTo as $role) {
|
||||
$roleMap->insert([
|
||||
'role' => strtolower($role),
|
||||
'nav_item_id' => $row['id'],
|
||||
'created_at' => utc_now()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Example: "admin" (limited)
|
||||
$limitForAdmin = ['Enrollment-Withdrawal','Invoices Management'];
|
||||
foreach ($navRows as $row) {
|
||||
if (in_array($row['label'], $limitForAdmin, true)) {
|
||||
$roleMap->insert([
|
||||
'role' => 'admin',
|
||||
'nav_item_id' => $row['id'],
|
||||
'created_at' => utc_now()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Example: HOD Communication
|
||||
$hodComm = ['Communication','Parent Profile','Student Profile','Parent Email Extractor'];
|
||||
foreach ($navRows as $row) {
|
||||
if (in_array($row['label'], $hodComm, true)) {
|
||||
$roleMap->insert([
|
||||
'role' => 'head of department (communication)',
|
||||
'nav_item_id' => $row['id'],
|
||||
'created_at' => utc_now()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Example: HOD Education (Student-Affairs group)
|
||||
$hodEduLabels = ['Student-Affairs','Attendance Management','Classes List','Emergency Contact','Enrollment-Withdrawal','Flags Management','School Calendar','Score Analysis','Score Management','Student Class Assignment','Student Profile'];
|
||||
foreach ($navRows as $row) {
|
||||
if (in_array($row['label'], $hodEduLabels, true)) {
|
||||
$roleMap->insert([
|
||||
'role' => 'head of department (education)',
|
||||
'nav_item_id' => $row['id'],
|
||||
'created_at' => utc_now()
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
// Example: HOD IT (Grades)
|
||||
foreach ($navRows as $row) {
|
||||
if (in_array($row['label'], ['Score Management'], true)) {
|
||||
$roleMap->insert([
|
||||
'role' => 'head of department (information technology)',
|
||||
'nav_item_id' => $row['id'],
|
||||
'created_at' => utc_now()
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user