<?php

namespace App\PackagesAdmin\Capsule\DataTables;

use App\Packages\Capsule\Models\Capsule;
use App\Packages\Capsule\Models\CapsuleSubscriber;
use Illuminate\Http\JsonResponse;
use Yajra\DataTables\DataTables;

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

	public function __construct(Datatables $dataTablesInstance)
	{
		$this->dataTablesInstance = $dataTablesInstance;
	}

    /**
     * @return JsonResponse
     * @throws \Exception
     */
	public function getDataTable()
	{
		$query = Capsule::query();

		return $this->dataTablesInstance
			->eloquent($query)
			->make();
	}

	public function getCapsuleDataTable($capsule_id)
    {
        $query = CapsuleSubscriber::query()
            ->with('user')
            ->where('capsule_id', $capsule_id);

        return $this->dataTablesInstance
            ->eloquent($query)
            ->addColumn('showLink', function ($subscriber) {
                return route('admin.user.show', ['id' => $subscriber->user_id]);
            })
            ->addColumn('editLink', function ($subscriber) {
                return route('admin.user.edit', ['id' => $subscriber->user_id]);
            })
            ->addColumn('deleteLink', function ($subscriber) {
                return route('admin.capsule.subscriber.destroy', ['id' => $subscriber->id]);
            })
            ->make();
    }
}
