diff --git a/app/Models/Accessory.php b/app/Models/Accessory.php index 2f13a130d3..cd0bfaca60 100755 --- a/app/Models/Accessory.php +++ b/app/Models/Accessory.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Helpers\Helper; use App\Models\Traits\Acceptable; +use App\Models\Traits\HasUploads; use App\Models\Traits\Searchable; use App\Presenters\Presentable; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -22,6 +23,7 @@ class Accessory extends SnipeModel protected $presenter = \App\Presenters\AccessoryPresenter::class; use CompanyableTrait; + use HasUploads; use Loggable, Presentable; use SoftDeletes; @@ -102,24 +104,6 @@ class Accessory extends SnipeModel ]; - - /** - * Establishes the accessories -> action logs -> uploads relationship - * - * @author A. Gianotto - * @since [v6.1.13] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany(\App\Models\Actionlog::class, 'item_id') - ->where('item_type', '=', self::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } - - /** * Establishes the accessory -> supplier relationship * diff --git a/app/Models/Asset.php b/app/Models/Asset.php index f455afccc1..ec9a2590a3 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -7,19 +7,17 @@ use App\Exceptions\CheckoutNotAllowed; use App\Helpers\Helper; use App\Http\Traits\UniqueUndeletedTrait; use App\Models\Traits\Acceptable; +use App\Models\Traits\HasUploads; use App\Models\Traits\Searchable; use App\Presenters\Presentable; use App\Presenters\AssetPresenter; -use Illuminate\Support\Facades\Auth; use Carbon\Carbon; -use Illuminate\Support\Facades\DB; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Facades\Storage; use Watson\Validating\ValidatingTrait; use Illuminate\Database\Eloquent\Casts\Attribute; -use Illuminate\Database\Eloquent\Model; /** * Model for Assets. @@ -33,6 +31,7 @@ class Asset extends Depreciable protected $with = ['model', 'adminuser']; use CompanyableTrait; + use HasUploads; use HasFactory, Loggable, Requestable, Presentable, SoftDeletes, ValidatingTrait, UniqueUndeletedTrait; public const LOCATION = 'location'; @@ -472,22 +471,6 @@ class Asset extends Depreciable } - /** - * Get uploads for this asset - * - * @author [A. Gianotto] [] - * @since [v4.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany('\App\Models\Actionlog', 'item_id') - ->where('item_type', '=', Asset::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } - /** * Determines whether the asset is checked out to a user * diff --git a/app/Models/AssetModel.php b/app/Models/AssetModel.php index 8d60474b96..ad236be8d9 100755 --- a/app/Models/AssetModel.php +++ b/app/Models/AssetModel.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Models\Traits\HasUploads; use App\Models\Traits\Searchable; use App\Presenters\Presentable; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -24,6 +25,7 @@ class AssetModel extends SnipeModel use SoftDeletes; use Loggable, Requestable, Presentable; use TwoColumnUniqueUndeletedTrait; + use HasUploads; /** * Whether the model should inject its identifier to the unique @@ -209,21 +211,6 @@ class AssetModel extends SnipeModel && ($this->deleted_at == ''); } - /** - * Get uploads for this model - * - * @author [A. Gianotto] [] - * @since [v4.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany('\App\Models\Actionlog', 'item_id') - ->where('item_type', '=', AssetModel::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } /** * Get user who created the item diff --git a/app/Models/Component.php b/app/Models/Component.php index 0208fb9f68..df3289e52f 100644 --- a/app/Models/Component.php +++ b/app/Models/Component.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Models\Traits\HasUploads; use App\Models\Traits\Searchable; use App\Presenters\Presentable; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -20,6 +21,7 @@ class Component extends SnipeModel protected $presenter = \App\Presenters\ComponentPresenter::class; use CompanyableTrait; + use HasUploads; use Loggable, Presentable; use SoftDeletes; protected $casts = [ @@ -113,21 +115,6 @@ class Component extends SnipeModel && ($this->deleted_at == ''); } - /** - * Establishes the components -> action logs -> uploads relationship - * - * @author A. Gianotto - * @since [v6.1.13] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany(\App\Models\Actionlog::class, 'item_id') - ->where('item_type', '=', self::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } /** diff --git a/app/Models/Consumable.php b/app/Models/Consumable.php index b881ec65f3..ba5fa97c2e 100644 --- a/app/Models/Consumable.php +++ b/app/Models/Consumable.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Helpers\Helper; use App\Models\Traits\Acceptable; +use App\Models\Traits\HasUploads; use App\Models\Traits\Searchable; use App\Presenters\Presentable; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -29,6 +30,7 @@ class Consumable extends SnipeModel use Loggable, Presentable; use SoftDeletes; use Acceptable; + use HasUploads; protected $table = 'consumables'; protected $casts = [ @@ -111,21 +113,6 @@ class Consumable extends SnipeModel ]; - /** - * Establishes the components -> action logs -> uploads relationship - * - * @author A. Gianotto - * @since [v6.1.13] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany(Actionlog::class, 'item_id') - ->where('item_type', '=', self::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } /** diff --git a/app/Models/License.php b/app/Models/License.php index 6e412f2fd7..d7dca5d291 100755 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Helpers\Helper; +use App\Models\Traits\HasUploads; use App\Models\Traits\Searchable; use App\Presenters\Presentable; use Carbon\Carbon; @@ -21,6 +22,7 @@ class License extends Depreciable use SoftDeletes; use CompanyableTrait; + use HasUploads; use Loggable, Presentable; protected $injectUniqueIdentifier = true; use ValidatingTrait; @@ -411,21 +413,6 @@ class License extends Depreciable ->orderBy('created_at', 'desc'); } - /** - * Establishes the license -> action logs -> uploads relationship - * - * @author A. Gianotto - * @since [v2.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany(\App\Models\Actionlog::class, 'item_id') - ->where('item_type', '=', self::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } /** diff --git a/app/Models/Location.php b/app/Models/Location.php index 52236092d3..80f28de7a7 100755 --- a/app/Models/Location.php +++ b/app/Models/Location.php @@ -6,6 +6,7 @@ use App\Http\Traits\UniqueUndeletedTrait; use App\Models\Asset; use App\Models\Setting; use App\Models\SnipeModel; +use App\Models\Traits\HasUploads; use App\Models\Traits\Searchable; use App\Models\User; use App\Presenters\Presentable; @@ -25,6 +26,7 @@ class Location extends SnipeModel protected $presenter = \App\Presenters\LocationPresenter::class; use Presentable; use SoftDeletes; + use HasUploads; protected $table = 'locations'; protected $rules = [ @@ -300,22 +302,6 @@ class Location extends SnipeModel return $this->attributes['ldap_ou'] = empty($ldap_ou) ? null : $ldap_ou; } - /** - * Get uploads for this location - * - * @author [A. Gianotto] [] - * @since [v4.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany('\App\Models\Actionlog', 'item_id') - ->where('item_type', '=', Location::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } - /** * Query builder scope to order on parent diff --git a/app/Models/Traits/HasUploads.php b/app/Models/Traits/HasUploads.php new file mode 100644 index 0000000000..da94e0fb19 --- /dev/null +++ b/app/Models/Traits/HasUploads.php @@ -0,0 +1,18 @@ +hasMany(Actionlog::class, 'item_id') + ->where('item_type', self::class) + ->where('action_type', '=', 'uploaded') + ->whereNotNull('filename'); + } + + +} \ No newline at end of file diff --git a/app/Models/User.php b/app/Models/User.php index 9ae50c2fa9..6034d6ae7c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -4,6 +4,7 @@ namespace App\Models; use App\Http\Traits\UniqueUndeletedTrait; use App\Models\Traits\Searchable; +use App\Models\Traits\HasUploads; use App\Presenters\Presentable; use Illuminate\Auth\Authenticatable; use Illuminate\Auth\Passwords\CanResetPassword; @@ -27,6 +28,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo { use HasFactory; use CompanyableTrait; + use HasUploads; protected $presenter = \App\Presenters\UserPresenter::class; use SoftDeletes, ValidatingTrait, Loggable; @@ -530,21 +532,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo return $this->hasMany(\App\Models\Asset::class, 'id')->withTrashed(); } - /** - * Establishes the user -> uploads relationship - * - * @author A. Gianotto - * @since [v3.0] - * @return \Illuminate\Database\Eloquent\Relations\Relation - */ - public function uploads() - { - return $this->hasMany(\App\Models\Actionlog::class, 'item_id') - ->where('item_type', self::class) - ->where('action_type', '=', 'uploaded') - ->whereNotNull('filename') - ->orderBy('created_at', 'desc'); - } + /** * Establishes the user -> acceptances relationship