<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use App\Models\blog_content;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Mail;
use DerekCodes\TurnstileLaravel\TurnstileLaravel;


class BlogController extends Controller
{
    public function AddBlog()
    {
        if (!Auth::check()) {
            return redirect('admin');
        }
        return view('auth.add-blog');
    }
    public function addBlogUser(Request $request)
    {
        if (!Auth::check()) {
            return redirect('admin');
        }
        $date_blog =  $request->input('date_blog');
        $person_name =  $request->input('person_name');
        $heading_blog =  $request->input('heading_blog');
        $img_alt =  $request->input('img_alt');
        $content_blog =  $request->input('content_blog');
        $title =  $request->input('title');
        $keyword =  $request->input('keyword');
        $canonical =  $request->input('canonical');
        $description =  $request->input('description');
        $og =  $request->input('og_title');
        $og_site_name =  $request->input('og_site_name');
        $og_url =  $request->input('og_url');
        $og_description =  $request->input('og_description');
        $og_type =  $request->input('og_type');
        $og_image =  $request->input('og_image');
        $script =  $request->input('script');
        $slug_url =  $request->input('slug_url');
        $b_heading =  $request->input('b_heading');

        //    for file upload

        $files = $request->file('image_blog');
        $fname = $files->getClientOriginalName();
        $location = 'images/blog/';
        // Upload file
        $files->move($location, $fname);


        $data = array(
            'date_blog' => $date_blog, 'person_name' => $person_name, 'heading_blog' => $heading_blog, 'image_blog' => $fname, 'content_blog' => $content_blog, 'title' => $title, 'keyword' => $keyword, 'canonical' => $canonical, 'img_alt' => $img_alt, 'description' => $description, 'og' => $og, 'og_site_name' => $og_site_name, 'og_url' => $og_url, 'og_description' => $og_description, 'og_type' => $og_type, 'og_image' => $og_image, 'script' => $script, 'slug_url' => $slug_url, 'b_heading' => $b_heading
        );

        DB::table('blog_contents')->insert($data);
        return redirect('view-blog')->with('message2', 'Succesfully Added !!');
    }
    public function viewBlog()
    {

        $blogs = DB::table('blog_contents')->get();
        return view('auth.view-blog')->with(compact('blogs'));
    }
    public function editJob($id)
    {
        if (!Auth::check()) {
            return redirect('admin');
        }
        $blogs = DB::table('blog_contents')
            ->where('id', $id)
            ->first();
        return view('auth.editjob')->with(compact('blogs'));
    }
    public function updateBlog(Request $request)
    {
        if (!Auth::check()) {
            return redirect('admin');
        }

        $id = $request->input('id');
        $date_blog =  $request->input('date_blog');
        $person_name =  $request->input('person_name');
        $heading_blog =  $request->input('heading_blog');
        //    $image_blog =  $request->file('image_blog');
        $img_alt =  $request->input('img_alt');
        $content_blog =  $request->input('content_blog');
        $title =  $request->input('title');
        $keyword =  $request->input('keyword');
        $canonical =  $request->input('canonical');
        $description =  $request->input('description');
        $og =  $request->input('og_title');
        $og_site_name =  $request->input('og_site_name');
        $og_url =  $request->input('og_url');
        $og_description =  $request->input('og_description');
        $og_type =  $request->input('og_type');
        $og_image =  $request->input('og_image');
        $script =  $request->input('script');
        $slug_url =  $request->input('slug_url');
        $b_heading =  $request->input('b_heading');

        $old_image = $request->input('old_image_blog');
        $new_image = $request->file('image_blog');

        if ($new_image) {
            // Delete the old image
            $image_path = public_path('/images/blog/' . $old_image);
            if (file_exists($image_path)) {
                unlink($image_path);
            }

            // Upload the new image
            $new_image_name = $new_image->getClientOriginalName();
            $new_image->move(public_path('/images/blog/'), $new_image_name);
        } else {
            $new_image_name = $old_image;
        }



        $page = DB::table('blog_contents')->where('id', $id)
            ->update([
                'date_blog' => $date_blog,
                'person_name' => $person_name,
                'heading_blog' => $heading_blog,
                'image_blog' => $new_image_name,
                'img_alt' => $img_alt,
                'content_blog' => $content_blog,
                'title' => $title,
                'keyword' => $keyword,
                'canonical' => $canonical,
                'description' => $description,
                'og' => $og,
                'og_site_name' => $og_site_name,
                'og_url' => $og_url,
                'og_description' => $og_description,
                'og_type' => $og_type,
                'og_image' => $og_image,
                'script' => $script,
                'slug_url' => $slug_url,
                'b_heading' => $b_heading

            ]);
        return redirect('view-blog')->with('message2', 'Succesfully updated !!');
    }
    public function showAll()
    {
        $blogs = blog_content::orderBy('date_blog', 'DESC')->get();
        return view('blog.index', compact('blogs'));
    }
    public function show($slug)
    {
        $allblogs = blog_content::orderBy('date_blog', 'Desc')->get();
        $blogs = DB::table('blog_contents')->where('slug_url', $slug)->first();

        if($blogs)
        {
            return view('blog.show', compact('blogs','allblogs'));
        }
            return redirect('/');
    }
    public function deleteBlog(Request $request, $id)
    {
        if (!Auth::check()) {
            return redirect('admin');
        }
        $fname = $request->input('image_blog');
        $file = public_path("images/blog/$fname");

        if (File::delete($file)) {
            DB::table('blog_contents')->where('id', $id)->delete();
            return redirect('view-blog')->with('message1', 'Successfully deleted!');
        } else {
            return redirect('view-blog')->with('message1', 'Failed to delete file.');
        }
    }
    public function Home()
    {

        $blogs = blog_content::orderBy('date_blog', 'DESC')->take(3)->get();
        return view('home', compact('blogs'));
    }
    public function ContactForm(Request $request)
    {
        $validated = $request->validate([
            'cf-turnstile-response' => 'required',
            'care' => 'required',
            'name' => 'required',
            'email' => 'required|email:rfc,dns',
            'phone' => 'required|numeric',
            'location' => 'required',
            
        ]);

            $turnstile = new TurnstileLaravel;
            $response = $turnstile->validate($request->get('cf-turnstile-response'));
            if ($response['status'] == true) 
            {
            $email = $request->input('email');
            $care = $request->input('care');
            $name = $request->input('name');
            $phone = $request->input('phone');
            $location = $request->input('location');
            $msg = $request->input('msg');

            if ($email) {
                $data = [
                    'care' => $care,
                    'name' => $name,
                    'email' => $email,
                    'phone' => $phone,
                    'location' => $location,
                    'msg' => $msg,
                ];
                Mail::send('emails.contact', $data, function ($message) use ($data) {
                    $message->to('care@nursesgrouphomecare.co.uk')
                       ->to('cord@nursesgroup.co.uk')
                       ->bcc('hrhomecare2023@gmail.com')
                    ->subject("New Enquiry Received - Immediate Attention Required");
                });
                Mail::send('emails.contact', $data, function ($message) use ($data) {
                    $message->to('manager@nursesgrouphomecare.co.uk')
                       ->bcc('hrhomecare2023@gmail.com')
                    ->subject("New Enquiry Received - Immediate Attention Required");
                });
                Mail::send('emails.contact-applicant-response', $data, function ($message) use ($data) {
                    $message->to($data["email"])
                    ->subject("Your Enquiry Has Been Received - Nurses Group Homecare");
                });
                session()->flash('success', 'Your care enquiry has been successfully submitted. Our care coordinator will review your submission and get back to you shortly. We appreciate your trust in Nurses Group Homecare.');
                return redirect()->back();


            }
        } else {

            // session()->flash('oops', 'Oops! Something went wrong and the email was not sent. Please try again.');
            abort(419, 'Page Expired');
        }
    }

