inizio sistemazione tag mailing list

This commit is contained in:
Mariano
2026-06-18 07:43:33 +02:00
parent 3b2ad1a0d5
commit d2084b9d07
9 changed files with 195 additions and 20 deletions
@@ -64,7 +64,7 @@ class CalendarioConnessioneController extends Controller
$connessione->is_active = $request->boolean('is_active', true);
if (!empty($data['config'])) {
$connessione->encryptAndSetConfig($data['config']);
$connessione->encryptAndSetConfig($data['config'], $connessione->config ?? []);
}
$connessione->save();
@@ -186,6 +186,41 @@ class MailingListController extends Controller
return redirect()->route('mailing-liste.index')->with('success', 'Lista eliminata.');
}
public function massTag(Request $request)
{
$this->authorizeWrite('mailing');
$idsInput = $request->input('ids', '');
$ids = is_array($idsInput) ? $idsInput : (is_string($idsInput) ? explode(',', $idsInput) : []);
if (empty($ids)) {
return back()->with('error', 'Nessuna mailing list selezionata.');
}
$data = $request->validate([
'tags' => 'required|array',
'tags.*' => 'exists:tags,id',
'mode' => 'required|in:assign,remove',
]);
$tagIds = $data['tags'];
$mode = $data['mode'];
$count = 0;
MailingList::whereIn('id', $ids)->chunk(100, function ($lists) use ($tagIds, $mode, &$count) {
foreach ($lists as $list) {
if ($mode === 'assign') {
$list->tags()->syncWithoutDetaching($tagIds);
} else {
$list->tags()->detach($tagIds);
}
$count++;
}
});
$actionLabel = $mode === 'assign' ? 'assegnati' : 'rimossi';
return back()->with('success', "Tag $actionLabel per $count mailing list.");
}
public function massElimina(Request $request)
{
$this->authorizeDelete('mailing');