move into sonardesk
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Newsletter\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\View\View;
|
||||
use Modules\Newsletter\Models\Campaign;
|
||||
use Modules\Newsletter\Models\MailingList;
|
||||
use Modules\Newsletter\Models\Subscriber;
|
||||
|
||||
final class NewsletterController
|
||||
{
|
||||
public function index(): View
|
||||
{
|
||||
return view('newsletter::admin.index', ['subscribers' => Subscriber::latest()->paginate(20), 'campaigns' => Campaign::latest()->limit(10)->get(), 'lists' => MailingList::orderBy('name')->get()]);
|
||||
}
|
||||
|
||||
public function storeSubscriber(Request $r): RedirectResponse
|
||||
{
|
||||
$d = $r->validate(['email' => ['required', 'email', 'unique:newsletter_subscribers,email'], 'name' => ['nullable', 'string', 'max:255']]);
|
||||
Subscriber::create($d + ['status' => 'confirmed', 'confirmation_token' => Str::random(48), 'confirmed_at' => now()]);
|
||||
|
||||
return back()->with('status', 'Subscriber added.');
|
||||
}
|
||||
|
||||
public function storeCampaign(Request $r): RedirectResponse
|
||||
{
|
||||
Campaign::create($r->validate(['list_id' => ['nullable', 'exists:newsletter_lists,id'], 'name' => ['required', 'string', 'max:255'], 'subject' => ['required', 'string', 'max:255'], 'content' => ['nullable', 'string'], 'status' => ['required', 'in:draft,scheduled,sent'], 'scheduled_at' => ['nullable', 'date']]));
|
||||
|
||||
return back()->with('status', 'Campaign created.');
|
||||
}
|
||||
|
||||
public function publicSubscribe(Request $r): RedirectResponse
|
||||
{
|
||||
$data = $r->validate(['email' => ['required', 'email', 'max:255'], 'name' => ['nullable', 'string', 'max:255']]);
|
||||
Subscriber::query()->updateOrCreate(
|
||||
['email' => strtolower($data['email'])],
|
||||
['name' => $data['name'] ?? null, 'status' => 'confirmed', 'confirmation_token' => Str::random(48), 'confirmed_at' => now()]
|
||||
);
|
||||
|
||||
return back()->with('status', 'Thank you for subscribing.');
|
||||
}
|
||||
|
||||
public function destroySubscriber(Subscriber $subscriber): RedirectResponse
|
||||
{
|
||||
$subscriber->delete();
|
||||
|
||||
return back()->with('status', 'Subscriber deleted.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user