Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
6 / 6
CRAP
100.00% covered (success)
100.00%
12 / 12
File
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
6 / 6
9
100.00% covered (success)
100.00%
12 / 12
 getUploadedByAttribute
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 moduleInstance
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 activityInstance
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 statuses
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 getStatusAttribute
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
7 / 7
 comments
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
<?php
namespace BristolSU\Module\UploadFile\Models;
use BristolSU\Support\ActivityInstance\Contracts\ActivityInstanceRepository;
use BristolSU\Support\Authentication\HasResource;
use BristolSU\ControlDB\Contracts\Repositories\User as UserRepository;
use BristolSU\Support\ModuleInstance\Contracts\ModuleInstanceRepository;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Config;
class File extends Model
{
    use SoftDeletes, HasResource;
    protected $table = 'uploadfile_files';
    
    protected $appends = ['status'];
    
    protected $fillable = [
        'title',
        'description',
        'filename',
        'mime',
        'path',
        'size',
        'uploaded_by',
        'module_instance_id',
        'activity_instance_id',
    ];
    public function getUploadedByAttribute($uploadedById)
    {
        return app()->make(UserRepository::class)->getById($uploadedById);
    }
    
    public function moduleInstance()
    {
        return app(ModuleInstanceRepository::class)->getById($this->module_instance_id);
    }
    public function activityInstance()
    {
        return app(ActivityInstanceRepository::class)->getById($this->activity_instance_id);
    }
    public function statuses()
    {
        return $this->hasMany(FileStatus::class);
    }
    public function getStatusAttribute()
    {
        if($this->statuses()->count() > 0) {
            return $this->statuses()->latest('created_at')->first()->status;
        }
        
        $statuses = Config::get('uploadfile.statuses');
        if(!is_array($statuses) || count($statuses) === 0) {
            $default = 'Awaiting Approval';
        } else {
            $default = $statuses[0];
        }
        
        return settings('initial_status', $default);
    }
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }
}