<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;

class AddOctoparsePermissions extends Migration
{
    private $permissions = [
        'octoparse.view' => 'View Octoparse scraped data and import logs',
        'octoparse.run'  => 'Manually trigger Octoparse data imports',
    ];

    public function up()
    {
        $now = Carbon::now();

        // Use the same group as cms.manage (group_id = 2) so it shows up near
        // existing operational permissions in the backend users form.
        $groupId = DB::table('backend_permissions')->where('name', 'cms.manage')->value('group_id') ?: 2;

        $maxPosition = (int) DB::table('backend_permissions')
            ->where('group_id', $groupId)
            ->max('position');

        foreach ($this->permissions as $name => $displayName) {
            $exists = DB::table('backend_permissions')->where('name', $name)->exists();
            if ($exists) {
                continue;
            }

            $maxPosition++;

            DB::table('backend_permissions')->insert([
                'group_id'     => $groupId,
                'name'         => $name,
                'display_name' => $displayName,
                'position'     => $maxPosition,
                'created_at'   => $now,
            ]);
        }
    }

    public function down()
    {
        DB::table('backend_permissions')
            ->whereIn('name', array_keys($this->permissions))
            ->delete();
    }
}
