/
home
/
corsairdevelopme
/
public_html
/
amplivo-console
/
app
/
Models
/
Upload File
HOME
<?php namespace App\Models; use App\Http\Traits\LogsActivityCustom; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; use Spatie\Activitylog\Contracts\Activity; use Spatie\Activitylog\LogOptions; class Newsletter extends Model { use HasFactory, LogsActivityCustom; protected $table = "newsletter"; protected $fillable = [ 'id', 'created_by', 'updated_by', 'name', 'send_at', 'sender_name', 'sender_email', 'newsletter_list_id', 'newsletter_template_id', 'status' , 'is_report_fetched' ]; protected $appends = ['newsletter_list_name']; protected static $recordEvents = ['created','deleted']; public $pageName = "Newsletter Campaign"; public $colName = "name"; public function NewsletterListId(): Attribute { return Attribute::make( function ($value) { return array_filter(explode(',', $value)); },function ($value){ if (is_string($value) || empty($value)) { return $value; } else { return implode(',', $value); } } ); } public function newsletterList() { return $this->belongsTo(NewsletterList::class); } public function newsletterTemplate() { return $this->belongsTo(NewsletterTemplate::class,'newsletter_template_id'); } public function user() { return $this->belongsTo(User::class, 'created_by')->with('details'); } public function tapActivity(Activity $activity, string $eventName) { $activity->log_name = $eventName; if ($eventName == 'created') { $activity->description = $this->pageName . ' ' . $this->attributes['name'] . ' ' . $eventName; } elseif ($eventName == 'deleted') { $activity->description = $this->pageName . ' ' . $this->attributes['name'] . ' ' . $eventName; } } public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->useLogName('system') ->submitEmptyLogs(false) ->logFillable() ->logExcept(['created_at', 'updated_at']); } public function getNewsletterListNameAttribute() { $newsletterLists = NewsletterList::whereIn('id', $this->newsletter_list_id)->pluck('name')->toArray(); return implode(', ', $newsletterLists); } }