<?php

namespace App\PackagesAdmin\Manager\DataTables;

use App\PackagesAdmin\Manager\Models\ManagerRole;
use Illuminate\Http\JsonResponse;
use Yajra\DataTables\DataTables;

/**
 * Class ManagerRoleDataTable
 * @package App\PackagesAdmin\Manager\DataTables
 */
class ManagerRoleDataTable
{
    /**  @var DataTables */
    private $dataTablesInstance;

    /** @var ManagerRole  */
    private $managerRoleModel;

    public function __construct(Datatables $dataTablesInstance, ManagerRole $managerRole)
    {
        $this->dataTablesInstance = $dataTablesInstance;
        $this->managerRoleModel = $managerRole;
    }

    /**
     * @return JsonResponse
     * @throws \Exception
     */
    public function getDataTable()
    {
        $query = $this->managerRoleModel::query();

        $dataTable = $this->dataTablesInstance
            ->eloquent($query)
            ->addColumn('editLink', function ($role) {
                return route('admin.manager.role.edit', ['id' => $role->id]);
            })
            ->addColumn('deleteLink', function ($role) {
                return route('admin.manager.role.destroy', ['id' => $role->id]);
            });

        return $dataTable->make();
    }
}