<?php

namespace App\Http\Controllers;

use App\Jobs\EnvoyerDemandeContact;
use App\Jobs\EnvoyerDemandeDemonstration;
use App\Mail\DemandeContact;
use App\Mail\DemandeDemonstration;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Validator;

class WelcomeController extends Controller
{
    /**
     * Permet d'envoyer la demande de demonstration
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse
     * @throws \Illuminate\Validation\ValidationException
     */
    public function demonstration(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'demo_name' => 'required|string',
            'demo_company' => 'required|string',
            'demo_email' => 'required|email',
            'demo_phone' => 'required|string',
        ]);

        if ($validator->fails()) {
            return redirect()->to(URL::previous() . "#demo")
                ->withErrors($validator)
                ->withInput();
        }

        EnvoyerDemandeDemonstration::dispatch(
            $validator->validated()['demo_name'],
            $validator->validated()['demo_company'],
            $validator->validated()['demo_email'],
            $validator->validated()['demo_phone']
        )->onQueue('emails');
        return redirect()->to(URL::previous() . "#demo")->with('demo_success', 'Merci! Votre demande de démonstration a été envoyée avec succès.');
    }

    /**
     * Permet d'envoyer la demande de contact
     * @param Request $request
     * @return \Illuminate\Http\RedirectResponse
     * @throws \Illuminate\Validation\ValidationException
     */
    public function contact(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'contact_name' => 'required|string',
            'contact_company' => 'required|string',
            'contact_email' => 'required|email',
            'contact_phone' => 'required|string',
            'contact_message' => 'required|string',
        ]);

        if ($validator->fails()) {
            return redirect()->to(URL::previous() . "#contact")
                ->withErrors($validator)
                ->withInput();
        }

        EnvoyerDemandeContact::dispatch(
            $validator->validated()['contact_name'],
            $validator->validated()['contact_company'],
            $validator->validated()['contact_email'],
            $validator->validated()['contact_phone'],
            $validator->validated()['contact_message']
        )->onQueue('emails');
        return redirect()->to(URL::previous() . "#contact")->with('contact_success', 'Merci! Votre demande de contact a été envoyée avec succès.');
    }
}
