<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Mail\ContactForm;
use App\Http\Controllers\Controller;
use App\Models\Contact;
use App\Models\BackendAuth\BackendConfiguration;
use Illuminate\Support\Facades\Mail;
use App\Http\Requests\Api\FormIndex;

class FormController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(FormIndex $request)
    {
        $data = $request->validated();
        $name = $data['name'];
        $email = $data['email'];
        $text = $data['text'];
        $contact = new Contact;
        $contact->name = $name;
        $contact->email = $email;
        if ($text) {
            $contact->text = $text;
        }
        $contactIsSaved = $contact->save();
        if ($contactIsSaved) {
            $emailList = BackendConfiguration::where('name', 'contact_form_emails')->first();
            if (!is_null($emailList)) {
                $emails = json_decode($emailList->value);
                if (count($emails) > 0) {
                    foreach($emails as $email) {
                        try {
                            Mail::to($email)->send(new ContactForm($contact));
                        }catch(Throwable $exception) {
                            return ['status' => 'email_failed'];
                        }
                    }
                } else {
                    return [
                        'status' => 'email_failed',
                        'message' => 'Something\'s Wrong! Please contact the Support.',
                    ];
                }
            }
        }
        return ['status' => 'success'];
    }
}
