<?php

namespace App\Http\Controllers\Excell;
use Illuminate\Support\Facades\Auth;
use App\Facalty;
use App\Course;
use App\Degree;
use App\Educator;
use App\Level;
use App\Subject;
use Illuminate\Http\Request;
use App\User;
use App\Order;
use DB;
use App\Http\Controllers\Excell\Excel;
use App\Http\Controllers\Controller;
use Session;
use PHPExcel; 
use PHPExcel_IOFactory;


class ExcelView extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth:admin');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index($file_path)
    {
        // $file_path = Session::get('execl');
        Session()->forget('execl_error');
        $excel = new Excel($file_path);
        // $excel = new Excel('excel/155178460238359.xlsx');
        $arrau_value=$excel->toArray();
        // return json_encode($excel->toArray());
        $result = array();

        for ($i=0; $i < count($arrau_value); $i++) { 
           $Validator= self::arrayValidator($arrau_value[$i]);
          // echo json_encode($Validator);
           if($Validator){

            // echo  json_encode($Validator);
             
            // echo "<br>";
            // echo "<br>";
            // echo "<br>";
             if(self::addsCourse($Validator)){
                Session::flash('success_excel', 'Courses successfully created.'); 
             }
            } else {
                if ($arrau_value[$i]['package_name']==null) {
                break;
                 }else{
                    $result[]=$arrau_value[$i];
                 }
              

              
            }

        }
        // self::DownloadExcel($result);
       // return json_encode($result);
    // return Redirect::route('/admin/excel/done')->with('message', 'State saved correctly!!!');
        Session()->put('execl_error', $result);
        return redirect()->action('Excell\ExcelView@done');

    }

    public function DownloadExcel($data){
        $fichier = 'erroruplode.csv';
         header( "Content-Type: text/csv;charset=utf-8" );
         header( "Content-Disposition: attachment;filename=\"$fichier\"" );
         header("Pragma: no-cache");
         header("Expires: 0");

         $fp= fopen('php://output', 'w');

         foreach ($data as $fields) 
         {
            fputcsv($fp, $fields);
         }
         fclose($fp);
    }




    public function arrayValidator($data){
        $data['product_image'] = "";
        $courseValidator = self::courseValidator($data);
        $dropdownValidator = self::dropdownValidator($data);

        $degree = self::degreeValidator($data);
        if ($degree != false) {
            $data = $degree;
        }
        $faculty_name = self::facultyValidator($data);
        if ($faculty_name != false) {
            $data = $faculty_name;
        }

        $level = self::level($data);
        if($level != false){
            $data = $level;
        }
        $subject = self::subject($data);
        if ($subject  != false) {
            $data = $subject;
        }
        
        if($courseValidator !=false && $degree != false && $level != false && $subject != false  && $dropdownValidator != false && $faculty_name != false){
            return $data;
        } else {
            return false;
        }
        
    }

    public function courseValidator($data){
        $Course = Course::where( 'slug' , $data['slug'] )->count();
        if ($Course == 0) {
            return true;
        } else {
            return false;
        }
    }

    public function degreeValidator($data){
        $Degree = Degree::where( 'name' , $data['degree'] )->get();
        if (count($Degree) != 0) {
            $data['degree'] = $Degree['0']['id'];
            return $data;
        } else {
            return false;
        }
    }

    public function level($data){
        $level = Level::where( 'name' , $data['level'] )->get();
        if (count($level) != 0) {
            $data['level'] = $level['0']['id'];
            return $data;
        } else {
            return false;
        }
    }

    public function subject($data){
         $subjet_rep = str_replace(".",",",$data['subject']);
        $subject = Subject::where( 'name' , $subjet_rep )->get();
        if (count($subject) != 0) {
            $data['subject'] = $subject['0']['id'];
            return $data;
        } else {
            return false;
        }
        
    }

    public function dropdownValidator($data){
        $format=array("Online","Downloadable","Pendrive/USB","CD/DVD","SD Card","Tablet","Laptop","Hard Disk","");
        $syllabus = array("Old","New","Old & New","");
        $material_by = array("Soft Copy","Hard Copy","Not Provided","");
        $fast_forward = array("Yes","No","");
        $dispatch = array("Partly","Complete","");
        $shipment_required = array("Yes","No","");

            if (in_array($data['format'], $format) && in_array($data['syllabus'], $syllabus) && in_array($data['material_by'], $material_by) && in_array($data['fast_forward'], $fast_forward) && in_array($data['dispatch'], $dispatch) && in_array($data['shipment_required'], $shipment_required)){
                return true;
            } else {
                return false;
            }
    }

    public function facultyValidator($data){
        $Educator = Educator::where( 'coaching_classes' , $data['faculty_name'] )->get();
        if (count($Educator) != 0) {
            $data['faculty_name'] = $Educator['0']['id'];
            return $data;
        } else {
            return false;
        }
    }

    public function addsCourse($request){
        // $course = new Course();
        // $course->push($data);
        // $res = $course->save();
        // return json_encode($request);
        $course = new Course();
             $package_name= $request['package_name'];
            $course->package_name =$package_name;
                $course->slug = ($request['slug'])? $request['slug'] :'';
                $course->popular = ($request['popular'])? $request['popular'] :'';
                $course->degree = ($request['degree'])?$request['degree']:'';
                $course->level = ($request['level'])?$request['level']:'';
                $course->subject = ($request['subject'])?$request['subject']:'';
                
                $course->product_image = '';
                $course->product_details  = isset($request['product_details'])?$request['product_details']:'';
                $course->recording = isset($request['recording'])?$request['recording']:'';
                $course->syllabus = ($request['syllabus'])?$request['syllabus']:'';
                $course->format = ($request['format'])?$request['format']:'';
                $course->material_by  = ($request['material_by'])?$request['material_by']:'';
                $course->hard_copy = ($request['hard_copy'])?$request['hard_copy']:'';
                $course->price =( $request['price'])? $request['price']:'';
                $course->discounted_price  = ($request['discounted_price'])?$request['discounted_price']:'';
                $course->applicable_for_attempt = ($request['applicable_for_attempt'])?$request['applicable_for_attempt']:'';
                $course->faculty_name = ($request['faculty_name'])?$request['faculty_name']:'';
                $course->lectures_no  = ($request['lectures_no'])?$request['lectures_no']:'';
                $course->hours_no = ($request['hours_no'])?$request['hours_no']:'';
                $course->video_language = ($request['video_language'])?$request['video_language']:'';
                $course->lectures_view  = ($request['lectures_view'])?$request['lectures_view']:'';
                $course->fast_forward = ($request['fast_forward']) ? $request['fast_forward'] : '';
                $course->fast_forward_details = ($request['fast_forward_details']) ? $request['fast_forward_details'] :'';
                $course->expire_validity =( $request['expire_validity']) ?  $request['expire_validity'] : '';
                $course->topics_covered  = ($request['topics_covered']) ? $request['topics_covered'] : '';

                $course->doubt_clearing_availability = ($request['doubt_clearing_availability']) ? $request['doubt_clearing_availability'] : '';
                $course->amendmend  = ($request['amendmend']) ? $request['amendmend'] : '';
                $course->video_run_on = ($request['video_run_on']) ? $request['video_run_on'] : '';
                $course->mention_details = ($request['mention_details']) ? $request['mention_details'] : '';
                $course->charts_details  = ($request['charts_details']) ? $request['charts_details'] : '';
                $course->dispatch = ($request['dispatch']) ? $request['dispatch'] : '';
                $course->dispatch_schedule = ($request['dispatch_schedule']) ? $request['dispatch_schedule'] :'';
                $course->lectures_link  = ($request['lectures_link']) ? $request['lectures_link'] : ''; 

                
                $course->books_images_link = ($request['books_images_link']) ? $request['books_images_link'] : '';
                $course->other_details  = ($request['other_details']) ? $request['other_details'] : '';
                $course->shipment_required = ($request['shipment_required']) ? $request['shipment_required'] : '';
                $course->meta_title = ($request['meta_title']) ? $request['meta_title'] : '';
                $course->meta_tags  = ($request['meta_tags']) ? $request['meta_tags'] : '';
                $course->meta_details = ($request['meta_details']) ? $request['meta_details'] : '';
               
                $course->status = 1;

// return json_encode($course);          
      $res = $course->save();
        if($res){
            return true;
        } else {
            return false;
        }

    }



    public function uplodeExcel(){
        return view('admin.excel.add');
    }
    public function uplodeExcelFill(Request $request){
        $filePath = "";
        if($request->hasFile('image1')) {        
            $extension = $request->file('image1')->getClientOriginalExtension();
            $photoname = time().rand(11111,99999).'.'.$extension;
            $request->file('image1')->move(public_path() .'/excel', $photoname);
            $filePath='excel/'. $photoname;
        }
        // Session::set('execl', $filePath);
        $request->session()->put('execl', $filePath);

        echo view('admin.excel.chacking');
        
       return self::index($filePath);
    }

    public function done(){
       return view('admin.excel.chacking');
    }
    




    
}
