SmartCane/laravel_app/app/Models/ProjectMailing.php
2024-02-01 21:23:27 +01:00

55 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Storage;
use Str;
class ProjectMailing extends Model
{
use HasFactory;
protected $fillable = [
'subject',
'message',
];
public function addAttachment($name, UploadedFile $file)
{
$prefix = Str::random(10);
$originalFileName = $file->getClientOriginalName();
$extension = pathinfo($originalFileName, PATHINFO_EXTENSION);
$newFileName = $prefix.'_'.pathinfo($originalFileName, PATHINFO_FILENAME).'.'.$extension;
$path = Storage::disk('local')->putFileAs(
$this->project->attachmentPath, $file, $newFileName
);
$this->attachments()->save(new ProjectMailingAttachment([
'name' => $name,
'path' => $path
]));
}
public function project()
{
return $this->belongsTo(Project::class, 'project_id', 'id');
}
public function recipients()
{
return $this->hasMany(ProjectMailingRecipient::class);
}
public function attachments()
{
return $this->hasMany(ProjectMailingAttachment::class);
}
}