<?php

namespace App\DataTables;

use App\Division;
use App\CoiUsers;
use App\Assess;
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 GDMedium extends DataTable
{
    /**
     * Build DataTable class.
     *
     * @param mixed $query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable($query)
    {
        return datatables()
            ->eloquent($query)

            ->addColumn('risk_rate', function ($query){
                $getrisk = Assess::where('userid',$query->id)->latest()->first();
                if ($getrisk !==null ) {
                  return $getrisk->risk_rate??'N/A';
                }
            })

            ->addColumn('is_director', function($query) {
              if ($query->is_director ==1) {
              return 'Yes';
            }else {
              return 'No';
            }
            })

            ->addColumn('risk_cat', function ($query){
              $getrisk2 = Assess::where('userid',$query->id)->latest()->first();
              if ($getrisk2 !==null ) {
                return $getrisk2->risk_cat??'N/A';
              }
            })

            ->addColumn('comment', function ($query){
              $getrisk3 = Assess::where('userid',$query->id)->latest()->first();
              if ($getrisk3 !==null ) {
                return $getrisk3->comment??'N/A';
              }
            })

            ->addColumn('recommendations', function ($query){
              $getrisk4 = Assess::where('userid',$query->id)->latest()->first();
              if ($getrisk4 !==null ) {
                return $getrisk4->recommendations??'N/A';
              }
            })

  //           ->addColumn('a12_declarable_interest', function ($query){
  //               return $query->a12_declarable_interest ??'No Input';
  //           })
  //
  //           ->addColumn('a12_recuse', function ($query){
  //               return $query->a12_recuse ??'No Input';
  //           })
  //           ->addColumn('a12_successful_in_securing_employment', function ($query){
  //               return $query->a12_successful_in_securing_employment ??'No Input';
  //           })
  //           ->addColumn('a12_additional_information_12', function ($query){
  //               return $query->a12_additional_information_12 ??'No Input';
  //           })
  //
  //           ->addColumn('a13_business_relationship', function ($query){
  //               return $query->a13_business_relationship ??'No Input';
  //           })
  //           ->addColumn('a13_enter_such_business_relationships', function ($query){
  //               return $query->a13_enter_such_business_relationships ??'No Input';
  //           })
  //           ->addColumn('a13_additional_information_13', function ($query){
  //               return $query->a13_additional_information_13 ??'No Input';
  //           })
  //
  //           ->addColumn('a13_declarable_interest', function ($query){
  //               return $query->a13_declarable_interest ??'No Input';
  //           })
  //
  //
  //           ->addColumn('a14_details_of_the_situation', function ($query){
  //               return $query->a14_details_of_the_situation ??'No Input';
  //           })
  //           ->addColumn('a14_additional_information_14', function ($query){
  //               return $query->a14_additional_information_14 ??'No Input';
  //           })
  //
  //           ->addColumn('a14_declarable_interest', function ($query){
  //               return $query->a14_declarable_interest ??'No Input';
  //           })
  //
  //
  //           ->addColumn('a15_employees_involved', function ($query){
  //               return $query->a15_employees_involved ??'No Input';
  //           })
  //           ->addColumn('a15_relevant_details', function ($query){
  //               return $query->a15_relevant_details ??'No Input';
  //           })
  //           ->addColumn('a15_additional_information_15', function ($query){
  //               return $query->a15_additional_information_15 ??'No Input';
  //           })
  //
  //           ->addColumn('a15_declarable_interest', function ($query){
  //               return $query->a15_declarable_interest ??'No Input';
  //           })
  //
  //
  //
  //           ->addColumn('a16_momo_operate', function ($query){
  //               return $query->a16_momo_operate ??'No Input';
  //           })
  //           ->addColumn('a16_momo_family', function ($query){
  //               return $query->a16_momo_family ??'No Input';
  //           })
  //           ->addColumn('a16_confidential_corporate_information', function ($query){
  //               return $query->a16_confidential_corporate_information ??'No Input';
  //           })
  //           ->addColumn('a16_financial_benefit_family', function ($query){
  //               return $query->a16_financial_benefit_family ??'No Input';
  //           })
  //           ->addColumn('a16_additional_information_16', function ($query){
  //               return $query->a16_additional_information_16 ??'No Input';
  //           })
  //
  //           ->addColumn('a16_declarable_interest', function ($query){
  //               return $query->a16_declarable_interest ??'No Input';
  //           })
  //
  //           ->addColumn('a17_dealer_or_dealer', function ($query){
  //               return $query->a17_dealer_or_dealer ??'No Input';
  //           })
  //           ->addColumn('a17_appointed_director', function ($query){
  //               return $query->a17_appointed_director ??'No Input';
  //           })
  //
  //           ->addColumn('a17_declarable_interest_17', function ($query){
  //               return $query->a17_declarable_interest_17 ??'No Input';
  //           })
  //
  //           ->addColumn('a18_nature_of_trading', function ($query){
  //               return $query->a18_nature_of_trading ??'No Input';
  //           })
  //           ->addColumn('a18_number_of_shares', function ($query){
  //               return $query->a18_number_of_shares ??'No Input';
  //           })
  //           ->addColumn('a18_buyer_or_seller', function ($query){
  //               return $query->a18_buyer_or_seller ??'No Input';
  //           })
  //           ->addColumn('a18_date_trading', function ($query){
  //               return $query->a18_date_trading ??'No Input';
  //           })
  //           ->addColumn('a18_declarable_interest_18', function ($query){
  //               return $query->a18_declarable_interest_18 ??'No Input';
  //           })
  //
  //
  //           ->addColumn('a19_subs_shareholder', function ($query){
  //               return $query->a19_subs_shareholder ??'No Input';
  //           })
  //           ->addColumn('a19_the_nature_of_relationship', function ($query){
  //               return $query->a19_the_nature_of_relationship ??'No Input';
  //           })
  //           ->addColumn('a19_nature_of_interest', function ($query){
  //               return $query->a19_nature_of_interest ??'No Input';
  //           })
  //           ->addColumn('a19_particulars', function ($query){
  //               return $query->a19_particulars ??'No Input';
  //           })
  //
  //           ->addColumn('a19_declarable_interest_19', function ($query){
  //               return $query->a19_declarable_interest_19 ??'No Input';
  //           })
  //
  //
  //           ->addColumn('a20_details', function ($query){
  //               return $query->a20_details ??'No Input';
  //           })
  //           ->addColumn('a20_declarable_interest_20', function ($query){
  //               return $query->a20_declarable_interest_20 ??'No Input';
  //           })
  // ////////////////////////
  //           ->addColumn('a11_nature_of_declarable_interest', function ($query){
  //               return $query->a11_nature_of_declarable_interest ??'No Input';
  //           })
  //           ->addColumn('a11_influence_your_judgement', function ($query){
  //               return $query->a11_influence_your_judgement ??'No Input';
  //           })
  //           ->addColumn('a11_additional_information_11', function ($query){
  //               return $query->a11_additional_information_11 ??'No Input';
  //           })
  //
  //           ->addColumn('a11_declarable_interest', function ($query){
  //               return $query->a11_declarable_interest ??'No Input';
  //           })
  //
  //         /////////////////////
  //           ->addColumn('a10_coi_conduct', function ($query){
  //               return $query->a10_coi_conduct ??'No Input';
  //           })
  //           ->addColumn('a10_conflict_motivation', function ($query){
  //               return $query->a10_conflict_motivation ??'No Input';
  //           })
  //
  //           ->addColumn('a10_additional_information_10', function ($query){
  //               return $query->a10_additional_information_10 ??'No Input';
  //           })
  //
  //           ->addColumn('a10_declarable_interest', function ($query){
  //               return $query->a10_declarable_interest ??'No Input';
  //           })
  //
  //           ////////////////////
  //           ->addColumn('a9_whom_you_solicited', function ($query){
  //               return $query->a9_whom_you_solicited ??'No Input';
  //           })
  //           ->addColumn('a9_competition_with_MTN', function ($query){
  //               return $query->a9_competition_with_MTN ??'No Input';
  //           })
  //           ->addColumn('a9_additional_information_9', function ($query){
  //               return $query->a9_additional_information_9 ??'No Input';
  //           })
  //
  //           ->addColumn('a9_declarable_interest', function ($query){
  //               return $query->a9_declarable_interest ??'No Input';
  //           })
  //
  //
  //           ///////////////////////
  //           ->addColumn('a8_commercial_activities', function ($query){
  //               return $query->a8_commercial_activities ??'No Input';
  //           })
  //           ->addColumn('a8_sourced_or_promoted', function ($query){
  //               return $query->a8_sourced_or_promoted ??'No Input';
  //           })
  //
  //           ->addColumn('a8_third_parties_involved', function ($query){
  //               return $query->a8_third_parties_involved ??'No Input';
  //           })
  //           ->addColumn('a8_commercial_activities_gain', function ($query){
  //               return $query->a8_commercial_activities_gain ??'No Input';
  //           })
  //
  //           ->addColumn('a8_additional_information_8', function ($query){
  //               return $query->a8_additional_information_8 ??'No Input';
  //           })
  //
  //           ->addColumn('a8_declarable_interest', function ($query){
  //               return $query->a8_declarable_interest ??'No Input';
  //           })
  //           //////////////////////////////
  //           ->addColumn('a7_proper_authorisation', function ($query){
  //               return $query->a7_proper_authorisation ??'No Input';
  //           })
  //           ->addColumn('a7_value_or_nature_of_personal_gain', function ($query){
  //               return $query->a7_value_or_nature_of_personal_gain ??'No Input';
  //           })
  //           ->addColumn('a7_information_was_used', function ($query){
  //               return $query->a7_information_was_used ??'No Input';
  //           })
  //
  //           ->addColumn('a7_additional_information_7', function ($query){
  //               return $query->a7_additional_information_7 ??'No Input';
  //           })
  //           ->addColumn('a7_declarable_interest', function ($query){
  //               return $query->a7_declarable_interest ??'No Input';
  //           })
  // ///////////////////////////////
  //           ->addColumn('a6_solicited_investment', function ($query){
  //               return $query->a6_solicited_investment ??'No Input';
  //           })
  //           ->addColumn('a6_business_solicited_investment', function ($query){
  //               return $query->a6_business_solicited_investment ??'No Input';
  //           })
  //           ->addColumn('a6_nature_of_soliciting_business', function ($query){
  //               return $query->a6_nature_of_soliciting_business ??'No Input';
  //           })
  //
  //           ->addColumn('a6_additional_information_6', function ($query){
  //               return $query->a6_additional_information_6 ??'No Input';
  //           })
  //           ->addColumn('a6_declarable_interest', function ($query){
  //               return $query->a6_declarable_interest ??'No Input';
  //           })
  //
  //
  // /////////////////////////////////
  //           ->addColumn('a5_nature_of_the_influence', function ($query){
  //               return $query->a5_nature_of_the_influence ??'No Input';
  //           })
  //           ->addColumn('a5_position_or_authority', function ($query){
  //               return $query->a5_position_or_authority ??'No Input';
  //           })
  //           ->addColumn('a5_close_associate', function ($query){
  //               return $query->a5_close_associate ??'No Input';
  //           })
  //           ->addColumn('a5_name_person_or_entity', function ($query){
  //               return $query->a5_name_person_or_entity ??'No Input';
  //           })
  //
  //           ->addColumn('a5_authority_to_influence', function ($query){
  //               return $query->a5_authority_to_influence ??'No Input';
  //           })
  //
  //           ->addColumn('a5_declarable_interest', function ($query){
  //               return $query->a5_declarable_interest ??'No Input';
  //           })
  //
  //           ///////////////////////////
  //           ->addColumn('a4_nature_of_contracts', function ($query){
  //               return $query->a4_nature_of_contracts ??'No Input';
  //           })
  //           ->addColumn('a4_personal_gain_received', function ($query){
  //               return $query->a4_personal_gain_received ??'No Input';
  //           })
  //           ->addColumn('a4_parties_involved', function ($query){
  //               return $query->a4_parties_involved ??'No Input';
  //           })
  //           ->addColumn('a4_additional_information_4', function ($query){
  //               return $query->a4_additional_information_4 ??'No Input';
  //           })
  //
  //           ->addColumn('a4_declarable_interest', function ($query){
  //               return $query->a4_declarable_interest ??'No Input';
  //           })
  //
  // //////////////////////////////
  //           ->addColumn('a3_personal_financial_interests', function ($query){
  //               return $query->a3_personal_financial_interests ??'No Input';
  //           })
  //           ->addColumn('a3_value_personal_financial_interests', function ($query){
  //               return $query->a3_value_personal_financial_interests ??'No Input';
  //           })
  //           ->addColumn('a3_professional_duties', function ($query){
  //               return $query->a3_professional_duties ??'No Input';
  //           })
  //           ->addColumn('a3_mtn_business_activities', function ($query){
  //               return $query->a3_mtn_business_activities ??'No Input';
  //           })
  //           ->addColumn('a3_personal_financial_interests_conflict', function ($query){
  //               return $query->a3_personal_financial_interests_conflict ??'No Input';
  //           })
  //           ->addColumn('a3_additional_information_3', function ($query){
  //               return $query->a3_additional_information_3 ??'No Input';
  //           })
  //
  //           ->addColumn('a3_declarable_interest', function ($query){
  //               return $query->a3_declarable_interest ??'No Input';
  //           })
  //
  //           ////////////////////////////////
  //
  //           ->addColumn('a2_nature_of_personal_business_interest', function ($query){
  //               return $query->a2_nature_of_personal_business_interest ??'No Input';
  //           })
  //           ->addColumn('a2_corporate_or_business_name', function ($query){
  //               return $query->a2_corporate_or_business_name ??'No Input';
  //           })
  //           ->addColumn('a2_decisions', function ($query){
  //               return $query->a2_decisions ??'No Input';
  //           })
  //           ->addColumn('a2_independence_and_objectivity', function ($query){
  //               return $query->a2_independence_and_objectivity ??'No Input';
  //           })
  //           ->addColumn('a2_additional_information_2', function ($query){
  //               return $query->a2_additional_information_2 ??'No Input';
  //           })
  //
  //           ->addColumn('a2_declarable_interest', function ($query){
  //               return $query->a2_declarable_interest ??'No Input';
  //           })
  //
  // ///////////////////////////
  //
  //
  //           ->addColumn('a1_directorship', function ($query){
  //               return $query->a1_directorship ??'No Input';
  //           })
  //
  //           ->addColumn('a1_directorship', function ($query){
  //               return $query->a1_directorship ??'No Input';
  //           })
  //
  //           ->addColumn('a1_dominant', function ($query){
  //               return $query->a1_dominant ??'No Input';
  //           })
  //
  //           ->addColumn('a1_trusteeship', function ($query){
  //               return $query->a1_trusteeship ??'No Input';
  //           })
  //
  //           ->addColumn('a1_participation', function ($query){
  //               return $query->a1_participation ??'No Input';
  //           })
  //
  //           ->addColumn('a1_other_business', function ($query){
  //               return $query->a1_other_business ??'No Input';
  //           })
  //
  //           ->addColumn('a1_any_other_business', function ($query){
  //               return $query->a1_any_other_business ??'No Input';
  //           })
  //
  //           ->addColumn('a1_any_other_interest', function ($query){
  //               return $query->a1_any_other_interest ??'No Input';
  //           })
  //
  //           ->addColumn('a1_name_of_entity', function ($query){
  //               return $query->a1_name_of_entity ??'No Input';
  //           })
  //           ->addColumn('a1_additional_information', function ($query){
  //               return $query->a1_additional_information ??'No Input';
  //           })
  //           ->addColumn('a1_declarable_interest', function ($query){
  //               return $query->a1_declarable_interest ??'No Input';
  //           })
  //
  //           ->addColumn('declared_at', function ($query){
  //               return $query->declared_at ??'No Input';
  //           })
  //           ->addColumn('declared_date', function ($query){
  //               return $query->declared_date ??'No Input';
  //           })



            // ->addColumn('action', function($query){
            //   // <a href="'.route('download.groupmanager.report',$query->id).'">
            //   // <button class="btn btn-primary btn-sm btn-block mr-3" style="margin-right:10px !important;"><span class="fa fa-download text-white"></span></button></a>
            //                   return '
            //                       <div style="display: flex;">
            //                       <a href="'.route('view.division.report',$query->id).'">
            //                       <button class="btn btn-primary btn-sm btn-block mr-3" style="margin-right:10px !important;"><span class="fa fa-eye text-white"></span></button></a>
            //
            //                       </div>
            //
            //      ';
            //
            //
            //    })
               ;
             }

    /**
     * Get query source of dataTable.
     *
     * @param \App\App\DivisionDatatable $model
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function query()
    {

      $query=CoiUsers::query()->whereHas('assess', function($q){
    $q->where('risk_cat', 'Medium')->orderBy('id','desc')->take(1);
});
      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('divisiondatatables-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('name'),
          // Column::make('email'),
          // Column::make('phone'),
          Column::make('dept')->title('Department'),
          Column::make('division'),
          Column::make('level'),
          Column::make('is_director'),
          Column::make('risk_rate'),
          Column::make('risk_cat'),
          Column::make('comment'),
          Column::make('recommendations'),

          // Column::make('declared_at'),
          // Column::make('declared_date'),
          // Column::make('a1_declarable_interest'),
          // Column::make('a1_directorship'),
          // Column::make('a1_dominant'),
          // Column::make('a1_trusteeship'),
          // Column::make('a1_participation'),
          // Column::make('a1_other_business'),
          // Column::make('a1_any_other_business'),
          // Column::make('a1_any_other_interest'),
          // Column::make('a1_name_of_entity'),
          // Column::make('a1_additional_information'),
          // Column::make('a2_declarable_interest'),
          // Column::make('a2_nature_of_personal_business_interest'),
          // Column::make('a2_corporate_or_business_name'),
          // Column::make('a2_decisions'),
          // Column::make('a2_independence_and_objectivity'),
          // Column::make('a2_additional_information_2'),
          // Column::make('a3_declarable_interest'),
          // Column::make('a3_personal_financial_interests'),
          // Column::make('a3_value_personal_financial_interests'),
          // Column::make('a3_professional_duties'),
          // Column::make('a3_mtn_business_activities'),
          // Column::make('a3_personal_financial_interests_conflict'),
          // Column::make('a3_additional_information_3'),
          // Column::make('a4_declarable_interest'),
          // Column::make('a4_nature_of_contracts'),
          // Column::make('a4_personal_gain_received'),
          // Column::make('a4_parties_involved'),
          // Column::make('a4_additional_information_4'),
          // Column::make('a5_declarable_interest'),
          // Column::make('a5_nature_of_the_influence'),
          // Column::make('a5_position_or_authority'),
          // Column::make('a5_close_associate'),
          // Column::make('a5_name_person_or_entity'),
          // Column::make('a5_authority_to_influence'),
          // Column::make('a5_additional_information_5'),
          // Column::make('a6_declarable_interest'),
          // Column::make('a6_solicited_investment'),
          // Column::make('a6_business_solicited_investment'),
          // Column::make('a6_nature_of_soliciting_business'),
          // Column::make('a6_additional_information_6'),
          // Column::make('a7_declarable_interest'),
          // Column::make('a7_proper_authorisation'),
          // Column::make('a7_value_or_nature_of_personal_gain'),
          // Column::make('a7_information_was_used'),
          // Column::make('a7_additional_information_7'),
          // Column::make('a8_declarable_interest'),
          // Column::make('a8_commercial_activities'),
          // Column::make('a8_sourced_or_promoted'),
          // Column::make('a8_third_parties_involved'),
          // Column::make('a8_commercial_activities_gain'),
          // Column::make('a8_additional_information_8'),
          // Column::make('a9_declarable_interest'),
          // Column::make('a9_whom_you_solicited'),
          // Column::make('a9_competition_with_MTN'),
          // Column::make('a9_additional_information_9'),
          // Column::make('a10_declarable_interest'),
          // Column::make('a10_coi_conduct'),
          // Column::make('a10_conflict_motivation'),
          // Column::make('a10_additional_information_10'),
          // Column::make('a11_declarable_interest'),
          // Column::make('a11_nature_of_declarable_interest'),
          // Column::make('a11_influence_your_judgement'),
          // Column::make('a11_additional_information_11'),
          // Column::make('a12_declarable_interest'),
          // Column::make('a12_decision_making_process'),
          // Column::make('a12_recuse'),
          // Column::make('a12_successful_in_securing_employment'),
          // Column::make('a12_additional_information_12'),
          // Column::make('a13_declarable_interest'),
          // Column::make('a13_business_relationship'),
          // Column::make('a13_enter_such_business_relationships'),
          // Column::make('a13_additional_information_13'),
          // Column::make('a14_declarable_interest'),
          // Column::make('a14_details_of_the_situation'),
          // Column::make('a14_additional_information_14'),
          // Column::make('a15_declarable_interest'),
          // Column::make('a15_employees_involved'),
          // Column::make('a15_relevant_details'),
          // Column::make('a15_additional_information_15'),
          // Column::make('a16_declarable_interest'),
          // Column::make('a16_momo_operate'),
          // Column::make('a16_momo_family'),
          // Column::make('a16_confidential_corporate_information'),
          // Column::make('a16_financial_benefit_family'),
          // Column::make('a16_additional_information_16'),
          // Column::make('a17_declarable_interest_17'),
          // Column::make('a17_dealer_or_dealer'),
          // Column::make('a17_appointed_director'),
          // Column::make('a18_declarable_interest_18')->title('17_a_declarable_interest'),
          // Column::make('a18_nature_of_trading')->title('17_a_nature_of_trading'),
          // Column::make('a18_number_of_shares')->title('17_a_number_of_shares'),
          // Column::make('a18_buyer_or_seller')->title('17_a_buyer_or_seller'),
          // Column::make('a18_date_trading')->title('17_a_date_trading'),
          // Column::make('a19_declarable_interest_19')->title('17_b_declarable_interest'),
          // Column::make('a19_subs_shareholder')->title('17_b_subs_shareholder'),
          // Column::make('a19_the_nature_of_relationship')->title('17_b_the_nature_of_relationship'),
          // Column::make('a19_nature_of_interest')->title('17_b_nature_of_interest'),
          // Column::make('a19_particulars')->title('17_b_particulars'),
          // Column::make('a20_declarable_interest_20')->title('a18_declarable_interest'),
          // Column::make('a20_details')->title('a18_details'),

            // Column::make('name'),

        ];
    }

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