diff --git a/.gitignore b/.gitignore index 5fee680f..a11cda22 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -/app/Console/Commands/SetupDevEnvironment.php /node_modules /public/hot /public/storage diff --git a/app/Http/Controllers/AppFunctionsController.php b/app/Http/Controllers/AppFunctionsController.php index d89f2383..a70d7ebc 100644 --- a/app/Http/Controllers/AppFunctionsController.php +++ b/app/Http/Controllers/AppFunctionsController.php @@ -3,13 +3,13 @@ namespace App\Http\Controllers; use App; +use App\Http\Mail\SendContactMessage; use App\Models\Content; use App\Models\File; use App\Models\Folder; -use App\Http\Requests\PublicPages\SendMessageRequest; +use App\Http\Requests\PublicPages\SendContactMessageRequest; use App\Http\Resources\PageResource; use App\Http\Tools\Demo; -use App\Mail\SendSupportForm; use App\Models\Setting; use App\Models\Page; use App\Models\User; @@ -157,18 +157,18 @@ class AppFunctionsController extends Controller /** * Send contact message from pages * - * @param SendMessageRequest $request + * @param SendContactMessageRequest $request * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response */ - public function contact_form(SendMessageRequest $request) + public function contact_form(SendContactMessageRequest $request) { - // Get receiver email - $receiver = Setting::where('name', 'contact_email')->first(); + Mail::to( + get_setting('contact_email') + )->send( + new SendContactMessage($request->all()) + ); - // Send message - Mail::to($receiver->value)->send(new SendSupportForm($request->all())); - - return response('Done', 200); + return response('Done', 201); } /** diff --git a/app/Http/Mail/SendSupportForm.php b/app/Http/Mail/SendContactMessage.php similarity index 85% rename from app/Http/Mail/SendSupportForm.php rename to app/Http/Mail/SendContactMessage.php index 74d593a3..6dc49981 100644 --- a/app/Http/Mail/SendSupportForm.php +++ b/app/Http/Mail/SendContactMessage.php @@ -7,7 +7,7 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; -class SendSupportForm extends Mailable +class SendContactMessage extends Mailable { use Queueable, SerializesModels; private $request; @@ -29,9 +29,7 @@ class SendSupportForm extends Mailable */ public function build() { - $from = config('mail.from')['address']; - - return $this->from($from) + return $this->from(config('mail.from')['address']) ->replyTo($this->request['email']) ->subject('New Contact Message from ' . $this->request['email']) ->view('mails.contact-message') diff --git a/app/Http/Requests/PublicPages/SendMessageRequest.php b/app/Http/Requests/PublicPages/SendContactMessageRequest.php similarity index 91% rename from app/Http/Requests/PublicPages/SendMessageRequest.php rename to app/Http/Requests/PublicPages/SendContactMessageRequest.php index 1aafebf6..416c1513 100644 --- a/app/Http/Requests/PublicPages/SendMessageRequest.php +++ b/app/Http/Requests/PublicPages/SendContactMessageRequest.php @@ -4,7 +4,7 @@ namespace App\Http\Requests\PublicPages; use Illuminate\Foundation\Http\FormRequest; -class SendMessageRequest extends FormRequest +class SendContactMessageRequest extends FormRequest { /** * Determine if the user is authorized to make this request. diff --git a/tests/Feature/App/AppTest.php b/tests/Feature/App/AppTest.php index 4ed837c5..b4e12446 100644 --- a/tests/Feature/App/AppTest.php +++ b/tests/Feature/App/AppTest.php @@ -2,10 +2,15 @@ namespace Tests\Feature\App; +use App\Http\Mail\SendContactMessage; +use App\Models\Setting; +use App\Notifications\SharedSendViaEmail; use App\Services\SetupService; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Foundation\Testing\WithFaker; +use Illuminate\Support\Facades\Notification; +use Mail; use Tests\TestCase; class AppTest extends TestCase @@ -30,4 +35,25 @@ class AppTest extends TestCase $this->get('/') ->assertStatus(200); } + + /** + * @test + */ + public function it_send_contact_form() + { + Mail::fake(); + + Setting::create([ + 'name' => 'contact_email', + 'value' => 'jane@doe.com', + ]); + + $this->postJson('/api/contact', [ + 'email' => 'john@doe.com', + 'message' => 'Whaats is up!', + ]) + ->assertStatus(201); + + Mail::assertSent( SendContactMessage::class); + } }