<?php

namespace App\Http\Controllers;
use App\DataTables\PossibleConflictTable;
use App\DataTables\NoCOnflictTable;
use App\DataTables\GDMedium;
use App\DataTables\GDHigh;
use App\DataTables\AssessmentReportMomo;
use App\DataTables\AssessmentReport;
use App\DataTables\Summary;
use App\DataTables\NoPartTable;
use Illuminate\Http\Request;
use App\CoiUsers;
use App\Division;
use App\Assess;
use App\AuditTrail;
use App\Jobs\CoiAssessment;
use Illuminate\Support\Facades\Session;
use App\AdminModel;
use App\DataTables\MomoDeclaration;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class AssessmentController extends Controller
{



  public function sendmail($subj,$mailto,$msg){
    $curl = curl_init();
  $mailurl = env('MAIL_URL');
  $mailauth = env('MAIL_AUTH');
    curl_setopt_array($curl, array(
      CURLOPT_URL => $mailurl,
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => '',
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 0,
      CURLOPT_FOLLOWLOCATION => true,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => 'POST',
      CURLOPT_POSTFIELDS =>'{
      "subject":"'.$subj.'",
      "recipient":"'.$mailto.'",
      "msg":"'.$msg.'"
    }',
      CURLOPT_HTTPHEADER => array(
        $mailauth,
        'Content-Type: application/json'
      ),
    ));

    $response = curl_exec($curl);

    curl_close($curl);
    Log::channel('coi')->info('curl executed and closed.');
    // echo $response;
  Log::channel('coi')->info('curl response: '.$response);
  }




    public function withconflictindex(PossibleConflictTable $dt){
      AuditTrail::create([
        'userid'=>auth()->guard('adminguard')->user()->id,
        'name'=>auth()->guard('adminguard')->user()->name,
        'activity'=>'View: Is viewing Reports with possible conflicts page',
        // 'message',
      ]);
      return $dt->render('admin.assess.possibleconflict');
    }

    public function assessconflict($id){
      $user = CoiUsers::where('id',$id)->first();
      $assess = Assess::where('userid',$id)->get();
      // return $user;
        $data=[
          'a1'=>$user->a1_declarable_interest,
          'a2'=>$user->a2_declarable_interest,
          'a3'=>$user->a3_declarable_interest,
          'a4'=>$user->a4_declarable_interest,
          'a5'=>$user->a5_declarable_interest,
          'a6'=>$user->a6_declarable_interest,
          'a7'=>$user->a7_declarable_interest,
          'a8'=>$user->a8_declarable_interest,
          'a9'=>$user->a9_declarable_interest,
          'a10'=>$user->a10_declarable_interest,
          'a11'=>$user->a11_declarable_interest,
          'a12'=>$user->a12_declarable_interest,
          'a13'=>$user->a13_declarable_interest,
          'a14'=>$user->a14_declarable_interest,
          'a15'=>$user->a15_declarable_interest,
          'a16'=>$user->a16_declarable_interest,
          'a17'=>$user->a17_declarable_interest_17,
          'a18'=>$user->a18_declarable_interest_18,
          'a19'=>$user->a19_declarable_interest_19,
          'a20'=>$user->a20_declarable_interest_20,
          'user'=>$user,
          'assess'=>$assess,


        ];
      $adminidd = Session::get('adminid');
      $admin = AdminModel::where('id',$adminidd)->first();
      $admin->log('(Admin):Redirected to assessment page of '.$user->name.', id :('.$user->id.')');
      return view('admin.assess.show',$data);
    }


    public function postrreview(Request $r,CoiUsers $id){
      if ($id->conflict==1 && $id->momoconflict==0) {
        Assess::create([
          'userid'=>$id->id,
          'name'=>$id->name,
          'dept'=>$id->dept,
          'division'=>$id->division,
          'comment'=>$r->comment,
          'risk_rate'=>$r->risk_rate,
          'risk_cat'=>$r->risk_cat,
          'recommendations'=>$r->recommendations,
          'gen_momo'=>1
        ]);
      }elseif ($id->momoconflict==1) {
        Assess::create([
          'userid'=>$id->id,
          'name'=>$id->name,
          'dept'=>$id->dept,
          'division'=>$id->division,
          'comment'=>$r->comment,
          'risk_rate'=>$r->risk_rate,
          'risk_cat'=>$r->risk_cat,
          'recommendations'=>$r->recommendations,
          'gen_momo'=>0
        ]);
      }

$data = [
  'name'=>$id->name,
  'email'=>$id->email,
  'coidate'=>date('l d M, Y ',strtotime($id->updated_at)),
  'comment'=>$r->comment,
  'risk_rate'=>$r->risk_rate,
  'risk_cat'=>$r->risk_cat,
  'recommendations'=>$r->recommendations,
];


// $this->sendmail('MTN CONFLICT OF INTEREST',$id->email,"Hello ".$id->name.",\\n Kindly find below the response from the MTN COI Assessment Team with regards to your COI form submitted on ".date('l d M, Y ',strtotime($id->updated_at))."\\n\\n Comment: ".$r->comment."\\n Risk Rate: ".$r->risk_rate."\\n Risk Category:".$r->risk_cat."\\n Recommendations: ".$r->recommendations." \\n\\n Thanks,\\nMTN COI 2023");

      // CoiAssessment::dispatch($data);
      AuditTrail::create([
        'userid'=>auth()->guard('adminguard')->user()->id,
        'name'=>auth()->guard('adminguard')->user()->name,
        'activity'=>'Assess: Accessed coi of '.$id->name.' and id '.$id->id.' with conflict',
        // 'message',
      ]);
      return back()->with('success','Assessment Response Sent!');
    }

    public function noclonflict(NoCOnflictTable $dt){
      AuditTrail::create([
        'userid'=>auth()->guard('adminguard')->user()->id,
        'name'=>auth()->guard('adminguard')->user()->name,
        'activity'=>'View: Is viewing Reports with no conflicts page',
        // 'message',
      ]);
      return $dt->render('admin.assess.noconflict');
    }

    public function nonepart(NoPartTable $dt){
      AuditTrail::create([
        'userid'=>auth()->guard('adminguard')->user()->id,
        'name'=>auth()->guard('adminguard')->user()->name,
        'activity'=>'View: Is viewing Reports with no participation',
        // 'message',
      ]);
      return $dt->render('admin.assess.nopart');
    }

    public function assesswoconflict(CoiUsers $id){
      if ($id !==null ) {
        $id->update([
          'conflict'=>0,
          'momoconflict'=>0,
        ]);
        $data = [
          'name'=>$id->name,
          'email'=>$id->email,
          'coidate'=>date('l d M, Y ',strtotime($id->updated_at)),
          'comment'=>'Assessment completed successfully without any conflict.',
        ];
              // CoiAssessment::dispatch($data);
              AuditTrail::create([
                'userid'=>auth()->guard('adminguard')->user()->id,
                'name'=>auth()->guard('adminguard')->user()->name,
                'activity'=>'Assess: Assessed coi of '.$id->name.' and id '.$id->id.' with no conflict',
                // 'message',
              ]);
        return redirect()->route('assess.withconflict.index')->with('success','Assessment Completed');
      }
    }


    public function showassessreport(AssessmentReport $dt){
      // return ->get();
      return $dt->render('admin.assess.report');
    }

    public function showassessreportt(AssessmentReportMomo $dt){
      // return ->get();
      return $dt->render('admin.assess.momodecreport');
    }




    public function gd_high(GDHigh $dt){

      return $dt->render('admin.assess.gh_high');
    }

    public function gd_medium(GDMedium $dt){
      return $dt->render('admin.assess.gh_medium');
    }


    public function momodec(MomoDeclaration $dt){
      return $dt->render('admin.assess.momodeclaration');
    }

