<?php

namespace App\Console\Commands;

use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;

class UpdateUserPasswords extends Command
{
    protected $signature = 'app:update-user-passwords';
    protected $description = 'Updates old user passwords to use the Bcrypt hashing algorithm';

    public function handle()
    {
        $users = User::all();
        $updatedCount = 0;

        $this->withProgressBar($users, function ($user) use (&$updatedCount) {
            // Cek apakah hash password perlu diperbarui
            if (Hash::needsRehash($user->password)) {
                // Asumsi kita tahu password lama user, atau kita reset password mereka.
                // Jika Anda tidak bisa mendapatkan password asli, Anda harus memaksa reset password.
                // Contoh ini mengasumsikan Anda memiliki cara untuk mendapatkan password asli (plaintext),
                // yang sebenarnya BUKAN praktik yang baik.
                
                // OPSI TERBAIK: Jika Anda tidak tahu password asli,
                // Anda harus mengimplementasikan fitur "Force Password Reset".
                // Namun, jika ini hanya data dummy, Anda bisa reset ke password default.
                
                // Contoh reset ke password 'password'
                $user->password = Hash::make('password'); // Ganti 'password' sesuai kebutuhan
                $user->save();
                $updatedCount++;
            }
        });

        $this->info("\nPassword update complete. {$updatedCount} passwords were rehashed.");
        return 0;
    }
}