<?php

namespace Database\Seeders;

use App\Models\User;
use App\Models\Fault;

use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     */
    public function run(): void
    {
        // Create roles if they don't already exist
        $roles = ['admin', 'privileged'];
    
        foreach ($roles as $roleName) {
            // Check if the role already exists
            if (!Role::where('name', $roleName)->exists()) {
                Role::create(['name' => $roleName]);
            }
        }
    
        // Check if the superuser already exists
        $user = User::firstOrCreate([
            'email' => 'superuser@admin.com',
            'name' => 'superuser',
            'password' => bcrypt('12341234'),
        ]);
    
        // Assign the role to the superuser
        $user->assignRole('admin');
    
        // Create other users as before
        $users = [
            ['name' => 'John Doe', 'email' => 'john@doe.com', 'role' => 'privileged'],
            ['name' => 'Chuck Norris', 'email' => 'chuck@norris.com'],
            ['name' => 'Marios Bros', 'email' => 'mario@bros.com'],
            ['name' => 'Ada Lovelace', 'email' => 'ada@lovelace.com'],
            ['name' => 'Hulk Hogan', 'email' => 'hulk@hogart.com'],

        ];
    
        foreach ($users as $userData) {
            $user = User::firstOrCreate([
                'email' => $userData['email'],
                'name' => $userData['name'],
                'password' => bcrypt('12341234'),
            ]);
            if (array_key_exists('role', $userData) && $userData['role']) {
                $user->assignRole($userData['role']);
            }
        }

        Fault::firstOrCreate([
            'contact_name' => 'Anthony',
            'contact_phone' => '666767222',
            'description' => 'No tenemos luz en el garaje',
            'address' => 'Carrer del mig, 4',
            'status' => 'En espera',
            'google_maps_link' => 'https://maps.google.com/long/url/link',
            'city' => 'Algemesi',
            'created_at' => now(),
            'updated_at' => now(),
        ]);

        Fault::firstOrCreate([
            'contact_name' => 'Amparo',
            'contact_phone' => '74645657',
            'description' => 'Se ha roto el reloj',
            'address' => 'Plaza Mayor 1',
            'status' => 'Realizado',
            'google_maps_link' => 'https://maps.google.com/long/url/link',
            'city' => 'Cataroja',
            'created_at' => now(),
            'updated_at' => now(),
        ]);

    }
}





