versione 2.0.0

This commit is contained in:
2026-06-09 11:02:01 +02:00
parent 6f106e3130
commit d82b123bfd
38 changed files with 1552 additions and 83 deletions
+35 -11
View File
@@ -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,