<?php
namespace App;
use Encore\Admin\Auth\Database\HasPermissions;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Support\Facades\Storage;
use Illuminate\Auth\Authenticatable;
use Encore\Admin\Traits\AdminBuilder;
class User extends Model implements AuthenticatableContract
{
use Authenticatable, AdminBuilder, HasPermissions;
protected $fillable = ['username', 'password', 'name', 'avatar'];
protected $table = 'admin_users';
public function company() {
return $this->belongsTo(Company::class,'company_id');
}
public function department() {
return $this->belongsTO(Department::class, 'department_id');
}
public function service_user() {
return $this->belongsTO(User::class, 'service_user_id');
}
public function getAvatarAttribute($avatar)
{
if (url()->isValidUrl($avatar)) {
return $avatar;
}
$disk = config('admin.upload.disk');
if ($avatar && array_key_exists($disk, config('filesystems.disks'))) {
return Storage::disk(config('admin.upload.disk'))->url($avatar);
}
return url('img/default-personal.jpg');
}
public function roles() : BelongsToMany
{
$pivotTable = config('admin.database.role_users_table');
$relatedModel = config('admin.database.roles_model');
return $this->belongsToMany($relatedModel, $pivotTable, 'user_id', 'role_id');
}
public function permissions() : BelongsToMany
{
$pivotTable = config('admin.database.user_permissions_table');
$relatedModel = config('admin.database.permissions_model');
return $this->belongsToMany($relatedModel, $pivotTable, 'user_id', 'permission_id');
}
public function getComboAttribute(){
$userCombo = UserCombo::where('user_id',$this->id)->whereDate('end_at','>',date('Y-m-d H:i:s',time()))->first();
return isset($userCombo) ? $userCombo : new UserCombo();
}
}