<?php

namespace Database\Seeders;

use App\Danoral\Entidades\EUser;
use App\Danoral\Entidades\EntidadUserView;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;

class RolesAndPermissionsSeeder extends Seeder
{
    /**
     * Run the database seeds.
     * 
     * php artisan migrate:refresh --path=database/migrations/2023_02_01_125002_create_permission_tables.php --seed --seeder=RolesAndPermissionsSeeder
     *
     * @return void
     * 
     */
    public function run()
    {
        // Reset cached roles and permissions
        app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();

        // create permissions
        Permission::create(['name' => 'bancos']);
        Permission::create(['name' => 'buscador']);
        Permission::create(['name' => 'cobros']);
        Permission::create(['name' => 'cobros.crear']);
        Permission::create(['name' => 'cobros.notipago.procesar']);
        Permission::create(['name' => 'cobros.procesar']);
        Permission::create(['name' => 'condominios']);
        Permission::create(['name' => 'condominios.degenerar']);
        Permission::create(['name' => 'condominios.generar']);
        Permission::create(['name' => 'condominios.importar']);
        Permission::create(['name' => 'condominios.preliminar']);
        Permission::create(['name' => 'configuraciones']);
        Permission::create(['name' => 'cuotas.alta']);
        Permission::create(['name' => 'cuotas.consulta']);
        Permission::create(['name' => 'cuotas.eliminar']);
        Permission::create(['name' => 'cuotas.iniciales']);
        Permission::create(['name' => 'danoral']);
        Permission::create(['name' => 'danoral.clientes']);
        Permission::create(['name' => 'danoral.facturacion']);
        Permission::create(['name' => 'danoral.facturacion.generar']);
        Permission::create(['name' => 'entidades']);
        Permission::create(['name' => 'entidades.migrar']);
        Permission::create(['name' => 'exec.listas-cobros.abrir']);
        Permission::create(['name' => 'email.condominio']);
        Permission::create(['name' => 'notipago.liberar']);
        Permission::create(['name' => 'tasacambio.info']);
        Permission::create(['name' => 'transacciones']);
        Permission::create(['name' => 'transacciones.modificar']);
        Permission::create(['name' => 'usuarios.consultar']);
        Permission::create(['name' => 'usuarios.crear']);
        Permission::create(['name' => 'usuarios.eliminar']);

        // create roles and assign created permissions

        // super-admin assign all permissions
        Role::create(['name' => 'super-admin'])
            ->givePermissionTo(Permission::all());

        //danoral
        Role::create(['name' => 'danoral'])
            ->givePermissionTo([
                'bancos',
                'buscador',
                'cobros',
                'condominios',
                'cuotas.consulta',
                'entidades',
                'tasacambio.info',
                'transacciones',                
            ]);

        // facturacion
        Role::create(['name' => 'facturacion'])
            ->givePermissionTo([
                'danoral',
                'danoral.clientes',
                'danoral.facturacion',
                'danoral.facturacion.generar',
            ]);            

        // gerencia
        Role::create(['name' => 'gerencia'])
            ->givePermissionTo([
                'cuotas.alta',
                'email.condominio',
                'danoral',
                'danoral.clientes',
            ]);            

        // computacion
        Role::create(['name' => 'computacion'])
            ->givePermissionTo([
                'cobros.procesar',
                'condominios.generar', 
                'condominios.importar',
                'condominios.degenerar',
                'cuotas.alta',
                'cuotas.eliminar',
                'cuotas.iniciales',
                'email.condominio',
                'entidades.migrar',
                'notipago.liberar',                
            ]);

        // cobranzas
        Role::create(['name' => 'cobranzas'])
            ->givePermissionTo([
                'cobros.crear',
                'cobros.notipago.procesar',
                'cobros.procesar',
                'cuotas.consulta',
            ]);
        // notipago1
        Role::create(['name' => 'notipago1'])
        ->givePermissionTo([
            'notipago.liberar',
        ]);
        // condominios
        Role::create(['name' => 'condominios'])
            ->givePermissionTo([
                'condominios.importar',
            ]);
        // contabilidad
        Role::create(['name' => 'contabilidad'])
            ->givePermissionTo([
                'transacciones.modificar',
            ]);
        // cobrador    
        Role::create(['name' => 'cobrador'])
            ->givePermissionTo([
                'cuotas.consulta',
            ]);
        // soporte    
        Role::create(['name' => 'soporte1'])
            ->givePermissionTo([
                'configuraciones',
                'usuarios.consultar',
            ]);

        // preliminar condominio
        Role::create(['name' => 'preliminar'])
            ->givePermissionTo([
                'condominios.importar',
            ]);
    

        // Usuarios
        EntidadUserView::find(100100040000000001) //Tony Nieves
            ->assignRole('super-admin');

        EntidadUserView::find(100100040000000013) //Ladis Sanchez
            ->assignRole([
                'danoral', 
                'gerencia',
                'facturacion',
                'computacion',
                'cobranzas',
                'soporte1',
            ]);
        EntidadUserView::find(100100040000000012) //Tibisay
            ->assignRole([
                'danoral', 
                'gerencia',
                'contabilidad',
                'cobranzas',
                'soporte1',
            ]);
        EntidadUserView::find(100100040000000023) //Antonio Nieves
            ->assignRole([
                'danoral',
                'contabilidad',
                'soporte1',
            ]);

        EntidadUserView::find(100100040000000048) //Carolina Paredes
            ->assignRole([
                'danoral', 
                'computacion',
                'cobranzas',
                'soporte1',
            ]);
        EntidadUserView::find(100100040000000044) //Julio Rebolledo
            ->assignRole([
                'danoral', 
                'gerencia',
                'facturacion',
                'contabilidad',
                'cobranzas',
                'soporte1',
                'condominios',
            ]);            

        EntidadUserView::find(100100040000000038) //Mayerlin Molina
            ->assignRole([
                'danoral', 
                'gerencia',
                'contabilidad',
                'cobranzas',
                'soporte1',
                'condominios',
            ]);            

        EntidadUserView::find(100100040000000082) //Gleidi Gavidia
            ->assignRole([
                'danoral', 
                'gerencia',
                'contabilidad',
                'cobranzas',
                'soporte1',
                'condominios',
            ]);            
        EntidadUserView::find(100100040000000009) //Marisol Garcia
            ->assignRole([
                'danoral', 
                'gerencia',
                'contabilidad',
                'cobranzas',
                'soporte1',
            ]);
        EntidadUserView::find(100100040000000072) //Dorado
            ->assignRole([
                'cobrador',
            ]);            
        EntidadUserView::find(100100040000000078) //Parque La India
            ->assignRole([
                'cobrador',
            ]);
        EntidadUserView::find(100100040000000039) //Rafael Gonzalez
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000047) //Yunis
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000062) //Gladys Paradas
            ->assignRole([
                'danoral', 
                'cobranzas',
                'notipago1',
            ]);
        EntidadUserView::find(100100040000000066) //Rayffi Quintero
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000067) //Kristy Mata
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000068) //Talia
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000069) //Neaxide
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000073) //Eukarina
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000074) //Adriana Bohorquez
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000075) //Lourdes Martinez
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000076) //Aura Jimenez
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);
        EntidadUserView::find(100100040000000077) //Cleiderman Torrecilla
            ->assignRole([
                'danoral', 
                'cobranzas',
            ]);

        EntidadUserView::find(100100040000000088) //Elena Marcano
            ->assignRole([
                'danoral', 
                'gerencia',
                'contabilidad',
                'cobranzas',
                'soporte1',
                'condominios',
            ]);      
            
        EntidadUserView::find(100100040000000090) //preliminar
            ->assignRole([
                'preliminar',
            ]);


    }

    
}
