<?php
namespace App\Http\Controllers;
use App\Book;
use App\TestSeries;
use App\Level;
use App\Degree;
use App\Course;
use App\Subject;
use App\Educator;
use App\Coupon;
use App\Cart;
use App\UserCart;
use Illuminate\Http\Request;
use Softon\Indipay\Facades\Indipay;  
use DB;
use Auth;


class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    // public function __construct()
    // {
    //     $this->middleware('auth');
    // }

    // *
    //  * Show the application dashboard.
    //  *
    //  * @return \Illuminate\Http\Response
     
    // public function index()
    // {
    //     return view('home');
    // }
    public function index()
    {
        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $randomcources = Course::where('status', '1')->inRandomOrder()->limit(10)->get();
        $educators = Educator::all()->where( 'status' , '1' );
        
        $popularcourceslist = Course::all()->where( 'popular' , 'Yes' );
         return view('user.pages.index')->withdegrees($degrees)->withCourceslist($courses)->withPopular($popularcourceslist)->withRandomcources($randomcources)->withEducators($educators);
    }
    public function facaltyregistration()
    {
        $courses = Course::all()->take(10)->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
         return view('user.pages.facalty')->withdegrees($degrees)->withCourses($courses);
    }
    public function privacypolicy()
    {
        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.privacypolicy')->withdegrees($degrees)->withCourses($courses);
    }
    public function sellerspolicy()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.sellerspolicy')->withdegrees($degrees)->withCourses($courses);
    }
    public function sellerfaq()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.sellerfaq')->withdegrees($degrees)->withCourses($courses);
    }
    
    public function shippingpolicy()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.shippingpolicy')->withdegrees($degrees)->withCourses($courses);
    }
    public function termsoffer()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.termsoffer')->withdegrees($degrees)->withCourses($courses);
    }
    public function useragreement()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.useragreement')->withdegrees($degrees)->withCourses($courses);
    }
    public function about()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.about')->withdegrees($degrees)->withCourses($courses);
    }
    public function contact()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.contact')->withdegrees($degrees)->withCourses($courses);
    }
    public function thankyou()
    {       
        return view('user.pages.thankyou');
    }
    public function cancel()
    {
        return view('user.pages.cancel');
    }
    public function foundation($slug)
    {
        $educator = Educator::where('slug', '=', $slug)->get()->first();
        $levels = Level::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $subjects = Subject::all()->where( 'status' , '1' );
        $educators = Educator::all()->where( 'status' , '1' );
        //echo $educator->id;
        $randomcources = Course::where('faculty_name', $educator->id)->inRandomOrder()->limit(10)->get();
        //print_r($randomcources);
       // die;
      
        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.foundation')->withEducator($educator)->withdegrees($degrees)->withSubjects($subjects)->withLevels($levels)->withDegrees($degrees)->withCourses($courses)->withEducators($educators)->withRandomcources($randomcources);
    }
    public function shop()
    {
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        return view('user.pages.shop')->withdegrees($degrees)->withCourses($courses);
    }

    public function course($slug)
    {

        $degreecount = Degree::where('slug', '=', $slug)->count();
        $levelcount = Level::where('slug', '=', $slug)->count();
        $subjectcount = Subject::where('slug', '=', $slug)->count();
        $educators = Educator::all()->where( 'status' , '1' );
       
        $selecteddegree = array();
        $selectedlevel = array();
        $selectedsubject = array();
        $selectdfacalty = array();
        if($degreecount>0)
        {
           // echo "degree";
            $type = "degree";
           // echo '<pre>';
            $selecteddegree = Degree::where('slug', '=', $slug)->get()->first();
            $courceslist =  Course::where('degree', '=',$selecteddegree->id)->inRandomOrder()->get();
            $testserieslist =  TestSeries::where('degree', '=',$selecteddegree->id)->get();
            $bookslist =  Book::where('degree', '=',$selecteddegree->id)->inRandomOrder()->get();
            foreach($courceslist as $value)
            {

               $selectdfacalty[] = $value->faculty_name;
            }
            
            foreach($bookslist as $value)
            {
               $selectdfacalty[] = $value->author_name;
            }
            
            $submenus = Level::where('degree', '=',$selecteddegree->id)->get();
        }
        else if($levelcount>0)
        {
            $type = "level";
           
            $selectedlevel = Level::where('slug', '=', $slug)->get()->first();
            $selecteddegree = Degree::where('id', '=', $selectedlevel->degree)->get()->first();
            $submenus = Level::where('degree', '=',$selectedlevel->degree)->get();
            $courceslist =  Course::where('level', '=',$selectedlevel->id)->inRandomOrder()->get();
            $testserieslist =  TestSeries::where('level', '=',$selectedlevel->id)->inRandomOrder()->get();
            $bookslist =  Book::where('level', '=',$selectedlevel->id)->inRandomOrder()->get();
            foreach($courceslist as $value){
               $selectdfacalty[] = $value->faculty_name;
            
            }
            foreach($bookslist as $value){
               $selectdfacalty[] = $value->author_name;
            }
        }
        else if($subjectcount>0)
        {
            $type = "subject";
            $selectedsubject = Subject::where('slug', '=',  $slug)->get()->first();
            $submenus = Level::where('degree', '=',$selectedsubject->degree)->get();

            $selecteddegree = Degree::where('id', '=', $selectedsubject->degree)->get()->first();
            $selectedlevel = Level::where('id', '=', $selectedsubject->level)->get()->first();


            $courceslist =  Course::where('subject', '=',$selectedsubject->id)->inRandomOrder()->get();
            $testserieslist =  TestSeries::where('subject', '=',$selectedsubject->id)->inRandomOrder()->get();
            $bookslist =  Book::where('subject', '=',$selectedsubject->id)->inRandomOrder()->get();
            foreach($courceslist as $value){
               $selectdfacalty[] = $value->faculty_name;
            }
            foreach($bookslist as $value){
               $selectdfacalty[] = $value->author_name;
            }
        }
        else
        {
            $type = "all";
            $submenus = Degree::all()->where( 'status' , '1' );
            $courceslist =  Course::all()->where( 'status' , '1' );
            $testserieslist =  TestSeries::all()->where( 'status' , '1' );
            $bookslist =  Book::all()->where( 'status' , '1' );
            foreach($courceslist as $value){
               $selectdfacalty[] = $value->faculty_name;
            }
            foreach($bookslist as $value){
               $selectdfacalty[] = $value->author_name;
            }
        }
        
       
        
     //  print_r($selecteditem);

        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        // echo 'type';
        // echo $type;
        // echo "==================================";
        //  echo '<pre>';
        // // echo 'degree';
        //  print_r($selecteddegree);
        //   echo 'level';
        //   print_r($selectedlevel);
        //   echo $selectedlevel->name;
        //   echo $selecteddegree->name;

        //   echo 'sub';
        //   print_r($selectedsubject);
        // return view('user.pages.shop')->withdegrees($degrees)->withCourses($courses)->withSelecteditem($selecteditem)->withsubmenus($submenus);
        return view('user.pages.shop')->withdegrees($degrees)->withEducators($educators)->withCourses($courses)->withSubmenus($submenus)->withType($type)->withCourceslist($courceslist)->withTestserieslist($testserieslist)->withBookslist($bookslist)->withSelecteddegree($selecteddegree)->withSelectedlevel($selectedlevel)->withSelectedsubject($selectedsubject)->withSelectdfacalty($selectdfacalty);

    }
    public function search()
    {
        $results = array();
        $s=$_GET['s'];

        //cources
        $results1 = DB::select( DB::raw("SELECT * FROM courses WHERE package_name LIKE '%$s%'") );
        $results2 = DB::select( DB::raw("SELECT * FROM courses WHERE degree IN( SELECT ID FROM degrees WHERE name LIKE '%$s%')") );
        $results3 = DB::select( DB::raw("SELECT * FROM courses WHERE level IN( SELECT ID FROM levels WHERE name LIKE '%$s%')") );
        $results4 = DB::select( DB::raw("SELECT * FROM courses WHERE subject IN( SELECT ID FROM subjects WHERE name LIKE '%$s%')") );
        $results5 = DB::select( DB::raw("SELECT * FROM courses WHERE faculty_name IN( SELECT ID FROM educators WHERE coaching_classes LIKE '%$s%')") );
     
        $results = array_merge($results1,$results2);
        $results = array_merge($results,$results3);
        $results = array_merge($results,$results4);
        $results = array_merge($results,$results5);

        $temp = array_unique(array_column($results, 'id'));
        $unique_arr = array_intersect_key($results, $temp);

        //books

         $results11 = DB::select( DB::raw("SELECT * FROM books WHERE package_name LIKE '%$s%'") );
        $results21 = DB::select( DB::raw("SELECT * FROM books WHERE degree IN( SELECT ID FROM degrees WHERE name LIKE '%$s%')") );
        $results31 = DB::select( DB::raw("SELECT * FROM books WHERE level IN( SELECT ID FROM levels WHERE name LIKE '%$s%')") );
        $results41 = DB::select( DB::raw("SELECT * FROM books WHERE subject IN( SELECT ID FROM subjects WHERE name LIKE '%$s%')") );
        $results51 = DB::select( DB::raw("SELECT * FROM books WHERE author_name IN( SELECT ID FROM educators WHERE coaching_classes LIKE '%$s%')") );
     
        $results1 = array_merge($results11,$results21);
        $results1 = array_merge($results1,$results31);
        $results1 = array_merge($results1,$results41);
        $results1 = array_merge($results1,$results51);

        $temp1 = array_unique(array_column($results1, 'id'));
        $unique_arr1 = array_intersect_key($results1, $temp1);

        //books

         $results12 = DB::select( DB::raw("SELECT * FROM test_series WHERE package_name LIKE '%$s%'") );
        $results22 = DB::select( DB::raw("SELECT * FROM test_series WHERE degree IN( SELECT ID FROM degrees WHERE name LIKE '%$s%')") );
        $results32 = DB::select( DB::raw("SELECT * FROM test_series WHERE level IN( SELECT ID FROM levels WHERE name LIKE '%$s%')") );
        $results42 = DB::select( DB::raw("SELECT * FROM test_series WHERE subject IN( SELECT ID FROM subjects WHERE name LIKE '%$s%')") );
      
     
        $results2 = array_merge($results12,$results22);
        $results2 = array_merge($results2,$results32);
        $results2 = array_merge($results2,$results42);

        $temp2 = array_unique(array_column($results2, 'id'));
        $unique_arr2 = array_intersect_key($results2, $temp2);





        $submenus = Degree::all()->where( 'status' , '1' );
        $educators = Educator::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
         $educators = Educator::all()->where( 'status' , '1' );
        return view('user.pages.search')->withCourceslist($unique_arr)->withdegrees($degrees)->withEducators($educators)->withSubmenus($submenus)->withBookslist($unique_arr1)->withTestserieslist($unique_arr2)->withEducators($educators);
    }
    public function product($slug)
    {
       // echo $slug;
        $course = Course::where('slug', '=', $slug)->get()->first();

      
        $levels = Level::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $subjects = Subject::all()->where( 'status' , '1' );
        $educators = Educator::all()->where( 'status' , '1' );

        $relatedcources = Course::where('degree', $course->degree)->inRandomOrder()->limit(6)->get();
        // return view('user.pages.shop')->withdegrees($degrees)->withCourses($courses)->withSelecteditem($selecteditem)->withsubmenus($submenus);
         return view('user.pages.product')->withEducators($educators)->withCourse($course)->withSubjects($subjects)->withLevels($levels)->withDegrees($degrees)->withRelatedcources($relatedcources);

    }
    public function coupon_deduct(Request $request)
    {
       $coupon_discount_amount = 0;

       $coupon = Coupon::where( 'coupon_name',$request->coupon_code)->get()->first();
       $request->coupon_code;
       $request->subtotalprice;
       if(($coupon->count())>0)
       {
           if($coupon->coupon_type == 'Percentage')
           {
             $coupon_discount_amount = $request->subtotalprice*($coupon->coupon_amount/100);
           }
           else{
               $coupon_discount_amount = $coupon->coupon_amount;
           }
           
            $ucart_data = UserCart::where( 'user_id' ,$request->user_id )->get()->first();
            $ucart_data->coupon_code = $request->coupon_code;
            $ucart_data->coupon_discount = $coupon_discount_amount;
            $ucart_data->shipping_charge = $request->shipping_charge;
            $ucart_data->sub_total = $request->subtotalprice;
            $ucart_data->grand_total = ($request->subtotalprice - $coupon_discount_amount+$request->shipping_charge) ;

            $ucart_data->save(); 
            session()->flash('success', 'Coupon successfully added');
            return redirect()->route('checkout.index');
       }
       else{
          session()->flash('success', 'Please Enter Valid Coupon');
            return redirect()->route('checkout.index');
       }
    }
    public function coupon_remove()
    {
        $ucart_data = UserCart::where( 'user_id' , Auth::user()->id )->get()->first();
        $ucart_data->coupon_code = '';
        $ucart_data->coupon_discount = 0;
        $ucart_data->save(); 
        session()->flash('success', 'Coupon successfully removed');
        return redirect()->route('checkout.index');
    }


}
