<?php

use App\Models\Permission;
use App\Models\Role;
use Illuminate\Database\Migrations\Migration;

return new class extends Migration
{
    public function up(): void
    {
        $permission = Permission::firstOrCreate(
            ['name' => 'warnings_view_own'],
            ['display_name' => 'Warnings view own']
        );

        Role::withoutGlobalScopes()
            ->where('name', 'employee')
            ->each(function (Role $role) use ($permission): void {
                $role->permissions()->syncWithoutDetaching([$permission->id]);
            });
    }

    public function down(): void
    {
        $permission = Permission::query()->where('name', 'warnings_view_own')->first();
        if (! $permission) {
            return;
        }

        Role::withoutGlobalScopes()
            ->where('name', 'employee')
            ->each(function (Role $role) use ($permission): void {
                $role->permissions()->detach($permission->id);
            });

        $permission->delete();
    }
};
