<?php

namespace App\Http\Controllers;

use Dompdf\Exception;
use App\DataTables\EmailTemplatesDatatable;
use Illuminate\Http\Request;
use App\Email_templates;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;

class EmailTemplateController extends Controller
{

    public function index(){

        return view('email_templates.new_email_template');
    }


    public function create(Request $request){

        if($request->method() == 'POST'){

            $email_template = Email_templates::where('template_name', 'LIKE', $request->templateheading)->get();
            
            if (count($email_template) < 1) {
                try {
                    Email_templates::create([
                        'template_name' => $request->templateheading,
                        'template_head' =>base64_encode($request->template_head),
                        'template_foot' =>base64_encode($request->template_foot),
                        'client_id' => Auth::user()->id,
                    ]);
    
                    return redirect()->route('new_mail_template')->with('success', 'New email template added successfully');
    
                } catch (\Exception $e) {
                    \Log::info($e->getMessage());
                }
            }else {
                return redirect()->route('new_mail_template')->with('danger', 'An existing template has this name already.');
            }
            
        }
        return view('email_templates.new_email_template');

    }

    public function view(EmailTemplatesDatatable $datatable){

        return $datatable->render('email_templates.view_email_tempate');

    }

    public function see($id){
//        dd($id);
        $item = Email_templates::find($id);

        $template_head = Email_templates::query()->where('id',$id)->pluck('template_head');
        $template_footer = Email_templates::query()->where('id',$id)->pluck('template_foot');
        $template_name = Email_templates::query()->where('id',$id)->select('template_name')->first();

        $temp_head = base64_decode($template_head);
        $temp_foot = base64_decode($template_footer);

        return view('email_templates.preview_email_template')->with('temp_name',$template_name)->with('temp_head',$temp_head)->with('temp_foot',$temp_foot);
    }

    public function edit($id){

        $item = Email_templates::find($id);

        Session::put('edit_id',$id);

        $template_head = Email_templates::query()->where('id',$id)->pluck('template_head');
        $template_footer = Email_templates::query()->where('id',$id)->pluck('template_foot');
        $template = Email_templates::query()->where('id',$id)->select('template_name','template_description')->first();

        $temp_head = base64_decode($template_head);
        $temp_foot = base64_decode($template_footer);

        return view('email_templates.edit_email_template')->with('temp',$template)->with('temp_head',$temp_head)->with('temp_foot',$temp_foot);
    }

    public function send_edit(Request $request){

        if($request->method() == 'POST'){

//            $request->validate([
//                'template_name'=>'required|unique'
//            ]);

            $validator = Validator::make($request->all(), [
                'template_name'=>'required|unique'
            ]);

            if ($validator->fails()) {
                return redirect()->back()->withErrors($validator)->withInput();
            }


            try {

                $idval = Session::get('edit_id');

                DB::table('email_templates')->where('id', $idval)->update(array(
                    'template_name' => $request->templateheading,
                    'template_head' =>base64_encode($request->template_head),
                    'template_foot' =>base64_encode($request->template_foot),
                ));

                return redirect()->route('view_new_mail_template')->with('success', 'Email template was updated successfully');

            } catch (\Exception $e) {
                \Log::info($e->getMessage());
                return redirect()->route('new_mail_template')->with('danger',$e->getMessage());

            }
        }

    }

    public function delete($id){

        $item = Email_templates::find($id);

        $item->delete();

        return redirect()->route('view_new_mail_template')->with('success', 'Email template was DELETED successfully');
    }

}
