<?php

namespace App\Repositories;

use Spatie\Permission\Models\Role;

class RoleRepository implements RoleInterface
{
    public function pluck()
    {
        return Role::pluck('name', 'id');
    }

    public function findAll()
    {
        return Role::with('permissions')->get();
    }

    public function getRoleById($roleId)
    {
        return Role::with('permissions')->findOrFail($roleId);
    }

    public function delete($roleId)
    {
        $role = self::getRoleById($roleId);
        $role->permissions()->detach();
        return $role->delete();
    }

    public function create(array $roleDetails)
    {
        return Role::create($roleDetails);
    }

    public function update($roleId, array $newDetails)
    {
        $role = Role::find($roleId);
        $role->update($newDetails);
        return $role;
    }
    public function getPermissionListsArrangedByPrefix()
    {
        $permissions = self::findAll();

        $routeNameArr = [];
        foreach ($permissions as $permission) {
            if (!is_null($permission->name)) {
                $routeName = explode('.', $permission->name);
                if (is_array($routeName) && !empty($routeName[0])) {
                    $routeNameArr[$routeName[0]][$permission->id] = array_key_exists(1, $routeName) ? $routeName[1] : $routeName[0];
                }
            }
        }
        return $routeNameArr;
    }
}