<?php

namespace Database\Seeders;

// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\User;
use Carbon\Carbon;
use App\Models\Setting;
use Illuminate\Support\Str;
use Faker\Factory as FakerFactory;
use Faker\Provider\id_ID\Person as Person;
use Laravolt\Indonesia\Seeds\CitiesSeeder;
use Laravolt\Indonesia\Seeds\VillagesSeeder;
use Laravolt\Indonesia\Seeds\DistrictsSeeder;
use Laravolt\Indonesia\Seeds\ProvincesSeeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        $faker = FakerFactory::create();
        $faker->addProvider(new Person($faker));

        User::factory()->create([
            'id' => Str::uuid(),
            'nama_depan' => $faker->firstName,
            'nama_belakang' => $faker->lastName,
            'tanggal_lahir' => $faker->date($format = 'Y-m-d', $max = 'now'),
            'email' => 'admin@example.net',
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
            'role' => 'Admin',
            'nik' => $faker->nik($faker->randomElement(['male', 'female']), $faker->dateTimeBetween('-65 years', '-18 years')),
            'alamat' => $faker->address,
            'nohp' => $faker->phoneNumber(),
            'status' => 'Finished',
            'persentase_kemiripan' => '100%',
            'gender' => $faker->randomElement(['Laki-laki', 'Perempuan']),
            'kode_kelurahan' => '1101012002',
        ]);
        User::factory(20)->create();

        $now = Carbon::now()->tz('Asia/Jakarta');
        $bulan = $now->format('F');
        $tahun = $now->year;
        Setting::create([
            'bulan' => $bulan,
            'tahun' => $tahun,
            'persentase' => 5,
            'status' => 'Active'
        ]);

        $this->call([ProvincesSeeder::class, CitiesSeeder::class, DistrictsSeeder::class, VillagesSeeder::class]);
    }
}