<?php

namespace Database\Seeders;

use App\Models\Usuario;
use Database\Seeders\Concerns\SeedsFromAlmacenSql;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Database\Seeder;

class UsuariosSeeder extends Seeder
{
    use SeedsFromAlmacenSql;

    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        /*
        $this->seedTablesFromAlmacenSql([
            'users' => 'usuarios',
        ]);

        DB::table('users')
            ->orderBy('id')
            ->select(['id', 'nombre', 'clave'])
            ->chunkById(100, function ($users): void {
                foreach ($users as $user) {
                    $name = $user->nombre ?: null;
                    $rawPassword = trim((string) ($user->clave ?? ''));

                    DB::table('users')
                        ->where('id', $user->id)
                        ->update([
                            'name' => $name,
                            'password' => $rawPassword !== '' ? Hash::make($rawPassword) : null,
                        ]);
                }
            });
        */    
            
        DB::table('users')->insert([
            'nombre' => 'Superusuario',
            'cargo' => Usuario::ROLE_LABELS[Usuario::ROLE_SUPERUSUARIO],
            'password' => Hash::make('avante2026'),
            'cedula' => '11111111',
            'tipo' => Usuario::ROLE_TYPE_MAP[Usuario::ROLE_SUPERUSUARIO],
        ]);

        DB::table('users')->insert([
            'nombre' => 'Administrador',
            'cargo' => Usuario::ROLE_LABELS[Usuario::ROLE_ADMINISTRADOR],
            'password' => Hash::make('avante2026'),
            'cedula' => '99999999',
            'tipo' => Usuario::ROLE_TYPE_MAP[Usuario::ROLE_ADMINISTRADOR],
        ]);

        DB::table('users')->insert([
            'nombre' => 'Gestor de Almacén',
            'cargo' => Usuario::ROLE_LABELS[Usuario::ROLE_GESTOR],
            'password' => Hash::make('avante2026'),
            'cedula' => '88888888',
            'tipo' => Usuario::ROLE_TYPE_MAP[Usuario::ROLE_GESTOR],
        ]);

        DB::table('users')->insert([
            'nombre' => 'Almacenista',
            'cargo' => Usuario::ROLE_LABELS[Usuario::ROLE_ALMACENISTA],
            'password' => Hash::make('avante2026'),
            'cedula' => '77777777',
            'tipo' => Usuario::ROLE_TYPE_MAP[Usuario::ROLE_ALMACENISTA],
        ]);

        DB::table('users')->insert([
            'nombre' => 'Supervisor',
            'cargo' => Usuario::ROLE_LABELS[Usuario::ROLE_SUPERVISOR],
            'password' => Hash::make('avante2026'),
            'cedula' => '66666666',
            'tipo' => Usuario::ROLE_TYPE_MAP[Usuario::ROLE_SUPERVISOR],
        ]);

        DB::table('users')->insert([
            'nombre' => 'Despachador',
            'cargo' => Usuario::ROLE_LABELS[Usuario::ROLE_DESPACHADOR],
            'password' => Hash::make('avante2026'),
            'cedula' => '55555555',
            'tipo' => Usuario::ROLE_TYPE_MAP[Usuario::ROLE_DESPACHADOR],
        ]);

        DB::table('users')->insert([
            'nombre' => 'Solicitante',
            'cargo' => Usuario::ROLE_LABELS[Usuario::ROLE_SOLICITANTE],
            'password' => Hash::make('avante2026'),
            'cedula' => '44444444',
            'tipo' => Usuario::ROLE_TYPE_MAP[Usuario::ROLE_SOLICITANTE],
        ]);
    }
}
