<?php
namespace App\Http\Controllers;
use App\Level;
use App\Degree;
use App\Course;
use App\Subject;
use Illuminate\Http\Request;
use Validator;
use App\Educator;

class CourseController extends Controller
{
     public function __construct () 
    {
        $this->middleware('auth:admin');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $courses = Course::all()->where( 'status' , '1' );
         $educators = Educator::all()->where( 'status' , '1' );
        return view('admin.courses.index')->withCourses($courses)->withEducators($educators);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $levels = Level::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $educators = Educator::all()->where( 'status' , '1' );
        return view('admin.courses.create')->withEducators($educators)->withLevels($levels)->withdegrees($degrees);

    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
          $customMessage = '';
       $validator = Validator::make($request->all(), [          
        'package_name' => 'required',
        'slug' => 'required'
        ]);
        if ($validator->fails()) {
            $validator_ArrayCount = $validator->errors()->toArray();
          
            foreach ($validator_ArrayCount as $key => $value) {
                $customMessage .= $value[$key].'<br>';
            }
           
             session()->flash('error', $customMessage);
        }
        else{
            echo "test".$request->popular;
           // die;
                $course = new Course();

                $course->package_name = $request->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:'';
                $logos=array();
                if($request->hasFile('product_image')) {        
                    $extension = $request->file('product_image')->getClientOriginalExtension();
                    $photoname = time().rand(11111,99999).'.'.$extension;
                    $request->file('product_image')->move(public_path() .'/logo', $photoname);
                    $logos['product_image']= $photoname;
                }
                $course->product_image = serialize( $logos );
                $course->product_details  = ($request->product_details)?$request->product_details:'';
                $course->recording = ($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;
                $res = $course->save();

             
            if($res)
            {
                session()->flash('success', 'Course successfully created');
                return redirect()->route('course.index');
            }
        }
         
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\CoachingClasses  $CoachingClasses
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $course = Course::find($id);
        return view('admin.courses.show')->withCourse($course);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\CoachingClasses  $coachingtype
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $levels = Level::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $subjects = Subject::all()->where( 'status' , '1' );
        $course = Course::find($id);
        $educators = Educator::all()->where( 'status' , '1' );
        return view('admin.courses.edit')->withEducators($educators)->withCourse($course)->withSubjects($subjects)->withLevels($levels)->withdegrees($degrees);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\CoachingClasses  $coachingtype
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
         $customMessage = '';

        $validator = Validator::make($request->all(), [          
        'package_name' => 'required',
        'slug' => 'required'
        ]);
        if ($validator->fails()) {
            $validator_ArrayCount = $validator->errors()->toArray();
          
            foreach ($validator_ArrayCount as $key => $value) {
                $customMessage .= $value[$key].'<br>';
            }
           
             session()->flash('error', $customMessage);
        }
        else
        {
            
            $course = Course::find($id);        
            $course->package_name = $request->package_name;
            $course->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:'';
            $logos=array();
            if($request->hasFile('product_image')) {        
                $extension = $request->file('product_image')->getClientOriginalExtension();
                $photoname = time().rand(11111,99999).'.'.$extension;
                $request->file('product_image')->move(public_path() .'/logo', $photoname);
                $logos['product_image']= $photoname;
                $course->product_image = serialize( $logos );
            }
            
                $course->product_details  = ($request->product_details)?$request->product_details:'';
                $course->recording = ($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;
            $res = $course->save();

            if($res)
            {
                session()->flash('success', 'Course successfully updated');
                return redirect()->route('course.index');
            }

        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\CoachingClasses  $CoachingClasses
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        Course::where('id', $id)->delete();
        session()->flash('success','Course was successfully deleted!!!');
        return redirect()->route('course.index');
    }
}
