[ Mini Kiebo ]
Server: Windows NT AKFAR_SERVER 10.0 build 26200 (Windows 10) AMD64
Path:
D:
/
xampp
/
htdocs
/
surat
/
app
/
Models
/
[
Home
]
File: Attachment.php
<?php namespace App\Models; use App\Enums\Config as ConfigEnum; use App\Enums\LetterType; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; class Attachment extends Model { use HasFactory; protected $fillable = [ 'path', 'filename', 'extension', 'letter_id', 'user_id', ]; protected $appends = [ 'path_url', ]; /** * @return string */ public function getPathUrlAttribute(): string { if (!is_null($this->path)) { return $this->path; } return asset('storage/attachments/' . $this->filename); } public function scopeType($query, LetterType $type) { return $query->whereHas('letter', function ($query) use ($type) { return $query->where('type', $type->type()); }); } public function scopeIncoming($query) { return $this->scopeType($query, LetterType::INCOMING); } public function scopeOutgoing($query) { return $this->scopeType($query, LetterType::OUTGOING); } public function scopeSearch($query, $search) { return $query->when($search, function($query, $find) { return $query ->where('filename', 'LIKE', '%' . $find . '%') ->orWhereHas('letter', function ($query) use ($find) { return $query->where('reference_number', $find); }); }); } public function scopeRender($query, $search) { return $query ->with(['letter']) ->search($search) ->latest('created_at') ->paginate(Config::getValueByCode(ConfigEnum::PAGE_SIZE)) ->appends([ 'search' => $search, ]); } /** * @return BelongsTo */ public function letter(): BelongsTo { return $this->belongsTo(Letter::class); } /** * @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } }