<?php

declare(strict_types=1);

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use Spatie\Permission\Exceptions\PermissionDoesNotExist;
use Spatie\Permission\Exceptions\RoleDoesNotExist;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;

/**
 * Class VzdelavaniePouzivatelRoleOpravneniaDatabaseSeeder
 */
class VzdelavaniePouzivatelRoleOpravneniaDatabaseSeeder extends Seeder
{
    /**
     * @return void
     */
    public function run(): void
    {
        collect([
            'vzdelavanie',
            'vzdelavanie_kniznica',
            'vzdelavanie_testovanie',
            'vzdelavanie_kurzy',
            'vzdelavanie_kniznica.vytvorit',
            'vzdelavanie_kniznica.upravit',
            'vzdelavanie_kniznica.odstranit',
            'vzdelavanie_kniznica.zobrazit',
            'vzdelavanie_testovanie.vytvorit',
            'vzdelavanie_testovanie.upravit',
            'vzdelavanie_testovanie.odstranit',
            'vzdelavanie_testovanie.zobrazit',
            'vzdelavanie_kurzy.vytvorit',
            'vzdelavanie_kurzy.upravit',
            'vzdelavanie_kurzy.odstranit',
            'vzdelavanie_kurzy.zobrazit',
        ])->each(function ($opr) {
            try {
                Permission::findByName($opr);
            } catch (PermissionDoesNotExist) {
                Permission::create([
                    'name' => $opr,
                ]);
            }
        });

        collect([
            'technik',
            'absolvent',
            'spravca_pek',
        ])->each(function ($rola) {
            try {
                Role::findByName($rola);
            } catch (RoleDoesNotExist) {
                Role::create([
                    'name' => $rola,
                ]);
            }
        });
    }
}