public function summary(Summary $dt){
  return $dt->render('admin.assess.summary');
  $divisions = Division::get();
  $getdatadiv = DB::table('assess')->select('division')->distinct()->get();
  $data = collect();
  $sumgen = Assess::where('gen_momo','1')->count();
  $summomo = Assess::where('gen_momo','0')->count();
  foreach ($getdatadiv as $key) {
    $gen = Assess::where('division',$key->division)->where('gen_momo','1')->count();
    $glow = Assess::where('division',$key->division)->where('risk_cat','Low')->where('gen_momo','1')->count();
    $gmedium = Assess::where('division',$key->division)->where('risk_cat','Medium')->where('gen_momo','1')->count();
    $ghigh = Assess::where('division',$key->division)->where('risk_cat','High')->where('gen_momo','1')->count();
    $gvhigh = Assess::where('division',$key->division)->where('risk_cat','Very High')->where('gen_momo','1')->count();

    $momo = Assess::where('division',$key->division)->where('gen_momo','0')->count();
    $mlow = Assess::where('division',$key->division)->where('risk_cat','Low')->where('gen_momo','0')->count();
    $mmedium = Assess::where('division',$key->division)->where('risk_cat','Medium')->where('gen_momo','0')->count();
    $mhigh = Assess::where('division',$key->division)->where('risk_cat','High')->where('gen_momo','0')->count();
    $mvhigh = Assess::where('division',$key->division)->where('risk_cat','Very High')->where('gen_momo','0')->count();

    $datalist =[
      'division'=>$key->division,
      'gen'=>$gen,
      'momo'=>$momo,
      'glow'=>$glow,
      'gmedium'=>$gmedium,
      'ghigh'=>$ghigh,
      'gvhigh'=>$gvhigh,
      'sumg'=>$glow+$gmedium+$ghigh+$gvhigh,

      'mlow'=>$mlow,
      'mmedium'=>$mmedium,
      'mhigh'=>$mhigh,
      'mvhigh'=>$mvhigh,
      'msum'=>$mlow+$mmedium+$mhigh+$mvhigh,

      // 'sumlow'=>
    ];

    $data->add($datalist);
  }
  return view('admin.assess.summary',compact('data','sumgen','summomo'));
  // return $data;
  // foreach ($divisions as $key) {
  //   // get general declaration list ie, conflict =1 and momoconflict =0
  //   $gendec = CoiUsers::where('conflict','1')->where('momoconflict','0')->whereHas('assess', function($q){
  // $q->where('risk_cat', '=', 'Very High')
  // }
}

}
