This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class SyncEnrollmentAdministrationNavRoles extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
if (! $this->db->tableExists('nav_items') || ! $this->db->tableExists('role_nav_items')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$nav = $this->db->table('nav_items')
|
||||
->select('id')
|
||||
->where('url', 'administrator/enrollment-admin')
|
||||
->limit(1)
|
||||
->get()
|
||||
->getRowArray();
|
||||
|
||||
if ($nav === null) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->grantRoles((int) $nav['id'], [
|
||||
'administrator',
|
||||
'principal',
|
||||
'vice_principal',
|
||||
'head of department (education)',
|
||||
]);
|
||||
|
||||
cache()->clean();
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
}
|
||||
|
||||
private function grantRoles(int $navItemId, array $roleNames): void
|
||||
{
|
||||
if (! $this->db->fieldExists('role_id', 'role_nav_items') || ! $this->db->tableExists('roles')) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($roleNames as $roleName) {
|
||||
$roleBuilder = $this->db->table('roles')->select('id');
|
||||
$roleBuilder->groupStart()
|
||||
->where('LOWER(name)', strtolower($roleName));
|
||||
if ($this->db->fieldExists('slug', 'roles')) {
|
||||
$roleBuilder->orWhere('LOWER(slug)', strtolower($roleName));
|
||||
}
|
||||
$role = $roleBuilder->groupEnd()
|
||||
->limit(1)
|
||||
->get()
|
||||
->getRowArray();
|
||||
|
||||
if ($role === null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$exists = $this->db->table('role_nav_items')
|
||||
->where('role_id', (int) $role['id'])
|
||||
->where('nav_item_id', $navItemId)
|
||||
->countAllResults() > 0;
|
||||
|
||||
if (! $exists) {
|
||||
$this->db->table('role_nav_items')->insert([
|
||||
'role_id' => (int) $role['id'],
|
||||
'nav_item_id' => $navItemId,
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user