<?php

namespace App\DataTables;

use App\UserDetails;
use App\OperationsModel;
use App\BusinessType;
use Carbon\Carbon;
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;
use Illuminate\Support\Facades\DB;

class AllReject extends DataTable
{
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable($query)
    {
        return datatables($query)
            // ->eloquent()
            // ->orderColumn('name', function ($query, $order) {
            //                 $query->orderBy('id', $order);
            // })
            //
            // ->orderColumn('company_name', function ($query, $order) {
            //                 $query->orderBy('id', $order);
            // })
            // ->orderColumn('position', function ($query, $order) {
            //                 $query->orderBy('id', $order);
            // })
            // ->orderColumn('phone', function ($query, $order) {
            //                 $query->orderBy('id', $order);
            // })
            // ->orderColumn('email', function ($query, $order) {
            //                 $query->orderBy('id', $order);
            // })
            // ->orderColumn('created_at', function ($query, $order) {
            //                 $query->orderBy('id', $order);
            // })
            // ->orderColumn('business_association', function ($query, $order) {
            //                 $query->orderBy('id', $order);
            // })
            ->addColumn('check_bus_sec', function ($query) {
                          if ($query->check_bus_sec == 'Qualified') {
                            $rr = BusinessType::where('id',$query->business_type)->first();
                            if ($rr !==null) {
                              return 'Pass('.$rr->name.')' ?? 'N/A';
                            }else {
                              return 'N/A';
                            }
                          }else {
                            return $query->check_bus_sec ??'N/A';
                          }
            })

            ->addColumn('check_bus_reg', function ($query) {
                          return $query->check_bus_reg ;
            })

            ->addColumn('business_established_date', function ($query) {
                  if ($query->business_established_date ==1) {
                    return 'Pass';
                  }else {
                    return 'Fail';
                  }
            })

            ->addColumn('audited_financials', function ($query) {
                return $query->audited_financials;
            })


            ->addColumn('required_licenses', function ($query) {
                return $query->required_licenses;
            })


            ->addColumn('has_bank_account', function ($query) {
                return $query->has_bank_account;
            })




            // ->addColumn('business_association', function ($query) {
            //               $rr = OperationsModel::where('user_id',$query->id)->first();
            //               if ($rr!==null) {
            //                 return $rr->business_assoc??'N/A';
            //               }else {
            //                 return 'N/A';
            //               }
            // })




            ->rawColumns(['action']);
    }

    /**
     * Get query source of dataTable.
     *
     * @param \App\App\UnderReviewApplication $model
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function query()
    {
      $query = DB::select('select rejected_application.id as id,rejected_application.business_type as business_type,rejected_application.name as name ,rejected_application.company_name as company_name,rejected_application.position as position,rejected_application.email as email,rejected_application.phone as phone,rejected_application.reason as reason,log_for_crit.check_bus_sec as check_bus_sec,log_for_crit.check_bus_reg as check_bus_reg,log_for_crit.business_established_date as business_established_date,log_for_crit.audited_financials as audited_financials,log_for_crit.required_licenses as required_licenses,log_for_crit.has_bank_account as has_bank_account from rejected_application,log_for_crit where log_for_crit.user_id = rejected_application.userid and  rejected_application.reason = "Failed to meet requirement to go to financials page."');
  return $this->applyScopes($query);
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\DataTables\Html\Builder
     */
    public function html()
    {
        return $this->builder()
                    ->setTableId('underreviewapplication-table')
                    ->columns($this->getColumns())
                    ->minifiedAjax()
                     ->dom('Bfrtip')
                    ->orderBy(0)
                    ->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('id')->visible(false)->exportable(false)
                  ->printable(false),
          Column::make('name'),
          Column::make('company_name'),
          Column::make('position')->title('Application Fund'),
          Column::make('phone'),
          Column::make('email'),
          // Column::make('region'),
          // Column::make('city'),
          Column::make('position')->title('Application Fund'),
          Column::make('reason')->title('State of Rejection'),
          Column::make('check_bus_sec')->title('Business Sector'),
          Column::make('check_bus_reg')->title('Business Registered?'),
          Column::make('business_established_date')->title('Business Established Date'),
          Column::make('audited_financials')->title('Has Audited Financials/Management Accounts'),
          Column::make('required_licenses')->title('Has Required Licences'),
          Column::make('has_bank_account')->title('Has bank account/business momo statement'),


          // Column::make('business_association')->title('business_association'),
          // '',

      ];
    }

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