FEATURE #1552 @1h: save sent messages into database

This commit is contained in:
Michal Kváček
2017-09-14 20:18:32 +02:00
parent 6b0509a1db
commit b1b31afa3b
15 changed files with 266 additions and 36 deletions
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace Modules\ContactForm\Http\Controllers\Admin;
use App\Http\Controllers\Admin\Controller;
use Modules\ContactForm\Entities\SentEmail;
class SentEmails extends Controller
{
public function index()
{
$emails = SentEmail::orderBy('created_at', 'desc')
->paginate();
return view('contactform::admin.sent', compact('emails'));
}
public function show(SentEmail $email)
{
if ($email->is_new) {
$email->is_new = false;
$email->save();
}
return view('contactform::admin.emailDetail', compact('email'));
}
}
+10 -15
View File
@@ -1,12 +1,13 @@
<?php
namespace Modules\ContactForm\Http\Controllers\Visitor;
use App\CMS\Helpers\Template;
use App\Http\Controllers\Controller;
use App\Models\Content\Content;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Mail;
use Modules\ContactForm\Http\Requests\SendNewEmailRequest;
use Modules\ContactForm\Mail\ContactFormMessage;
class CreateNewMessage extends Controller
{
@@ -26,35 +27,29 @@ class CreateNewMessage extends Controller
// select template
$template = isset($form->moduleSettings['emailTemplate']) ? $form->moduleSettings['emailTemplate'] : 'contactform::emails.default';
$subject = isset($form->moduleSettings['subject']) ? $form->moduleSettings['subject'] : trans('contactform::admin/contents.defaultSubject');
$data = $request->except('_token', 'g-recaptcha-response');
// send email
$status = Mail::send(Template::name($template), ['data' => $request], function (Message $message) use ($request, $form) {
$message->from($request->email, $request->name);
// get message subject
$subject = isset($form->moduleSettings['subject']) ? $form->moduleSettings['subject'] : trans('contactform::admin/contents.defaultSubject');
$message->to($form->moduleSettings['email'])
->subject($subject);
});
Mail::to($form->moduleSettings['contactEmail'])
->send(new ContactFormMessage($data, $subject, Template::name($template)));
// inform user about success or failure
return $this->sendResponse($status, $request, $form);
return $this->sendResponse($request, $form);
}
private function sendResponse($status, SendNewEmailRequest $request, $form)
private function sendResponse(SendNewEmailRequest $request, $form)
{
// send response for ajax
if ($request->ajax()) {
return response()->json([
'status' => $status ? 'success' : 'failed',
'status' => 'success',
'redirectUrl' => $form->url
]);
} else {
// redirect user to previous form
$response = redirect()->back();
return $status ? $response->with('success', 'sent') : $response->with('error', 'cannotSend');
return $response->with('success', 'sent');
}
}
}