'datetime', 'favourites' => 'array', ]; protected $appends = [ 'used_capacity', 'storage' ]; /** * Get user used storage details * * @return mixed */ public function getStorageAttribute() { return [ 'used' => (float) get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity), 'capacity' => $this->settings->storage_capacity, 'capacity_formatted' => Metric::gigabytes($this->settings->storage_capacity)->format(), ]; } /** * Get user used storage capacity in bytes * * @return mixed */ public function getUsedCapacityAttribute() { $user_capacity = $this->files_with_trashed->map(function ($item) { return $item->getOriginal(); })->sum('filesize'); return $user_capacity; } /** * Format avatar to full url * * @return \Illuminate\Contracts\Routing\UrlGenerator|string */ public function getAvatarAttribute() { if ($this->attributes['avatar']) { return url('/' . $this->attributes['avatar']); } return url('/assets/images/' . 'default-avatar.png'); } /** * Send the password reset notification. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new ResetPassword($token)); } /** * Get user favourites folder * * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany */ public function favourites() { return $this->belongsToMany(FileManagerFolder::class, 'favourite_folder', 'user_id', 'folder_unique_id', 'id', 'unique_id')->with('shared:token,id,item_id,permission,protected'); } /** * Get 5 latest uploads * * @return \Illuminate\Database\Eloquent\Relations\HasMany|\Illuminate\Database\Query\Builder */ public function latest_uploads() { return $this->hasMany(FileManagerFile::class)->with(['parent'])->orderBy('created_at', 'DESC')->take(40); } /** * Get all user files * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function files() { return $this->hasMany(FileManagerFile::class); } /** * Get all user files * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function files_with_trashed() { return $this->hasMany(FileManagerFile::class)->withTrashed(); } /** * Get user attributes * * @return \Illuminate\Database\Eloquent\Relations\HasOne */ public function settings() { return $this->hasOne(UserSettings::class); } }