<?php

namespace App\DataTables;

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 UserCampaignEmailDatatable extends DataTable
{
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable($query)
    {

        return datatables()
            ->eloquent($query)
            ->editColumn('status', function ($query){
                return empty($query->status) ? 'N/A' : ucfirst($query->status);
            })

            ->addColumn('user_mailing_list_id', function ($query){
                return '<a href="'.route('email.contacts.setup.assign',$query->user_mailing_list->id).'">'.$query->user_mailing_list->name.'</a>';
            })
            ->addColumn('action', function ($query){
                return '<div class="btn-group btn-group-sm">'.
                    '<a class="btn '.($query->is_sent ? 'btn-warning mr-3 disabled':'btn-info mr-3').'"
                     title="Send Campaign Mail" onClick="'.$this->send($query).'"  href="'.route('email.campaigns.send',$query->id).'"><i class="fa fa-send-o"></i></a>'.

                     '<a class="btn btn-info"  title="Update Campaign Mail"   href="'.route('email.campaigns.edit',$query->id).'"><i class="fa fa-pencil"></i></a>'.
                     '<a class="btn btn-danger" onclick="return confirm(\'Are you sure you want to delete this email campaign?\')" title="Delete Campaign Mail"   href="'.route('email.campaigns.delete',$query->id).'"><i class="fa fa-trash"></i></a>'.
                    '</div>';
            })->rawColumns(['user_mailing_list_id','action']);
    }

    public function query()
    {
      return  auth()->user()->user_email_campaigns()->whereHas('user_mailing_list')->newQuery()->whereNotNull('schedule_at')->latest();
//      return  auth()->user()->user_email_campaigns()->whereHas('user_mailing_list')->newQuery()->latest();
    }


    public function send($query)
    {
        return $query->is_sent ? " return confirm('Are you sure you want to resend this campaign')"  : "return confirm('Are you sure you want to send campaign ?')";
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\DataTables\Html\Builder
     */
    public function html()
    {
        return $this->builder()
                    ->setTableId('usercampaignemaildatatable-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('user_mailing_list_id')->title('Mailing List'),
            Column::make('subject'),
            Column::make('from_name'),
            Column::make('reply_to'),
            Column::make('created_at'),
            Column::make('schedule_at'),
            Column::make('count')->title('Times Sent'),
            Column::make('status'),
            Column::computed('action')
                  ->exportable(false)
                  ->printable(false)
                  ->width(100)
                  ->addClass('text-center'),

        ];
    }

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