diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php
index 367ab1c10c..53b256ef05 100644
--- a/app/Http/Controllers/Controller.php
+++ b/app/Http/Controllers/Controller.php
@@ -30,6 +30,7 @@ use App\Models\Consumable;
use App\Models\License;
use App\Models\Location;
use App\Models\Maintenance;
+use App\Models\Supplier;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
@@ -52,6 +53,7 @@ abstract class Controller extends BaseController
'licenses' => License::class,
'locations' => Location::class,
'models' => AssetModel::class,
+ 'suppliers' => Supplier::class,
'users' => User::class,
];
@@ -66,6 +68,7 @@ abstract class Controller extends BaseController
'licenses' => 'private_uploads/licenses/',
'locations' => 'private_uploads/locations/',
'models' => 'private_uploads/models/',
+ 'suppliers' => 'private_uploads/suppliers/',
'users' => 'private_uploads/users/',
];
@@ -80,6 +83,7 @@ abstract class Controller extends BaseController
'licenses' => 'license',
'locations' => 'location',
'models' => 'model',
+ 'suppliers' => 'supplier',
'users' => 'user',
];
diff --git a/app/Models/Actionlog.php b/app/Models/Actionlog.php
index 786246778c..030850b50e 100755
--- a/app/Models/Actionlog.php
+++ b/app/Models/Actionlog.php
@@ -518,6 +518,8 @@ class Actionlog extends SnipeModel
return 'private_uploads/locations/'.$this->filename;
case Maintenance::class:
return 'private_uploads/maintenances/'.$this->filename;
+ case Supplier::class:
+ return 'private_uploads/suppliers/'.$this->filename;
case User::class:
return 'private_uploads/users/'.$this->filename;
default:
diff --git a/app/Models/Supplier.php b/app/Models/Supplier.php
index 2c99330604..25e763c957 100755
--- a/app/Models/Supplier.php
+++ b/app/Models/Supplier.php
@@ -3,15 +3,18 @@
namespace App\Models;
use App\Http\Traits\UniqueUndeletedTrait;
+use App\Models\Traits\HasUploads;
use App\Models\Traits\Searchable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes;
use Watson\Validating\ValidatingTrait;
use \Illuminate\Database\Eloquent\Relations\Relation;
+use App\Models\Traits\Loggable;
class Supplier extends SnipeModel
{
use HasFactory;
use SoftDeletes;
+ use HasUploads;
protected $table = 'suppliers';
@@ -42,6 +45,7 @@ class Supplier extends SnipeModel
use ValidatingTrait;
use UniqueUndeletedTrait;
use Searchable;
+ use Loggable;
/**
* The attributes that should be included when searching the model.
diff --git a/resources/views/suppliers/view.blade.php b/resources/views/suppliers/view.blade.php
index bc216a964e..dfee233e1b 100755
--- a/resources/views/suppliers/view.blade.php
+++ b/resources/views/suppliers/view.blade.php
@@ -100,6 +100,26 @@
+
+
+
+
+
+
+
+
+ {{ trans('general.files') }}
+ {!! ($supplier->uploads->count() > 0 ) ? ''.number_format($supplier->uploads->count()).'' : '' !!}
+
+
+
+
+
+
+
+ {{ trans('button.upload') }}
+
+
@@ -243,6 +263,14 @@
+
+
@@ -318,6 +346,9 @@
+ @can('update', \App\Models\Supplier::class)
+ @include ('modals.upload-file', ['item_type' => 'supplier', 'item_id' => $supplier->id])
+ @endcan
@stop
@section('moar_scripts')
diff --git a/routes/api.php b/routes/api.php
index b057705455..dbb9348f7e 100644
--- a/routes/api.php
+++ b/routes/api.php
@@ -1348,7 +1348,7 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
'index'
]
)->name('api.files.index')
- ->where(['object_type' => 'accessories|audits|assets|components|consumables|hardware|licenses|locations|maintenances|models|users']);
+ ->where(['object_type' => 'accessories|audits|assets|components|consumables|hardware|licenses|locations|maintenances|models|suppliers|users']);
// Get a file
Route::get('{object_type}/{id}/files/{file_id}',
@@ -1357,7 +1357,7 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
'show'
]
)->name('api.files.show')
- ->where(['object_type' => 'accessories|audits|assets|components|consumables|hardware|licenses|locations|maintenances|models|users']);
+ ->where(['object_type' => 'accessories|audits|assets|components|consumables|hardware|licenses|locations|maintenances|models|suppliers|users']);
// Upload files(s)
Route::post('{object_type}/{id}/files',
@@ -1366,7 +1366,7 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
'store'
]
)->name('api.files.store')
- ->where(['object_type' => 'accessories|audits|assets|components|consumables|hardware|licenses|locations|maintenances|models|users']);
+ ->where(['object_type' => 'accessories|audits|assets|components|consumables|hardware|licenses|locations|maintenances|models|suppliers|users']);
// Delete files(s)
Route::delete('{object_type}/{id}/files/{file_id}/delete',
@@ -1375,6 +1375,6 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
'destroy'
]
)->name('api.files.destroy')
- ->where(['object_type' => 'accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|users']);
+ ->where(['object_type' => 'accessories|assets|components|consumables|hardware|licenses|locations|maintenances|models|suppliers|users']);
}); // end API routes
diff --git a/routes/web.php b/routes/web.php
index 53595cb8a3..47e1c46003 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -716,7 +716,7 @@ Route::group(['middleware' => 'web'], function () {
'show'
]
)->name('ui.files.show')
- ->where(['object_type' => 'assets|audits|maintenances|hardware|models|users|locations|accessories|consumables|licenses|components']);
+ ->where(['object_type' => 'assets|audits|maintenances|hardware|models|users|locations|accessories|consumables|licenses|suppliers|components']);
// Upload files(s)
Route::post('{object_type}/{id}/files',
@@ -725,7 +725,7 @@ Route::group(['middleware' => 'web'], function () {
'store'
]
)->name('ui.files.store')
- ->where(['object_type' => 'assets|audits|maintenances|hardware|models|users|locations|accessories|consumables|licenses|components']);
+ ->where(['object_type' => 'assets|audits|maintenances|hardware|models|users|locations|accessories|consumables|licenses|suppliers|components']);
// Delete files(s)
Route::delete('{object_type}/{id}/files/{file_id}/delete',
@@ -734,7 +734,7 @@ Route::group(['middleware' => 'web'], function () {
'destroy'
]
)->name('ui.files.destroy')
- ->where(['object_type' => 'assets|maintenances|hardware|models|users|locations|accessories|consumables|licenses|components']);
+ ->where(['object_type' => 'assets|maintenances|hardware|models|users|locations|accessories|consumables|licenses|suppliers|components']);
});
diff --git a/storage/private_uploads/suppliers/.gitignore b/storage/private_uploads/suppliers/.gitignore
new file mode 100644
index 0000000000..c96a04f008
--- /dev/null
+++ b/storage/private_uploads/suppliers/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file