<?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 App\Cms;
use App\Blog;
use App\Video;
use Illuminate\Http\Request;
use Softon\Indipay\Facades\Indipay;  
use DB;
use Auth;
use Validator;
use Mail;
use Redirect;

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()
    {
        $pageid = 2;//home
        $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' );
        $cms = Cms::find($pageid);

       
        return view('user.pages.index')->withdegrees($degrees)->withCourceslist($courses)->withPopular($popularcourceslist)->withRandomcources($randomcources)->withEducators($educators)->withCms($cms);
    }
    public function facaltyregistration()
    {
        $pageid = 13;//home
        $courses = Course::all()->take(10)->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $cms = Cms::find($pageid);
         return view('user.pages.facalty')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }
    public function privacypolicy()
    {
        $pageid = 7;//home
        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
         $cms = Cms::find($pageid);
        return view('user.pages.privacypolicy')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }
    public function sellerspolicy()
    {
        $pageid = 8;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
         $cms = Cms::find($pageid);
        return view('user.pages.sellerspolicy')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }
    public function sellerfaq()
    {
        $pageid = 12;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
         $cms = Cms::find($pageid);
        return view('user.pages.sellerfaq')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }
    
    public function shippingpolicy()
    {
        $pageid = 9;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $cms = Cms::find($pageid);
        return view('user.pages.shippingpolicy')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }
    public function termsoffer()
    {
        $pageid = 10;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $cms = Cms::find($pageid);
        return view('user.pages.termsoffer')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }
    public function useragreement()
    {
        $pageid = 11;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
         $cms = Cms::find($pageid);
        return view('user.pages.useragreement')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }
    public function about()
    {
        $pageid = 3;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $cms = Cms::find($pageid);
         $cms1 = Cms::find(4);
          $cms2 = Cms::find(5);
        return view('user.pages.about')->withdegrees($degrees)->withCourses($courses)->withCms($cms)->withCms1($cms1)->withCms2($cms2);
    }
    public function contact()
    {
        $pageid = 6;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
         $cms = Cms::find($pageid);
        return view('user.pages.contact')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }

      public function blog()
    {
       
         $pageid = 20;
         $cms = Cms::find($pageid);
         $blog = Blog::all()->where( 'status' , '1' );
         return view('user.pages.blog')->withblog($blog)->withCms($cms);
    }

      public function video()
    {
       
         $pageid = 21;
         $cms = Cms::find($pageid);
         $video = Video::all()->where( 'status' , '1' );
         return view('user.pages.video')->withCms($cms)->withVideo($video);
    }
    public function blog_detail($slug)
    {
         $latest_blog=DB::select( DB::raw("SELECT * FROM ( SELECT * FROM blogs ORDER BY id DESC LIMIT 4 ) sub WHERE `status`=1 ORDER BY id ASC") );

         $pageid = 20;
         $cms = Cms::find($pageid);
         $blog = Blog::all()->where( 'status' , '1' );
         $blogdetail = Blog::where('slug', '=', $slug)->get()->first();

         return view('user.pages.blog_detail')->withblog($blog)->withCms($cms)->withLatest_blog($latest_blog)->withBlogdetail($blogdetail);
    }
    public function thankyou()
    {    
        //$pageid = 2;//home   
        return view('user.pages.thankyou');
    }
    public function cancel()
    {
        //$pageid = 2;//home
        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();
       
      
        $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()
    {
        $pageid = 18;//home
       // $hostels = Hostel::paginate(2);
         $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $cms = Cms::find($pageid);
        return view('user.pages.shop')->withdegrees($degrees)->withCourses($courses)->withCms($cms);
    }

    public function course($slug)
    {
        $pageid = 18;
        $cms = Cms::find($pageid);
        $p_order = 'DESC';
        if(isset($_GET['order']))
        {
            if($_GET['order']=='asc')
            {
                $p_order = 'ASC';
            }
            else{
                $p_order = 'DESC';
            }
        }
        $pageid = 2;//home
        $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();
        $courcescount = 0;
        $testseriescount = 0;
        $bookscount = 0;
        if($degreecount>0)
        {
            $type = "degree";
            $selecteddegree = Degree::where('slug', '=', $slug)->get()->first();
            $courceslist =  Course::where('degree', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get();
            $testserieslist =  TestSeries::where('degree', '=',$selecteddegree->id)->get();
            $bookslist =  Book::where('degree', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get();
            $courceslistcount =  Course::where('degree', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get()->count();
            $testserieslistcount =  TestSeries::where('degree', '=',$selecteddegree->id)->get()->count();
            $bookslistcount =  Book::where('degree', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get()->count();
            if( $courceslistcount > 0 )
            {
                $courcescount++;
            }
            if( $testserieslistcount > 0 )
            {
                $testseriescount++;
            }
            if( $bookslistcount > 0 )
            {
                $bookscount++;
            }

            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)->orderBy('discounted_price',$p_order)->get();
            $testserieslist =  TestSeries::where('level', '=',$selectedlevel->id)->inRandomOrder()->get();
            $bookslist =  Book::where('level', '=',$selectedlevel->id)->orderBy('discounted_price',$p_order)->get();

            $courceslistcount =  Course::where('level', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get()->count();
            $testserieslistcount =  TestSeries::where('level', '=',$selecteddegree->id)->get()->count();
            $bookslistcount =  Book::where('level', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get()->count();

            if( $courceslistcount > 0 )
            {
                $courcescount++;
            }
            if( $testserieslistcount > 0 )
            {
                $testseriescount++;
            }
            if( $bookslistcount > 0 )
            {
                $bookscount++;
            }

            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)->orderBy('discounted_price',$p_order)->get();
            $testserieslist =  TestSeries::where('subject', '=',$selectedsubject->id)->orderBy('discounted_price',$p_order)->get();
            $bookslist =  Book::where('subject', '=',$selectedsubject->id)->orderBy('discounted_price',$p_order)->get();
            $courceslistcount =  Course::where('subject', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get()->count();
            $testserieslistcount =  TestSeries::where('subject', '=',$selecteddegree->id)->get()->count();
            $bookslistcount =  Book::where('subject', '=',$selecteddegree->id)->orderBy('discounted_price',$p_order)->get()->count();
            if( $courceslistcount > 0 )
            {
                $courcescount++;
            }
            if( $testserieslistcount > 0 )
            {
                $testseriescount++;
            }
            if( $bookslistcount > 0 )
            {
                $bookscount++;
            }
            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::where( 'status' , '1' )->orderBy('discounted_price',$p_order)->get();
            $testserieslist =  TestSeries::where( 'status' , '1' )->orderBy('discounted_price',$p_order)->get();
            $bookslist =  Book::where( 'status' , '1' )->orderBy('discounted_price',$p_order)->get();


            $courceslistcount =  Course::where( 'status' , '1' )->get()->count();
            $testserieslistcount =  TestSeries::where( 'status' , '1' )->get()->count();
            $bookslistcount =  Book::where( 'status' , '1' )->get()->count();
            if( $courceslistcount > 0 )
            {
                $courcescount++;
            }
            if( $testserieslistcount > 0 )
            {
                $testseriescount++;
            }
            if( $bookslistcount > 0 )
            {
                $bookscount++;
            }

            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  "courceslist".$courceslist->count();
        $courcescount = $courceslist->count();
        // echo '<br>';
        // echo "bookslist". $bookslist->count();
        $bookscount = $bookslist->count();
        // echo '<br>';
        // echo "testserieslist".$testserieslist->count();
        $testseriescount = $testserieslist->count();
        // echo '<br>';

        //   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)->withCms($cms)->withCourcescount($courcescount)->withTestseriescount($testseriescount)->withBookscount($bookscount);

    }
    public function search()
    {
        $pageid = 2;//home
        $results = array();
        $s=$_GET['s'];
        $selectdfacalty = array();
        $type='';

        //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);

        foreach($unique_arr as $value){
               $selectdfacalty[] = $value->faculty_name;
        }
           

        //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);
        foreach($unique_arr1 as $value){
               $selectdfacalty[] = $value->author_name;
        }

        //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);



        $courcescount = count($unique_arr);
      
       //echo "courcescount". $courcescount;
        $bookscount = count($unique_arr1);
        //  echo '<br>';
        // echo "book".$bookscount ;
        $testseriescount = count($unique_arr2);
        // echo "testserieslist".$testseriescount ;
        // echo '<br>';
        // die();

        $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)->withS($s)->withSelectdfacalty($selectdfacalty)->withCourcescount($courcescount)->withTestseriescount($testseriescount)->withBookscount($bookscount)->withType($type);
    }
    public function product($slug)
    {
        $coursecount = Course::where('slug', '=', $slug)->count();
        $bookscount = Book::where('slug', '=', $slug)->count();
        $testseriescount = TestSeries::where('slug', '=', $slug)->count();
        if($coursecount>0)
        {
             $type = "course";
             $course = Course::where('slug', '=', $slug)->get()->first();
        }
        else if($bookscount>0)
        {
             $type = "book";
             $course = Book::where('slug', '=', $slug)->get()->first();
        }
        else if($testseriescount>0)
        {
             $type = "testseries";
             $course = TestSeries::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)->where('level', $course->level)->inRandomOrder()->limit(6)->get();

        $selectedsubject = Subject::find($course->subject);
        $selecteddegree = Degree::find($course->degree);
        $selectedlevel = Level::find($course->level);

        // 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)->withType($type)->withSelecteddegree($selecteddegree)->withSelectedlevel($selectedlevel)->withSelectedsubject($selectedsubject);

    }
    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');
    }
     public function contactstore(Request $request)
    {
       
        $first_name_billing = ($request->first_name_billing) ? $request->first_name_billing : '';
        
         $customMessage = '';
        $validator = Validator::make($request->all(), [
            'name' => 'required',
            'email' => 'email|required',
            'number' => 'required'
        ]);
        if ($validator->fails()) {
            $customMessage = '';
            $validator_ArrayCount = $validator->errors()->toArray();          
            foreach ($validator_ArrayCount as $key => $value) {
                foreach ($value as $v) {
                    $customMessage .=  $v.'</br>';
                }
            }
            session()->flash('error', $customMessage);
            return redirect()->to('/')->with('error', $customMessage);
        }
        else{
            
            $name = $request->name;
            $email = $request->email;
            $number = $request->number;
            $comment = $request->comment;
            
            $data = array(
                "subject" =>'New Contact Form Submission',
                "name" =>$name,
                "email" =>$email,
                "number" =>$number,
                "comment" => $comment
            );
            $to_name = 'Buy Online';
            $to_email = 'vivekgoel@buyonlineclasses.com';
            Mail::send('email.contact', $data, function($message) use ($to_name, $to_email) {
            $message->to($to_email, $to_name)
            ->subject('Contact Us');
            $message->from('support@buyonlineclasses.com','Buy Online Classes');
            });
            }
            session()->flash('success', 'New Contact Form Submittedr.');
                return Redirect::to(url('/contact'));

    }
     


}
