<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Yajra\Datatables\Datatables as Datatables;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Facades\Excel;
use Validator;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Str;
use Auth;
use Stripe;
use Session;
use Request as req;
use App\Models\BlogData;
use App\Models\Stripe\APIKeys;
use App\Models\User;

class BlogController extends Controller
{
    ////////////////blogdata create//////////////////////
    public function saveblog(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'content' => 'required',
            'description' => 'required',
            'image_url' => 'required',
        ]);
        $title = $request->title;
        $content = $request->content;
        $description = $request->description;
        $key_words = $request->key_words;
        $app_ID = $request->app_ID;
        $blog_id = $request->blog_id;
        $image_url = $request->file('image_url');
        $sub_arr = [];
        if(($title=="") || ($content=="") || ($description==""))
        {
            $sub_arr['status'] = 202;
            $sub_arr['message'] = "Data missing. Please check the same.";
            return $sub_arr;
        }
        if($blog_id==0)
        {
            $insert_id = BlogData::create([
                    'title' => $title,
                    'content' => $content,
                    'description' => $description,
                    'key_words' => $key_words,
                    'app_ID' => $app_ID,
                ]);
            $blogid = $insert_id->id;
        }
        else
        {
            $blogid = $blog_id;
            $blogs = BlogData::where("id",$blog_id)->first();
            $blogs->title = $title;
            $blogs->content = $content;
            $blogs->description = $description;
            $blogs->key_words = $key_words;
            $blogs->app_ID = $app_ID;
            $blogs->save();
        }

        if (request()->hasFile('image_url')) 
        {
            $blogfile = $request->file('image_url');
            $blogfilename = $blogfile->getClientOriginalName();
            $fileext=$blogfile->getClientOriginalExtension();
            $custom_file_name_blog = $blogid.'.'.$fileext;
            $blogfile->storeAs('Blog/', $custom_file_name_blog, 's3');
            
            $uploadfile = BlogData::where('id',$blogid)->first();
            $uploadfile->image_url = $custom_file_name_blog;
            $uploadfile->image_url_name = $blogfilename;
            $uploadfile->save();
        }

        $sub_arr['status'] = 200;
        $sub_arr['message'] = "Data Stored Successfully.";
        return $sub_arr;
    }

    ////////////////blogdata list//////////////////////
    public function getallblog()
    {
        $blogdata_count = BlogData::count();
        $flg = 0;
        $i=0;
        $imgdiv = "";
        $image_url_name = "";
        if($blogdata_count!=0)
        {
            $blogdata_list = BlogData::all();
            foreach($blogdata_list as $blogdata_list_obj)
            {
                $title = $blogdata_list_obj->title;
                $content = $blogdata_list_obj->content;
                $description = $blogdata_list_obj->description;
                $image_url = $blogdata_list_obj->image_url;
                $key_words = $blogdata_list_obj->key_words;
                $app_ID = $blogdata_list_obj->app_ID;
                $image_url_name = $blogdata_list_obj->image_url_name;

                if($image_url)
                {
                    $img_path = \Storage::disk('s3')->url('/Blog/'.$image_url);
                    $imgdiv = '<img src='.$img_path.' style="height: 100px !important;width: 100px !important;"/>';
                }

                

                $sub_arr[$i]['id'] = $blogdata_list_obj->id;
                $sub_arr[$i]['title'] = $title;
                $sub_arr[$i]['content'] = $content;
                $sub_arr[$i]['description'] = $description;
                $sub_arr[$i]['image_url'] = $imgdiv;
                $sub_arr[$i]['image_url_name'] = $image_url_name;
                $sub_arr[$i]['key_words'] = $key_words;
                $sub_arr[$i]['app_ID'] = $app_ID;
                $sub_arr[$i]['status'] = 200;
                $sub_arr[$i]['message'] = "Success";
                $i++;
            }
        }
        else
        {
            $sub_arr[$i]['id'] = ""; 
            $sub_arr[$i]['content'] = "";
            $sub_arr[$i]['title'] = "";
            $sub_arr[$i]['description'] = "";
            $sub_arr[$i]['image_url'] = "";
            $sub_arr[$i]['key_words'] = "";
            $sub_arr[$i]['app_ID'] = "";
            $sub_arr[$i]['status'] = 201;
            $sub_arr[$i]['message'] = "Blog Data not exist.";
        }
        return $sub_arr;
    }

    ////////////////getbyid -- get blog details by id//////////////////////
    public function getbyid($id)
    {
        $blog_id = $id;
        $sub_arr = [];
        if($blog_id=="")
        {
            $sub_arr['status'] = 202;
            $sub_arr['message'] = "Data missing. Please check the same.";
            return $sub_arr;
        }
        
        $blogdata_count = BlogData::where('id',$blog_id)->count();
        $i=0;
        $imgdiv = "";
        $image_url_name = "";
        if($blogdata_count!=0)
        {
            $blogdata_list = BlogData::where('id',$blog_id)->get();
            foreach($blogdata_list as $blogdata_list_obj)
            {
                $title = $blogdata_list_obj->title;
                $content = $blogdata_list_obj->content;
                $description = $blogdata_list_obj->description;
                $image_url = $blogdata_list_obj->image_url;
                $key_words = $blogdata_list_obj->key_words;
                $app_ID = $blogdata_list_obj->app_ID;
                $image_url_name = $blogdata_list_obj->image_url_name;

                if($image_url)
                {
                    $img_path = \Storage::disk('s3')->url('/Blog/'.$image_url);
                    $imgdiv = '<img src='.$img_path.' style="height: 100px !important;width: 100px !important;"/>';
                }

                $sub_arr[$i]['id'] = $blogdata_list_obj->id;
                $sub_arr[$i]['title'] = $title;
                $sub_arr[$i]['content'] = $content;
                $sub_arr[$i]['description'] = $description;
                $sub_arr[$i]['image_url'] = $imgdiv;
                $sub_arr[$i]['image_url_name'] = $image_url_name;
                $sub_arr[$i]['key_words'] = $key_words;
                $sub_arr[$i]['app_ID'] = $app_ID;
                $sub_arr[$i]['status'] = 200;
                $sub_arr[$i]['message'] = "Success";
                $i++;
            }
        }
        else
        {
            $sub_arr[$i]['id'] = ""; 
            $sub_arr[$i]['content'] = "";
            $sub_arr[$i]['title'] = "";
            $sub_arr[$i]['description'] = "";
            $sub_arr[$i]['image_url'] = "";
            $sub_arr[$i]['image_url_name'] = "";
            $sub_arr[$i]['key_words'] = "";
            $sub_arr[$i]['app_ID'] = "";
            $sub_arr[$i]['status'] = 201;
            $sub_arr[$i]['message'] = "Blog Data not exist for the selected ID.";
        }
        return $sub_arr;
    }

    ////////////////get all blogdata list with app id//////////////////////
    public function getall($app_id)
    {
        $blogdata_count = BlogData::where('app_ID',$app_id)->count();
        $flg = 0;
        $i=0;
        $imgdiv = "";
        $image_url_name = "";
        if($blogdata_count!=0)
        {
            $blogdata_list = BlogData::where('app_ID',$app_id)->get();
            foreach($blogdata_list as $blogdata_list_obj)
            {
                $title = $blogdata_list_obj->title;
                $content = $blogdata_list_obj->content;
                $description = $blogdata_list_obj->description;
                $image_url = $blogdata_list_obj->image_url;
                $key_words = $blogdata_list_obj->key_words;
                $app_ID = $blogdata_list_obj->app_ID;
                $image_url_name = $blogdata_list_obj->image_url_name;

                if($image_url)
                {
                    $img_path = \Storage::disk('s3')->url('/Blog/'.$image_url);
                    $imgdiv = '<img src='.$img_path.' style="height: 100px !important;width: 100px !important;"/>';
                }

                

                $sub_arr[$i]['id'] = $blogdata_list_obj->id;
                $sub_arr[$i]['title'] = $title;
                $sub_arr[$i]['content'] = $content;
                $sub_arr[$i]['description'] = $description;
                $sub_arr[$i]['image_url'] = $imgdiv;
                $sub_arr[$i]['image_url_name'] = $image_url_name;
                $sub_arr[$i]['key_words'] = $key_words;
                $sub_arr[$i]['app_ID'] = $app_ID;
                $sub_arr[$i]['status'] = 200;
                $sub_arr[$i]['message'] = "Success";
                $i++;
            }
        }
        else
        {
            $sub_arr[$i]['id'] = ""; 
            $sub_arr[$i]['content'] = "";
            $sub_arr[$i]['title'] = "";
            $sub_arr[$i]['description'] = "";
            $sub_arr[$i]['image_url'] = "";
            $sub_arr[$i]['image_url_name'] = "";
            $sub_arr[$i]['key_words'] = "";
            $sub_arr[$i]['app_ID'] = "";
            $sub_arr[$i]['status'] = 201;
            $sub_arr[$i]['message'] = "Blog Data not exist for the selected app ID.";
        }
        return $sub_arr;
    }

    ////////////////authenticate//////////////////////
    public function authenticate(Request $request)
    {
        $email = $request->email;
        $password = $request->password;
        $sub_arr = [];
        if(($email=="") && ($password==""))
        {
            $sub_arr['status'] = 202;
            $sub_arr['message'] = "Data missing. Please check the same.";
            return $sub_arr;
        }
        $request->validate([
            'email' => 'required',
            'password' => 'required',
        ]);
        $flg=0;
        if (Auth::attempt(['email' => $request->email, 'password' => $request->password])) 
        {
            $flg=1;
        }
        

        if($flg==1)
        {
            $sub_arr['status'] = 200;
            $sub_arr['message'] = "Yes";
        }
        else
        {
            $sub_arr['status'] = 201;
            $sub_arr['message'] = "No";   
        }
        return $sub_arr;

    }

    public function delete_blog(Request $request)
    {
        $blog_id = $request->blog_id;
        $blog_del=BlogData::where('id',$blog_id)->delete();
        $sub_arr['status'] = 200;
        $sub_arr['message'] = "Data Deleted Successfully.";
        return $sub_arr;
    }

}
