<?php

namespace App\DataTables;

use App\MediaPrice;
use App\User;
use App\UssdPrice;
use App\UssdService;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\DataTableAbstract;
use Yajra\DataTables\Html\Builder;
use Yajra\DataTables\Html\Button;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Services\DataTable;
use Yajra\DataTables\Html\Editor\Fields;
use Yajra\DataTables\Html\Editor\Editor;

class USSDPaymentRequestDataTable extends DataTable
{
    protected $user = null;
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return DataTableAbstract
     */
    public function dataTable($query)
    {
        return datatables()
            ->eloquent($query)
            ->addColumn('action', function ($query){
                return '<div class="btn-group">'
                    .'<a class="btn btn-info btn-sm" href="'.route('reseller.ussd.subscription.request.assign',$query->id).'"><i class="fa fa-pencil"></i></a>'
                    .'</div>';
            })
            ->addColumn('ussd_service_type_id', function ($row) {
                return $row->ussd_service_type->name;
            })
            ->rawColumns(['is_active','action']);
    }

    public function query()
    {
        $res_clients = Auth::user()->resellers_client()->pluck('username')->toArray();
        return UssdService::query()->whereIn('sms_username',$res_clients);

    }

    public function is_reseller()
    {
        return auth()->user()->role_id == 3;
    }

    public function user($user)
    {
        $this->user = $user;
        return $this;

    }


    public function reRoute()
    {

        $route = empty($this->user) ? [ 'edit'=>'admin.email.price.setup.edit','delete'=>'admin.email.price.setup.delete']
            : [ 'edit'=>'reseller.ussd.price.setup.edit','delete'=>'reseller.ussd.price.setup.delete'];

        return  (object)$route;
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return Builder
     */
    public function html()
    {
        return $this->builder()
            ->setTableId('emailpriceperbalancedatatable-table')
            ->columns($this->getColumns())
            ->minifiedAjax()
            ->dom('Bfrtip')
            ->orderBy(1)
            ->buttons(
                Button::make('create'),
                Button::make('export'),
                Button::make('print'),
                Button::make('reset'),
                Button::make('reload')
            );
    }

    /**
     * Get columns.
     *
     * @return array
     */
    protected function getColumns()
    {
        return [

            Column::make('sms_username')->title('client'),
            Column::make('name'),
            Column::make('code'),
            Column::make('purchase_status'),
            Column::make('ussd_service_type_id'),
            Column::computed('sessions'),
            Column::make('created_at'),
            Column::computed('action')
                ->exportable(false)
                ->printable(false)
                ->width(60)
                ->addClass('text-center'),
        ];
    }

    /**
     * Get filename for export.
     *
     * @return string
     */
    protected function filename()
    {
        return 'USSDPricePerBalance_' . date('YmdHis');
    }
}
