<?php

namespace LaravelVueJs\Http\GraphQL\Mutations;

use GraphQL\Type\Definition\ResolveInfo;
use Illuminate\Support\Facades\Mail;
use LaravelVueJs\Mail\ContactMail;
use Nuwave\Lighthouse\Support\Contracts\GraphQLContext;

class Contact
{
    /**
     * Return a value for the field.
     *
     * @param null $rootValue Usually contains the result returned from the parent field. In this case, it is always `null`.
     * @param array $args The arguments that were passed into the field.
     * @param GraphQLContext|null $context Arbitrary data that is shared between all fields of a single query.
     * @param ResolveInfo $resolveInfo Information about the query itself, such as the execution state, the field name, path to the field from the root, and more.
     *
     * @return mixed
     */
    public function resolve($rootValue, array $args, GraphQLContext $context = null, ResolveInfo $resolveInfo)
    {
        \LaravelVueJs\Models\Contact::create($args);

        Mail::queue(new ContactMail($args));

        return 'Thank you for your message. we will respond as soon as possible !';
    }
}
