* * @version 1.0.0 */ class RoleSeeder extends Seeder { use RolePermission; /** * Run the database seeds. */ public function run(): void { $users = PermissionType::firstOrCreate([ 'name' => 'Usuarios' ]); [ $userIndex, $userCreate, $userEdit, $userDestroy ] = $this->onCRUD('users', $users, 'api'); $userSettings = $this->onPermission('users.settings', 'Configuración de usuarios', $users, 'api'); $userOnline = $this->onPermission('users.online', 'Usuarios en linea', $users, 'api'); $roles = PermissionType::firstOrCreate([ 'name' => 'Roles' ]); [ $roleIndex, $roleCreate, $roleEdit, $roleDestroy ] = $this->onCRUD('roles', $roles, 'api'); $pulse = PermissionType::firstOrCreate([ 'name' => 'Sistema' ]); $systemPulse = $this->onPermission('pulse', 'Monitoreo de Pulse', $pulse, 'api'); $pulse = PermissionType::firstOrCreate([ 'name' => 'Historial de actividades' ]); $activityIndex = $this->onIndex( code: 'activities', type: $pulse, guardName: 'api' ); // ==================== NUEVOS PERMISOS PARA PDV ==================== // Permisos de Caja $cashRegisterType = PermissionType::firstOrCreate([ 'name' => 'Caja registradora' ]); $cashRegisterIndex = $this->onIndex('cash-registers', 'Mostrar datos', $cashRegisterType, 'api'); $cashRegisterOpen = $this->onPermission('cash-registers.open', 'Abrir caja', $cashRegisterType, 'api'); $cashRegisterClose = $this->onPermission('cash-registers.close', 'Cerrar caja', $cashRegisterType, 'api'); $cashRegisterCurrent = $this->onPermission('cash-registers.current', 'Ver caja actual', $cashRegisterType, 'api'); // Permisos de Ventas $salesType = PermissionType::firstOrCreate([ 'name' => 'Ventas' ]); $salesIndex = $this->onIndex('sales', 'Mostrar datos', $salesType, 'api'); $salesCreate = $this->onCreate('sales', 'Crear registros', $salesType, 'api'); $salesCancel = $this->onPermission('sales.cancel', 'Cancelar venta', $salesType, 'api'); // Permisos de Inventario $inventoryType = PermissionType::firstOrCreate([ 'name' => 'Inventario' ]); $inventoryIndex = $this->onIndex('inventario', 'Mostrar datos', $inventoryType, 'api'); $inventoryCreate = $this->onCreate('inventario', 'Crear registros', $inventoryType, 'api'); $inventoryEdit = $this->onEdit('inventario', 'Actualizar registro', $inventoryType, 'api'); $inventoryDestroy = $this->onDestroy('inventario', 'Eliminar registro', $inventoryType, 'api'); $inventoryImport = $this->onPermission('inventario.import', 'Importar productos desde Excel', $inventoryType, 'api'); // Permisos de Categorías $categoriesType = PermissionType::firstOrCreate([ 'name' => 'Categorías de productos' ]); $categoriesIndex = $this->onIndex('categorias', 'Mostrar datos', $categoriesType, 'api'); $categoriesCreate = $this->onCreate('categorias', 'Crear registros', $categoriesType, 'api'); $categoriesEdit = $this->onEdit('categorias', 'Actualizar registro', $categoriesType, 'api'); $categoriesDestroy = $this->onDestroy('categorias', 'Eliminar registro', $categoriesType, 'api'); //Permisos de Unidades de medida $unitsType = PermissionType::firstOrCreate([ 'name' => 'Unidades de medida' ]); $unitsIndex = $this->onIndex('units', 'Mostrar datos', $unitsType, 'api'); $unitsCreate = $this->onCreate('units', 'Crear registros', $unitsType, 'api'); $unitsEdit = $this->onEdit('units', 'Actualizar registro', $unitsType, 'api'); $unitsDestroy = $this->onDestroy('units', 'Eliminar registro', $unitsType, 'api'); // Permisos de Clientes $clientsType = PermissionType::firstOrCreate([ 'name' => 'Clientes' ]); [ $clientIndex, $clientCreate, $clientEdit, $clientDestroy ] = $this->onCRUD('clients', $clientsType, 'api'); // Permisos de Niveles de Clientes (Tiers) $clientTiersType = PermissionType::firstOrCreate([ 'name' => 'Niveles de clientes' ]); [ $clientTierIndex, $clientTierCreate, $clientTierEdit, $clientTierDestroy ] = $this->onCRUD('client-tiers', $clientTiersType, 'api'); // Permisos de Solicitudes de Factura $invoiceRequestsType = PermissionType::firstOrCreate([ 'name' => 'Solicitudes de factura' ]); $invoiceRequestIndex = $this->onIndex('invoice-requests', 'Mostrar solicitudes', $invoiceRequestsType, 'api'); $invoiceRequestShow = $this->onPermission('invoice-requests.show', 'Ver detalles', $invoiceRequestsType, 'api'); $invoiceRequestProcess = $this->onPermission('invoice-requests.process', 'Procesar solicitud', $invoiceRequestsType, 'api'); $invoiceRequestReject = $this->onPermission('invoice-requests.reject', 'Rechazar solicitud', $invoiceRequestsType, 'api'); $invoiceRequestUpload = $this->onPermission('invoice-requests.upload', 'Subir archivos de factura', $invoiceRequestsType, 'api'); $invoiceRequestStats = $this->onPermission('invoice-requests.stats', 'Ver estadísticas', $invoiceRequestsType, 'api'); $warehouseType = PermissionType::firstOrCreate([ 'name' => 'Almacenes' ]); $warehouseIndex = $this->onIndex('warehouses', 'Mostrar datos', $warehouseType, 'api'); $warehouseCreate = $this->onCreate('warehouses', 'Crear registros', $warehouseType, 'api'); $warehouseEdit = $this->onEdit('warehouses', 'Actualizar registro', $warehouseType, 'api'); $warehouseDestroy = $this->onDestroy('warehouses', 'Eliminar registro', $warehouseType, 'api'); $movementsType = PermissionType::firstOrCreate([ 'name' => 'Movimientos de inventario' ]); $movementsIndex = $this->onIndex('movements', 'Mostrar datos', $movementsType, 'api'); $movementsCreate = $this->onCreate('movements', 'Crear registros', $movementsType, 'api'); $movementsEdit = $this->onEdit('movements', 'Actualizar registro', $movementsType, 'api'); $movementsDestroy = $this->onDestroy('movements', 'Eliminar registro', $movementsType, 'api'); $suppliers = PermissionType::firstOrCreate([ 'name' => 'Proveedores' ]); $supplierIndex = $this->onIndex('suppliers', 'Mostrar datos', $suppliers, 'api'); $supplierCreate = $this->onCreate('suppliers', 'Crear registros', $suppliers, 'api'); $supplierEdit = $this->onEdit('suppliers', 'Actualizar registro', $suppliers, 'api'); $supplierDestroy = $this->onDestroy('suppliers', 'Eliminar registro', $suppliers, 'api'); // ==================== ROLES ==================== // Desarrollador Role::firstOrCreate([ 'name' => 'developer', 'description' => 'Desarrollador', 'guard_name' => 'api' ])->syncPermissions(Permission::all()); // Administrador Role::firstOrCreate([ 'name' => 'admin', 'description' => 'Administrador', 'guard_name' => 'api' ])->syncPermissions( $userIndex, $userCreate, $userEdit, $userDestroy, $userSettings, $userOnline, $roleIndex, $roleCreate, $roleEdit, $roleDestroy, $systemPulse, $activityIndex, // Permisos completos de PDV $cashRegisterIndex, $cashRegisterOpen, $cashRegisterClose, $cashRegisterCurrent, $salesIndex, $salesCreate, $salesCancel, $inventoryIndex, $inventoryImport, $inventoryCreate, $inventoryEdit, $inventoryDestroy, $categoriesIndex, $categoriesCreate, $categoriesEdit, $categoriesDestroy, $clientIndex, $clientCreate, $clientEdit, $clientDestroy, $clientTierIndex, $clientTierCreate, $clientTierEdit, $clientTierDestroy, $invoiceRequestIndex, $invoiceRequestShow, $invoiceRequestProcess, $invoiceRequestReject, $invoiceRequestUpload, $invoiceRequestStats, $warehouseIndex, $warehouseCreate, $warehouseEdit, $warehouseDestroy, $movementsIndex, $movementsCreate, $movementsEdit, $movementsDestroy, $unitsIndex, $unitsCreate, $unitsEdit, $unitsDestroy, $supplierIndex, $supplierCreate, $supplierEdit, $supplierDestroy ); //Operador PDV (solo permisos de operación de caja y ventas) Role::firstOrCreate([ 'name' => 'operador_pdv', 'description' => 'Operador de Punto de Venta', 'guard_name' => 'api' ])->syncPermissions( // Caja $cashRegisterIndex, // Ver historial de cajas $cashRegisterOpen, // Abrir caja $cashRegisterClose, // Cerrar caja $cashRegisterCurrent, // Ver caja actual // Ventas $salesIndex, // Ver historial de ventas $salesCreate, // Crear ventas // Inventario (solo lectura) $inventoryIndex, $inventoryImport, // Importar productos $inventoryCreate, $inventoryEdit, $inventoryDestroy, // Clientes $clientIndex, $clientTierIndex, $clientTierCreate, $clientTierEdit, $clientTierDestroy, // Solicitudes de factura (solo lectura) $invoiceRequestIndex ); } }