    public function AssessmenttForm(Request $request)
    {

            $validated = $request->validate([
                'cf-turnstile-response' => 'required',
                'care' => 'required',
                'name' => 'required',
                'email' => 'required|email:rfc,dns',
                'phone' => 'required|numeric',
                'location' => 'required',
                
            ]);
            $turnstile = new TurnstileLaravel;
            $response = $turnstile->validate($request->get('cf-turnstile-response'));
            if ($response['status'] == true) {
            $care = $request->get('care');
            $name = $request->input('name');
            $email = $request->input('email');
            $phone = $request->input('phone');
            $location = $request->input('location');

            if ($email) {
                $data = [
                    'care' => $care,
                    'name' => $name,
                    'email' => $email,
                    'phone' => $phone,
                    'location' => $location,
                    'msg' => $request->input('msg'),
                ];
                Mail::send('emails.free-assessment', $data, function ($message) use ($data) {
                    $message->to('care@nursesgrouphomecare.co.uk')
                    ->bcc('hrhomecare2023@gmail.com')
                    ->subject("New Enquiry Received - Immediate Attention Required");
                });
                Mail::send('emails.free-assessment', $data, function ($message) use ($data) {
                    $message->to('manager@nursesgrouphomecare.co.uk')
                    ->bcc('hrhomecare2023@gmail.com')
                    ->subject("New Enquiry Received - Immediate Attention Required");
                });
                Mail::send('emails.free-assessment-response', $data, function ($message) use ($data) {
                    $message->to($data["email"])
                    ->subject("Your Enquiry Has Been Received - Nurses Group Homecare");
                });

//for ses
                // Mail::send('emails.free-assessment', $data, function ($message) use ($data) {
                //     $message->to('care@nursesgrouphomecare.co.uk', $data["care"], $data["name"], $data["email"], $data["phone"], $data["location"], $data["msg"])
                //     ->bcc('hrhomecare2023@gmail.com')
                //     ->from('do_not_reply@nursesgrouphomecare.co.uk', "Do Not Reply - Nurses Group Homecare") 
                //     ->subject("New Enquiry Received - Immediate Attention Required");
                // });
                // Mail::send('emails.free-assessment', $data, function ($message) use ($data) {
                //     $message->to('manager@nursesgrouphomecare.co.uk', $data["care"], $data["name"], $data["email"], $data["phone"], $data["location"], $data["msg"])
                //     ->bcc('hrhomecare2023@gmail.com')
                //     ->from('do_not_reply@nursesgrouphomecare.co.uk', "Do Not Reply - Nurses Group Homecare") 
                //     ->subject("New Enquiry Received - Immediate Attention Required");
                // });
                // Mail::send('emails.free-assessment-response', $data, function ($message) use ($data) {
                //     $message->to($data["email"])
                //     ->from('do_not_reply@nursesgrouphomecare.co.uk', "Do Not Reply - Nurses Group Homecare") 
                //     ->subject("Your Enquiry Has Been Received - Nurses Group Homecare");
                // });

                session()->flash('success', 'Your care enquiry has been successfully submitted. Our care coordinator will review your submission and get back to you shortly. We appreciate your trust in Nurses Group Homecare.');
                return redirect()->back();
            }
        } else {
            // return redirect()->back()->withErrors($validated);
            abort(419, 'Page Expired');
        }
    }
    public function SubscribeForm(Request $request)
    {
        $email = $request->get('email');
        $data = array('emails' => $email);
        DB::table('subscribes')->insert($data);
        return redirect()->back()->with('subscribe', 'Successfully subscribed!');
    }
    public function ApplyNow(Request $request)
    {
        $validated = $request->validate([
            'cf-turnstile-response' => 'required',
            'first-name' => 'required|regex:/^[a-zA-Z]+$/u',
            'last-name' => 'required|regex:/^[a-zA-Z]+$/u',
            'email' => 'required|email:rfc,dns',
            //'address' => 'required|regex:/^[a-zA-Z]+$/u|max:300',
            //'location' => 'required|regex:/^[a-zA-Z]+$/u|max:100',
            'postal' => 'required',
            //'country' => 'required|regex:/^[a-zA-Z]+$/u|max:100',
            'job' => 'required|regex:/^[a-zA-Z]+$/u',
            //'gender' => 'required|in:male,female,unspecified|regex:/^[a-zA-Z]+$/u|max:100',
            //'countrycode' => 'required|regex:/^[a-zA-Z]+$/u|max:100',
            'phone' => 'required|numeric',
        ]);

        $turnstile = new TurnstileLaravel;
        $response = $turnstile->validate($request->get('cf-turnstile-response'));


        if ($response['status'] == true) {
            $fname = $request->input('first-name');
            $lname = $request->input('last-name');
            $email = $request->input('email');
            // $address = $request->input('address');
            // $location = $request->input('location');
            $postal = $request->input('postal');
            // $country = $request->input('country');
            // $dob = $request->input('dob');
            // $gender = $request->input('gender');
            // $countrycode = $request->input('countrycode');
            $phone = $request->input('phone');
            $job = $request->input('job');
            if ($email) {
                $data = [
                    'name' => $fname,
                    'lname' => $lname,
                    'email' => $email,
                    'postal' => $postal,
                    'phone' => $phone,
                    'job' => $job,
                ];
                Mail::send('emails.apply-now', $data, function ($message) use ($data) {
                    $message->to('hr@nursesgrouphomecare.co.uk')
                    ->bcc('hrhomecare2023@gmail.com')
                        ->subject("New Job Application Received - Homecare Website");
                });
                Mail::send('emails.applicant-confirmation', $data, function ($message) use ($data) {
                    $message->to($data["email"])
                        ->subject("Thank you for Applying!");
                });
                    session()->flash('success', 'We are thrilled to have received your application. We are reviewing your application diligently and will reach out to you shortly.');
                    return redirect()->back();
            }
        }
         else {
            // session()->flash('oops', 'Oops! Something went wrong and the email was not sent. Please try again.');
            abort(419, 'Page Expired');
        }
    }
}
