mivita/app/Models/NewsletterList.php
Kevin d21d94a060 Newsletter-Listen: Empfaengerlisten filtern, speichern und exportieren
Admin-Bereich "Newsletter-Listen" (Plan dev/_tickets/entwicklungsplan-
newsletter-listen.md): Berater und Kunden nach Filtern zusammenstellen,
als Liste speichern und wieder laden, Export als XLSX/CSV. Jeder Export
wird protokolliert (newsletter_list_exports).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 15:44:09 +00:00

54 lines
1.2 KiB
PHP

<?php
namespace App\Models;
use App\Services\Newsletter\NewsletterListFilter;
use App\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
/**
* Gespeicherte Filterkombination für den Newsletter-Export.
*/
class NewsletterList extends Model
{
protected $fillable = [
'name',
'source',
'filters',
'created_by',
'last_exported_at',
'last_row_count',
];
protected function casts(): array
{
return [
'filters' => 'array',
'last_exported_at' => 'datetime',
'last_row_count' => 'integer',
];
}
public function creator(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function exports(): HasMany
{
return $this->hasMany(NewsletterListExport::class, 'newsletter_list_id');
}
public function toFilter(): NewsletterListFilter
{
return NewsletterListFilter::fromArray((array) $this->filters);
}
public function applyFilter(NewsletterListFilter $filter): void
{
$this->source = $filter->source;
$this->filters = $filter->toArray();
}
}