versione 2.0.0
This commit is contained in:
@@ -3,23 +3,31 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\MailingList;
|
||||
use App\Models\Tag;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class MailingListController extends Controller
|
||||
{
|
||||
public function index()
|
||||
public function index(Request $request)
|
||||
{
|
||||
$this->authorizeRead('mailing');
|
||||
$mailingLists = MailingList::with(['user', 'contatti'])
|
||||
->orderBy('nome')
|
||||
->get();
|
||||
return view('mailing-liste.index', compact('mailingLists'));
|
||||
$query = MailingList::with(['user', 'contatti', 'tags']);
|
||||
|
||||
if ($request->filled('tag')) {
|
||||
$tagSlugs = (array) $request->input('tag');
|
||||
$query->withAnyTags($tagSlugs);
|
||||
}
|
||||
|
||||
$mailingLists = $query->orderBy('nome')->get();
|
||||
$allTags = Tag::orderBy('name')->get();
|
||||
return view('mailing-liste.index', compact('mailingLists', 'allTags'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->authorizeWrite('mailing');
|
||||
return view('mailing-liste.create');
|
||||
$tags = Tag::orderBy('name')->get();
|
||||
return view('mailing-liste.create', compact('tags'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
@@ -30,6 +38,8 @@ class MailingListController extends Controller
|
||||
'descrizione' => 'nullable|string',
|
||||
'attiva' => 'boolean',
|
||||
'contatti_json' => 'nullable|string',
|
||||
'tags' => 'nullable|array',
|
||||
'tags.*' => 'exists:tags,id',
|
||||
]);
|
||||
|
||||
$data['user_id'] = auth()->id();
|
||||
@@ -42,11 +52,15 @@ class MailingListController extends Controller
|
||||
'user_id' => $data['user_id'],
|
||||
]);
|
||||
|
||||
if ($request->has('tags')) {
|
||||
$lista->tags()->sync($request->tags);
|
||||
}
|
||||
|
||||
if (!empty($data['contatti_json'])) {
|
||||
$contatti = json_decode($data['contatti_json'], true);
|
||||
if (is_array($contatti)) {
|
||||
foreach ($contatti as $contatto) {
|
||||
if (!empty($contatto['individuo_id']) && !empty($contatto['email'])) {
|
||||
if (!empty($contatto['individuo_id'])) {
|
||||
$lista->contatti()->create([
|
||||
'individuo_id' => $contatto['individuo_id'],
|
||||
'opt_in' => true,
|
||||
@@ -63,15 +77,17 @@ class MailingListController extends Controller
|
||||
public function show($mailing_liste)
|
||||
{
|
||||
$this->authorizeRead('mailing');
|
||||
$mailingList = MailingList::with(['contatti.individuo.contatti'])->findOrFail($mailing_liste);
|
||||
$mailingList = MailingList::with(['contatti.individuo.contatti', 'tags'])->findOrFail($mailing_liste);
|
||||
return view('mailing-liste.show', compact('mailingList'));
|
||||
}
|
||||
|
||||
public function edit($mailingList)
|
||||
{
|
||||
$this->authorizeWrite('mailing');
|
||||
$mailingList = MailingList::with('contatti.individuo.contatti')->findOrFail($mailingList);
|
||||
return view('mailing-liste.edit', compact('mailingList'));
|
||||
$mailingList = MailingList::with(['contatti.individuo.contatti', 'tags'])->findOrFail($mailingList);
|
||||
$tags = Tag::orderBy('name')->get();
|
||||
$selectedTags = $mailingList->tags->pluck('id')->toArray();
|
||||
return view('mailing-liste.edit', compact('mailingList', 'tags', 'selectedTags'));
|
||||
}
|
||||
|
||||
public function update(Request $request, $mailingList)
|
||||
@@ -84,6 +100,8 @@ class MailingListController extends Controller
|
||||
'descrizione' => 'nullable|string',
|
||||
'attiva' => 'boolean',
|
||||
'contatti_json' => 'nullable|string',
|
||||
'tags' => 'nullable|array',
|
||||
'tags.*' => 'exists:tags,id',
|
||||
]);
|
||||
|
||||
$data['attiva'] = $data['attiva'] ?? false;
|
||||
@@ -94,6 +112,12 @@ class MailingListController extends Controller
|
||||
'attiva' => $data['attiva'],
|
||||
]);
|
||||
|
||||
if ($request->has('tags')) {
|
||||
$mailingList->tags()->sync($request->tags);
|
||||
} else {
|
||||
$mailingList->tags()->detach();
|
||||
}
|
||||
|
||||
if (!empty($data['contatti_json'])) {
|
||||
$newContatti = json_decode($data['contatti_json'], true);
|
||||
if (is_array($newContatti)) {
|
||||
@@ -107,7 +131,7 @@ class MailingListController extends Controller
|
||||
|
||||
$toAdd = array_diff($newIds, $existingIds);
|
||||
foreach ($newContatti as $contatto) {
|
||||
if (in_array($contatto['individuo_id'], $toAdd) && !empty($contatto['email'])) {
|
||||
if (in_array($contatto['individuo_id'], $toAdd)) {
|
||||
$mailingList->contatti()->create([
|
||||
'individuo_id' => $contatto['individuo_id'],
|
||||
'opt_in' => true,
|
||||
|
||||
Reference in New Issue
Block a user