<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App;
use Auth;
use Yajra\Datatables\Datatables;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\File;

class TapalRouteController extends Controller
{
	protected $childarray=[];
    public function __construct()
    {
        $this->middleware('auth');
    }
    public function show()
    {
    	// getting username
    	$name=Auth::user()->name;
    	//getting tapal subjects
        $sub=\App\Subject::get();    
        //getting office
          $offz=\App\Office::all();
         // dd($name);
        //getting route name   
    	return view('tapalrouting',compact('name','sub','offz'));
    }

    public function routeset(Request $request)

    {
    	$usrid=Auth::user()->id;
    	$subject_id=$request->input('tapalsubject');
    	$routename=$request->input('routename');

    	//INSERT INTO Troute Table
    	$insert_id=\App\Troute::create([
    		'subject_id'=>$subject_id,
    		'user_id'=>$usrid,
    		'routename'=>$routename,
    	    ]);
    	 $optioncount=$request->optioncount;
    	 for($i=1;$i<=$optioncount;$i++)
    	   {
    	   		$levelval="level".$i;
    	   		$officeval="office".$i;
    	   		$seatval="seat".$i;
    	   		$level=$request->$levelval;
    	   		$office=$request->$officeval;
    	   		$seat=$request->$seatval;
                //dd($seat);
    	   		$option_id=\App\Trouteconf::create([
    	   			'troute_id'=>$insert_id->id,
    	   			'level'=>$level,
    	   			'office_id'=>$office,
    	   			'seat_id'=>$seat,



    	   		]);
    	   	}
            if($insert_id)
            notify()->success('Route Set!');
        else
           smilify('Error', 'Error Occurred Pls recheck!');
        return redirect()->back();
    }

public function tableindex()
{
		$i=0;
		$data=[];
		$troutes=\App\Troute::with('subject')->get();
		foreach($troutes as $troute)
		{	
			$id=$troute->id;
			$troutename=$troute->routename;
            if(isset($troute->subject_id))
            {
			     $subjectname=$troute->subject->subject;
            }
            else
            {
                $subjectname = "";
            }

			$updated_at=$troute->updated_at->format('d-M-Y');

		
		 $obj = new \stdClass;
                $obj->incid = $i + 1;
                $obj->id = $id;
                $obj->routename = $troutename;
                $obj->subject = $subjectname;
                $obj->updated_at = $updated_at;
                $data[$i] = $obj;
                $i++;

            }

            $routetabledata = collect($data);
          
            return Datatables::of($routetabledata)
            ->addColumn('action', function ($routedata) {
                return '<a href="' . url('showroutetable') . '/' . $routedata->id . '" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> Show</a>';
            })
            ->editColumn('id', 'ID: {{$incid}}')
            ->make(true);




}


public function showroutedata(Request $request,$id)
		{
			$troute=\App\Troute::find($id);
			$trouteconf=\App\Trouteconf::where('troute_id',$id)->with('seat')->get();
			foreach($trouteconf as $trout)
			{
   				$level=$trout->level;
   				for($i=1;$i<=$level;$i++)
   				{
   					$seatname=$trout->seat->seat_name;
   					$officeid=$trout->office_id;
   					
			}

			}

return view('showroutetable',compact('troute'));


}

public function updateroutedata(Request $request)
{
 $this->validate($request,[
           'subject'=>'required',
            'routename'=>'required']);
 $routename=$request->routename;
 $subject=$reuest->subject;
 $id=$request->trouteid;
 $trout=\App\Troute::findorfail($id);
 $trout->subject=$subject;
 $trout->routename=$routename;
 $troute->save();
 return redirect('tapalroute');




}

///////////////////////////////////////////////////////////////////file Routing

public function fshow()
    {
    	 //getting username
    	$name=Auth::user()->name;
    	//getting file group 
        $file_group=\App\File_Group::get();    
        //getting office
          $offz=\App\Office::all();
        //getting route name   
    	return view('filerouting',compact('name','file_group','offz'));
       // return view('filerouting');

}
//////////////////file route set
public function frouteset(Request $request)

    {
    	$usrid=Auth::user()->id;
    	$file_group_id=$request->input('filegroup');
    	$froutename=$request->input('froutename');
    	//INSERT INTO Troute Table
    	$insert_id=\App\Troute::create([
    		'file_group_id'=>$file_group_id,
    		'user_id'=>$usrid,
    		'froutename'=>$froutename,
    	    ]);
    	 $optioncount=$request->optioncount;
    	 for($i=1;$i<=$optioncount;$i++)
    	   {
    	   		$levelval="level".$i;
    	   		$officeval="office".$i;
    	   		$seatval="seat".$i;
    	   		$level=$request->$levelval;
    	   		$office=$request->$officeval;
    	   		$seat=$request->$seatval;
    	   		$option_id=\App\Trouteconf::create([
    	   			'troute_id'=>$insert_id->id,
    	   			'level'=>$level,
    	   			'office_id'=>$office,
    	   			'seat_id'=>$seat,



    	   		]);
    	   	}
            if($insert_id)
            notify()->success('Route Set!');
        else
           smilify('Error', 'Error Occurred Pls recheck!');
           return redirect()->back();

}

public function ftableindex()
{
		$i=0;
		$data=[];
		$troutes=\App\Troute::with('file_group')->get();
		foreach($troutes as $troute)
		  {	
			  $id=$troute->id;

               if((isset($troute->froutename))&&(isset($troute->file_group)))
                {
                    $froutename=$troute->froutename;
                    $file_groupname=$troute->file_group->file_group;
                    $updated_at=$troute->updated_at->format('d-M-Y');

        
                        $obj = new \stdClass;
                        $obj->incid = $i + 1;
                        $obj->id = $id;
                        $obj->froutename = $froutename;
                        $obj->file_group = $file_groupname;
                        $obj->updated_at = $updated_at;
                        $data[$i] = $obj;
                        $i++;
                
                     }
                    else
                {
                 $troute->froutename= "";
                 $file_groupname= "";
                }  
			

            }
         
            $froutetable = collect($data);
           
          
            return Datatables::of($froutetable)
            ->addColumn('action', function ($routedata) {
                return '<a href="' . url('showfroutetable') . '/' . $routedata->id . '" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i> Show</a>';
            })
            ->editColumn('id', 'ID: {{$incid}}')
            ->make(true);
}


public function showfroutedata(Request $request,$id)
        {
            
            $froute=\App\Troute::find($id);
               $frouteconf=\App\Trouteconf::where('troute_id',$id)->with('seat')->get();
                   foreach($frouteconf as $frout)
                       {
                           $level=$frout->level;
                          for($i=1;$i<=$level;$i++)
                            {
                                    $seatname=$frout->seat->seat_name;
                                    $officeid=$frout->office_id;
                    
                           }

                         }
                     

return view('showfroutetable',compact('froute'));


}

public function updatefroutedata(Request $request)
{
 $this->validate($request,[
           'file_group'=>'required',
            'routename'=>'required']);

 $froutename=$request->froutename;
 dd($froutename);
 $subject=$reuest->file_group;
 $id=$request->trouteid;
 $trout=\App\Troute::findorfail($id);
 $trout->file_group=$subject;
 $trout->froutename=$froutename;
 $troute->save();
 return redirect('fileroute');




}



}