<?php

namespace App\PackagesAdmin\SMSLog\DataTables;

use App\Packages\User\Models\SmsLog;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Yajra\DataTables\DataTables;

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

    /**
     * SMSLogDataTable constructor.
     * @param DataTables $dataTablesInstance
     */
    public function __construct(Datatables $dataTablesInstance)
    {
        $this->dataTablesInstance = $dataTablesInstance;
    }

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

        $dataTable = $this->dataTablesInstance
            ->eloquent($query)
            ->editColumn('is_sent', function ($log) {
                if ($log->is_sent) return 'True';
                else return 'False';
            })
            ->editColumn('is_valid', function ($log) {
                if ($log->is_valid) return 'True';
                else return 'False';
            })
            ->filterColumn('is_sent', function ($query, $keyword) {
                /** @var Builder $query */
                if ($keyword == 'true') return $query->where('is_sent', true);
                if ($keyword == 'false') return $query->where('is_sent', false);
            })
            ->filterColumn('is_valid', function ($query, $keyword) {
                /** @var Builder $query */
                if ($keyword == 'true') return $query->where('is_valid', true);
                if ($keyword == 'false') return $query->where('is_valid', false);
            });

        return $dataTable->make();
    }
}