<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\DataTables\DivisionDatatables;
use App\DataTables\DepartmentDatatables;
use App\Department;
use App\CoiUsers;
use App\AuditTrail;
use Illuminate\Support\Facades\Log;
use App\Division;
use Illuminate\Support\Facades\Session;

class DivisionController extends Controller
{
    public function index(DivisionDatatables $datatable){
      return $datatable->render('admin.division.index');
    }

    public function add(Request $request){
      $name = $request->input('name');
      $description = $request->input('description');

      $div = new Division();

      $div->name=$name;
      $div->description=$description;
      $div->save();
      Session::flash('success', 'Division Added!!');
      return redirect()->route('groupmanager.index');
    }

    public function edit($id){
      $div = Division::where('id',$id)->first();
      $data=['div'=>$div];

      return view('admin.division.edit',$data);
    }

    public function update(Request $request,$id){
      $name = $request->input('name');
      $description = $request->input('description');
      $div = Division::where('id',$id)->first();

      $div->name=$name;
      $div->description=$description;

      $div->save();
      Session::flash('success', 'Division Updated!');
      return redirect()->route('groupmanager.index');



    }

    public function delete($id){
      $div = Division::where('id',$id)->first();
      $div->delete();

      Session::flash('success', 'Division Deleted!');
      return redirect()->route('groupmanager.index');

    }


    public function department_index(DepartmentDatatables $datatable){
      $div = Division::get();
      $data=[
        'div'=>$div
      ];
      return $datatable->render('admin.department.index',$data);
    }


    public function department_add(Request $request){
      $name=$request->input('name');
      $email=$request->input('email');
      $div=$request->input('division');
      $description=$request->input('description');

      $dept =new Department();

      $dept->name=$name;
      $dept->email=$email;
      $dept->division=$div;
      $dept->description=$description;

      $dept->save();
      Session::flash('success', 'Department Added!');
      return redirect()->route('groupmanager.dept.index');

    }

    public function department_edit($id){
      $div = Department::where('id',$id)->first();
      $divs = Division::get();

      $data=['div'=>$div,'divs'=>$divs];

      return view('admin.department.edit',$data);
    }


    public function department_update(Request $request,$id){


      $name=$request->input('name');
      $email=$request->input('email');
      $div=$request->input('division');
      $description=$request->input('description');

      $dept = Department::where('id',$id)->first();

      $dept->name=$name;
      $dept->email=$email;
      $dept->division=$div;
      $dept->description=$description;
      $dept->save();
      Session::flash('success', 'Department Updated!');
      return redirect()->route('groupmanager.dept.index');



    }

    public function department_delete($id){
      $div = Department::where('id',$id)->first();
      $div->delete();

      Session::flash('success', 'Department Deleted!');
      return redirect()->route('groupmanager.dept.index');

    }


    public function banuser(CoiUsers $id){
      if ($id !== null) {
        $id->update([
          'can_login'=> $id->can_login == 1 ?0 :1,
        ]);
        if ($id->can_login ==1) {
          AuditTrail::create([
            'userid'=>auth()->guard('adminguard')->user()->id,
            'name'=>auth()->guard('adminguard')->user()->name,
            'activity'=>'Granted Access: '.$id->name.' granted access to the COI Portal',
          ]);
                  return back()->with('success','Action Completed,'.$id->name.' granted access to the COI Portal');

        }else {
          AuditTrail::create([
            'userid'=>auth()->guard('adminguard')->user()->id,
            'name'=>auth()->guard('adminguard')->user()->name,
            'activity'=>'Revoked Access: Revoked access of '.$id->name.' to COI Portal',
          ]);
          return back()->with('success','Action Completed, Revoked access of '.$id->name.' to COI Portal');
        }
        //
      }else {
        return back()->with('error','User record not found. Request aborted.');
      }
    }

    public function banall(){
      AuditTrail::create([
        'userid'=>auth()->guard('adminguard')->user()->id,
        'name'=>auth()->guard('adminguard')->user()->name,
        'activity'=>'Revoked Access: Revoked access of all users to COI Portal',
      ]);
      $users = CoiUsers::all();
      foreach ($users as $key) {
      $key->update([
        'can_login'=> 0,
      ]);
      }
      return back()->with('success','Action Completed, Revoked access of all users to COI Portal');
    }


    public function bangrantall(){
      AuditTrail::create([
        'userid'=>auth()->guard('adminguard')->user()->id,
        'name'=>auth()->guard('adminguard')->user()->name,
        'activity'=>'Grant Access: Granted access to all users to COI Portal',
      ]);
      $users = CoiUsers::all();
      foreach ($users as $key) {
      $key->update([
        'can_login'=> 1,
      ]);
      }
      return back()->with('success','Action Completed, All users granted access to COI Portal');
    }





}
