'affiliatesadmin', 'modules_display_name' => 'Gerenciamento de Afiliados', 'modules_description' => 'Módulo administrativo para gerenciar afiliados, comissões e banners', 'modules_version' => '1.0.0', 'modules_author' => 'SysCMS Team', 'modules_dependencies' => json_encode(['auth']), 'modules_ative' => 1, 'modules_public' => 0, 'modules_blocked' => 0, 'modules_settings' => json_encode([ 'commission_rate_default' => 10, 'commission_min_payout' => 50, 'banner_default_width' => 300, 'banner_default_height' => 250 ]), 'modules_permissions' => json_encode([ 'affiliatesadmin.affiliates.view', 'affiliatesadmin.affiliates.create', 'affiliatesadmin.affiliates.edit', 'affiliatesadmin.affiliates.delete', 'affiliatesadmin.commissions.view', 'affiliatesadmin.commissions.approve', 'affiliatesadmin.commissions.reject', 'affiliatesadmin.commissions.pay', 'affiliatesadmin.banners.view', 'affiliatesadmin.banners.create', 'affiliatesadmin.banners.edit', 'affiliatesadmin.banners.delete', 'affiliatesadmin.statistics.view' ]), 'modules_path' => 'modules/affiliatesadmin', 'modules_namespace' => 'Modules\\AffiliatesAdmin', 'modules_icon' => 'bi bi-people', 'menu_side_bar' => 1, 'menu_nav_bar' => 0, 'modules_order' => 80, 'modules_install_date' => date('Y-m-d H:i:s'), 'modules_update_date' => date('Y-m-d H:i:s') ], [ 'modules_name' => 'affiliates', 'modules_display_name' => 'Área de Afiliados', 'modules_description' => 'Módulo para afiliados gerenciarem sua conta e banners', 'modules_version' => '1.0.0', 'modules_author' => 'SysCMS Team', 'modules_dependencies' => json_encode(['auth', 'affiliatesadmin']), 'modules_ative' => 1, 'modules_public' => 1, 'modules_blocked' => 0, 'modules_settings' => null, 'modules_permissions' => json_encode([ 'affiliates.dashboard.view', 'affiliates.banners.view', 'affiliates.banners.get_code', 'affiliates.commissions.view', 'affiliates.profile.view', 'affiliates.profile.edit' ]), 'modules_path' => 'modules/affiliates', 'modules_namespace' => 'Modules\\Affiliates', 'modules_icon' => 'bi bi-person-badge', 'menu_side_bar' => 0, 'menu_nav_bar' => 0, 'modules_order' => 90, 'modules_install_date' => date('Y-m-d H:i:s'), 'modules_update_date' => date('Y-m-d H:i:s') ] ]; foreach ($modules as $moduleData) { $moduleName = $moduleData['modules_name']; $existing = Capsule::table('modules')->where('modules_name', $moduleName)->first(); if (!$existing) { $moduleId = Capsule::table('modules')->insertGetId($moduleData); } else { $moduleId = $existing->modules_id; Capsule::table('modules')->where('modules_name', $moduleName)->update([ 'modules_display_name' => $moduleData['modules_display_name'], 'modules_description' => $moduleData['modules_description'], 'modules_version' => $moduleData['modules_version'], 'modules_author' => $moduleData['modules_author'], 'modules_dependencies' => $moduleData['modules_dependencies'], 'modules_ative' => $moduleData['modules_ative'], 'modules_public' => $moduleData['modules_public'], 'modules_blocked' => $moduleData['modules_blocked'], 'modules_settings' => $moduleData['modules_settings'], 'modules_permissions' => $moduleData['modules_permissions'], 'modules_path' => $moduleData['modules_path'], 'modules_namespace' => $moduleData['modules_namespace'], 'modules_icon' => $moduleData['modules_icon'], 'menu_side_bar' => $moduleData['menu_side_bar'], 'menu_nav_bar' => $moduleData['menu_nav_bar'], 'modules_order' => $moduleData['modules_order'], 'modules_update_date' => date('Y-m-d H:i:s') ]); } // Associate module with all existing companies in 'bus_modules' if (Capsule::schema()->hasTable('bus')) { $companies = Capsule::table('bus')->get(); foreach ($companies as $company) { $existingBusModule = Capsule::table('bus_modules') ->where('bus_modules_bus_id', $company->bus_id) ->where('bus_modules_module_id', $moduleId) ->first(); if (!$existingBusModule) { Capsule::table('bus_modules')->insert([ 'bus_modules_bus_id' => $company->bus_id, 'bus_modules_module_id' => $moduleId, 'bus_modules_is_enabled' => 1, 'bus_modules_show_public_nav' => $moduleData['modules_public'], 'bus_modules_show_dashboard_nav' => 1 ]); } } } } // Register permissions in 'role_permissions' table for admin and member roles $permissions = [ // AffiliatesAdmin permissions 'affiliatesadmin.affiliates.view', 'affiliatesadmin.affiliates.create', 'affiliatesadmin.affiliates.edit', 'affiliatesadmin.affiliates.delete', 'affiliatesadmin.commissions.view', 'affiliatesadmin.commissions.approve', 'affiliatesadmin.commissions.reject', 'affiliatesadmin.commissions.pay', 'affiliatesadmin.banners.view', 'affiliatesadmin.banners.create', 'affiliatesadmin.banners.edit', 'affiliatesadmin.banners.delete', 'affiliatesadmin.statistics.view', // Affiliates permissions 'affiliates.dashboard.view', 'affiliates.banners.view', 'affiliates.banners.get_code', 'affiliates.commissions.view', 'affiliates.profile.view', 'affiliates.profile.edit', ]; $defaultCompanyId = 1; foreach (['admin', 'member'] as $role) { foreach ($permissions as $perm) { $existing = Capsule::table('role_permissions') ->where('role_permissions_role', $role) ->where('role_permissions_bus_id', $defaultCompanyId) ->where('role_permissions_permission', $perm) ->first(); if (!$existing) { Capsule::table('role_permissions')->insert([ 'role_permissions_role' => $role, 'role_permissions_bus_id' => $defaultCompanyId, 'role_permissions_permission' => $perm, 'role_permissions_created_by' => null, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s') ]); } } } } public function down() { // Remove permissions from 'role_permissions' for admin and member roles $defaultCompanyId = 1; $permissions = [ // AffiliatesAdmin permissions 'affiliatesadmin.affiliates.view', 'affiliatesadmin.affiliates.create', 'affiliatesadmin.affiliates.edit', 'affiliatesadmin.affiliates.delete', 'affiliatesadmin.commissions.view', 'affiliatesadmin.commissions.approve', 'affiliatesadmin.commissions.reject', 'affiliatesadmin.commissions.pay', 'affiliatesadmin.banners.view', 'affiliatesadmin.banners.create', 'affiliatesadmin.banners.edit', 'affiliatesadmin.banners.delete', 'affiliatesadmin.statistics.view', // Affiliates permissions 'affiliates.dashboard.view', 'affiliates.banners.view', 'affiliates.banners.get_code', 'affiliates.commissions.view', 'affiliates.profile.view', 'affiliates.profile.edit', ]; foreach (['admin', 'member'] as $role) { foreach ($permissions as $perm) { Capsule::table('role_permissions') ->where('role_permissions_role', $role) ->where('role_permissions_bus_id', $defaultCompanyId) ->where('role_permissions_permission', $perm) ->delete(); } } // Remove from bus_modules $moduleNames = ['affiliatesadmin', 'affiliates']; foreach ($moduleNames as $moduleName) { $module = Capsule::table('modules')->where('modules_name', $moduleName)->first(); if ($module) { Capsule::table('bus_modules') ->where('bus_modules_module_id', $module->modules_id) ->delete(); } } // Remove from modules table foreach ($moduleNames as $moduleName) { Capsule::table('modules')->where('modules_name', $moduleName)->delete(); } } }