<?php

namespace App\PackagesAdmin\Manager\Controllers;

use App\Http\Controllers\Controller;
use App\PackagesAdmin\Manager\DataTables\ManagerRoleDataTable;
use App\PackagesAdmin\Manager\Models\ManagerPermission;
use App\PackagesAdmin\Manager\Models\ManagerRole;
use App\PackagesAdmin\Manager\Requests\ManagerRoleRequest;
use App\PackagesAdmin\Manager\Services\ManagerRoleService;
use Illuminate\Http\Request;

class ManagerRoleController extends Controller {

    public function index(Request $request, ManagerRoleDataTable $dataTable)
    {
        if ( $request->ajax() ) {
            return $dataTable->getDataTable();
        }

        return view('admin.manager.role.list');
    }

    public function create()
    {
        return view('admin.manager.role.form');
    }

    public function store(ManagerRoleRequest $roleRequest)
    {
        ManagerRoleService::createRole($roleRequest);

        return response()->redirectToRoute('admin.manager.role.list')
            ->with('status', 'success');
    }

    public function edit($role_id)
    {
        /** @var ManagerRole $role */
        $role = ManagerRole::query()->find($role_id);
        $permission = ManagerPermission::repository()->getRolePermissions($role_id);

        return view('admin.manager.role.form', [
            'role' => $role,
            'permission' => $permission
        ]);
    }

    public function update(ManagerRoleRequest $roleRequest, $role_id)
    {
        ManagerRoleService::updateRole($roleRequest, $role_id);

        return back()->with('status', 'success');
    }

    public function destroy($role_id)
    {
        ManagerRoleService::destroyRole($role_id);

        return response()->json([
            'status' => 'success'
        ]);
    }

}
