diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 367ab1c10cf5..53b256ef053a 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -30,6 +30,7 @@ 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 786246778cd6..030850b50e44 100755 --- a/app/Models/Actionlog.php +++ b/app/Models/Actionlog.php @@ -518,6 +518,8 @@ public function uploads_file_path() 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 2c99330604e0..25e763c95773 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/database/migrations/2025_11_10_205136_change_suppliers_notes_to_text.php b/database/migrations/2025_11_10_205136_change_suppliers_notes_to_text.php new file mode 100644 index 000000000000..e155623a67f2 --- /dev/null +++ b/database/migrations/2025_11_10_205136_change_suppliers_notes_to_text.php @@ -0,0 +1,28 @@ +text('notes')->change(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('text', function (Blueprint $table) { + // + }); + } +}; diff --git a/resources/views/suppliers/view.blade.php b/resources/views/suppliers/view.blade.php index bc216a964e93..dfee233e1bf3 100755 --- a/resources/views/suppliers/view.blade.php +++ b/resources/views/suppliers/view.blade.php @@ -100,6 +100,26 @@ + +
  • + + + + + +
  • + +
  • + + + {{ trans('button.upload') }} + +
  • @@ -243,6 +263,14 @@ class="table table-striped snipe-table" +
    +
    +
    + +
    +
    +
    + @@ -318,6 +346,9 @@ class="table table-striped snipe-table" + @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 b05770545568..dbb9348f7e4a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1348,7 +1348,7 @@ '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 @@ '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 @@ '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 @@ '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 53595cb8a377..47e1c460037f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -716,7 +716,7 @@ '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 @@ '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 @@ '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 000000000000..c96a04f008ee --- /dev/null +++ b/storage/private_uploads/suppliers/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file