<?php

namespace App\Http\Controllers;

use App\Book;
use App\Level;
use App\Degree;
use App\Course;
use App\Subject;
use Illuminate\Http\Request;
use Validator;
use App\Educator;

class BookController extends Controller
{
    public function __construct () 
    {
        $this->middleware('auth');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $books = Book::all()->where( 'status' , '1' );
        return view('admin.books.index')->withBooks($books);
    }

    /**
     * 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.books.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{

            $book = new Book();

            $book->package_name = ($request->package_name) ? $request->package_name : '';
            $book->slug =  ($request->slug)? $request->slug :'';
            $book->degree = ($request->degree) ? $request->degree : '';
            $book->level = ($request->level)?$request->level:'';
            $book->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;
            }
            $book->product_image = serialize( $logos );
            $book->product_details  = ($request->product_details) ? $request->product_details : '';
            $book->sku = ($request->sku) ? $request->sku : '';
            $book->pages = ($request->pages) ? $request->pages : '';
            $book->author_name  = ($request->author_name) ? $request->author_name : '';
            $book->publication_date = ($request->publication_date) ? $request->publication_date : '';
            $book->book_type = ($request->book_type) ? $request->book_type : '';
           
            $book->edition = ($request->edition) ? $request->edition : '';
            $book->weight = ($request->weight) ? $request->weight : '';
            $book->availability  = ($request->availability) ? $request->availability : '';
            $book->publisher_name = ($request->publisher_name) ? $request->publisher_name : '';
            $book->book_description = ($request->book_description) ? $request->book_description : '';
            $book->price = ($request->price) ? $request->price : '';
            $book->discounted_price  = ($request->discounted_price) ? $request->discounted_price : '';

            $book->book_language = ($request->book_language) ? $request->book_language : '';
            $book->delivery  = ($request->delivery) ? $request->delivery : '';
            $book->dispatch = ($request->dispatch) ? $request->dispatch : ''; 
            $book->package_details = ($request->package_details) ? $request->package_details : '';
            $book->topics_covered  = ($request->topics_covered) ? $request->topics_covered : '';
            $book->product_image_link = ($request->product_image_link) ? $request->product_image_link : '';
            $book->shipment_required  = ($request->shipment_required) ? $request->shipment_required : '';            
            $book->meta_title = ($request->meta_title) ? $request->meta_title : '';
            $book->meta_tags  = ($request->meta_tags) ? $request->meta_tags : '';
            $book->meta_details = ($request->meta_details) ? $request->meta_details : '';           
            $book->status = 1;
            $res = $book->save();

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

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

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Book  $book
     * @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' );
        $book = Book::find($id);
        $educators = Educator::all()->where( 'status' , '1' );
        return view('admin.books.edit')->withEducators($educators)->withBook($book)->withSubjects($subjects)->withLevels($levels)->withdegrees($degrees);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Book  $book
     * @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
        {
            $book = Book::find($id);        
                $book->package_name = ($request->package_name) ? $request->package_name : '';
            $book->slug =  ($request->slug)? $request->slug :'';
            $book->degree = ($request->degree) ? $request->degree : '';
            $book->level = ($request->level)?$request->level:'';
            $book->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;
            }
            $book->product_image = serialize( $logos );
            $book->product_details  = ($request->product_details) ? $request->product_details : '';
            $book->sku = ($request->sku) ? $request->sku : '';
            $book->pages = ($request->pages) ? $request->pages : '';
            $book->author_name  = ($request->author_name) ? $request->author_name : '';
            $book->publication_date = ($request->publication_date) ? $request->publication_date : '';
            $book->book_type = ($request->book_type) ? $request->book_type : '';
           
            $book->edition = ($request->edition) ? $request->edition : '';
            $book->weight = ($request->weight) ? $request->weight : '';
            $book->availability  = ($request->availability) ? $request->availability : '';
            $book->publisher_name = ($request->publisher_name) ? $request->publisher_name : '';
            $book->book_description = ($request->book_description) ? $request->book_description : '';
            $book->price = ($request->price) ? $request->price : '';
            $book->discounted_price  = ($request->discounted_price) ? $request->discounted_price : '';

            $book->book_language = ($request->book_language) ? $request->book_language : '';
            $book->delivery  = ($request->delivery) ? $request->delivery : '';
            $book->dispatch = ($request->dispatch) ? $request->dispatch : ''; 
            $book->package_details = ($request->package_details) ? $request->package_details : '';
            $book->topics_covered  = ($request->topics_covered) ? $request->topics_covered : '';
            $book->product_image_link = ($request->product_image_link) ? $request->product_image_link : '';
            $book->shipment_required  = ($request->shipment_required) ? $request->shipment_required : '';            
            $book->meta_title = ($request->meta_title) ? $request->meta_title : '';
            $book->meta_tags  = ($request->meta_tags) ? $request->meta_tags : '';
            $book->meta_details = ($request->meta_details) ? $request->meta_details : '';       
            $book->status = 1;
            $res = $book->save();

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

        }
    }

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