sintonia_webapp/app/Models/File.php

108 lines
2.5 KiB
PHP

<?php
namespace App\Models;
use App\Filters\FileFilters;
use App\Filters\SmartBlockCriteriaFilters;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class File extends Model
{
use HasFactory;
protected $table = 'cc_files';
const CREATED_AT = 'utime';
const UPDATED_AT = 'mtime';
protected $fillable = [
'name',
'mime',
'ftype',
'filepath',
'import_status',
'currentlyaccessing',
'editedby',
'lptime',
'md5',
'track_title',
'artist_name',
'bit_rate',
'sample_rate',
'format',
'length',
'album_title',
'genre',
'comments',
'year',
'track_number',
'channels',
'url',
'bpm',
'rating',
'encoded_by',
'disc_number',
'mood',
'label',
'composer',
'encoder',
'checksum',
'lyrics',
'orchestra',
'conductor',
'lyricist',
'original_lyricist',
'radio_station_name',
'info_url',
'artist_url',
'audio_source_url',
'radio_station_url',
'buy_this_url',
'isrc_number',
'catalog_number',
'original_artist',
'copyright',
'report_datetime',
'report_location',
'report_organization',
'subject',
'contributor',
'language',
'file_exists',
'replay_gain',
'owner_id',
'cuein',
'cueout',
'silan_check',
'hidden',
'is_scheduled',
'is_playlist',
'filesize',
'description',
'artwork',
'track_type_id'
];
public function editedBy() {
return $this->belongsTo(User::class, 'editedby');
}
public function owner() {
return $this->belongsTo(User::class, 'owner_id');
}
public function track_type() {
return $this->belongsTo(TrackType::class, 'track_type_id');
}
public function scopeSearchFilter($query, $request) {
$filters = new FileFilters();
return $filters->apply($query, $request);
}
public function scopeSmartBlockFilter($query, Collection $filters) {
$class = new SmartBlockCriteriaFilters();
foreach ($filters as $filter) {
$query = $class->apply($query, $filter);
}
return $query;
}
}