Added supplier file uploads
This commit is contained in:
@@ -30,6 +30,7 @@ use App\Models\Consumable;
|
|||||||
use App\Models\License;
|
use App\Models\License;
|
||||||
use App\Models\Location;
|
use App\Models\Location;
|
||||||
use App\Models\Maintenance;
|
use App\Models\Maintenance;
|
||||||
|
use App\Models\Supplier;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
|
||||||
@@ -52,6 +53,7 @@ abstract class Controller extends BaseController
|
|||||||
'licenses' => License::class,
|
'licenses' => License::class,
|
||||||
'locations' => Location::class,
|
'locations' => Location::class,
|
||||||
'models' => AssetModel::class,
|
'models' => AssetModel::class,
|
||||||
|
'suppliers' => Supplier::class,
|
||||||
'users' => User::class,
|
'users' => User::class,
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -66,6 +68,7 @@ abstract class Controller extends BaseController
|
|||||||
'licenses' => 'private_uploads/licenses/',
|
'licenses' => 'private_uploads/licenses/',
|
||||||
'locations' => 'private_uploads/locations/',
|
'locations' => 'private_uploads/locations/',
|
||||||
'models' => 'private_uploads/models/',
|
'models' => 'private_uploads/models/',
|
||||||
|
'suppliers' => 'private_uploads/suppliers/',
|
||||||
'users' => 'private_uploads/users/',
|
'users' => 'private_uploads/users/',
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -80,6 +83,7 @@ abstract class Controller extends BaseController
|
|||||||
'licenses' => 'license',
|
'licenses' => 'license',
|
||||||
'locations' => 'location',
|
'locations' => 'location',
|
||||||
'models' => 'model',
|
'models' => 'model',
|
||||||
|
'suppliers' => 'supplier',
|
||||||
'users' => 'user',
|
'users' => 'user',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -518,6 +518,8 @@ class Actionlog extends SnipeModel
|
|||||||
return 'private_uploads/locations/'.$this->filename;
|
return 'private_uploads/locations/'.$this->filename;
|
||||||
case Maintenance::class:
|
case Maintenance::class:
|
||||||
return 'private_uploads/maintenances/'.$this->filename;
|
return 'private_uploads/maintenances/'.$this->filename;
|
||||||
|
case Supplier::class:
|
||||||
|
return 'private_uploads/suppliers/'.$this->filename;
|
||||||
case User::class:
|
case User::class:
|
||||||
return 'private_uploads/users/'.$this->filename;
|
return 'private_uploads/users/'.$this->filename;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -3,15 +3,18 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use App\Http\Traits\UniqueUndeletedTrait;
|
use App\Http\Traits\UniqueUndeletedTrait;
|
||||||
|
use App\Models\Traits\HasUploads;
|
||||||
use App\Models\Traits\Searchable;
|
use App\Models\Traits\Searchable;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
use Watson\Validating\ValidatingTrait;
|
use Watson\Validating\ValidatingTrait;
|
||||||
use \Illuminate\Database\Eloquent\Relations\Relation;
|
use \Illuminate\Database\Eloquent\Relations\Relation;
|
||||||
|
use App\Models\Traits\Loggable;
|
||||||
class Supplier extends SnipeModel
|
class Supplier extends SnipeModel
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
use SoftDeletes;
|
use SoftDeletes;
|
||||||
|
use HasUploads;
|
||||||
|
|
||||||
protected $table = 'suppliers';
|
protected $table = 'suppliers';
|
||||||
|
|
||||||
@@ -42,6 +45,7 @@ class Supplier extends SnipeModel
|
|||||||
use ValidatingTrait;
|
use ValidatingTrait;
|
||||||
use UniqueUndeletedTrait;
|
use UniqueUndeletedTrait;
|
||||||
use Searchable;
|
use Searchable;
|
||||||
|
use Loggable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes that should be included when searching the model.
|
* The attributes that should be included when searching the model.
|
||||||
|
|||||||
@@ -100,6 +100,26 @@
|
|||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="#files" data-toggle="tab">
|
||||||
|
|
||||||
|
<span class="hidden-lg hidden-md">
|
||||||
|
<i class="fas fa-barcode fa-2x"></i>
|
||||||
|
</span>
|
||||||
|
<span class="hidden-xs hidden-sm">
|
||||||
|
{{ trans('general.files') }}
|
||||||
|
{!! ($supplier->uploads->count() > 0 ) ? '<span class="badge badge-secondary">'.number_format($supplier->uploads->count()).'</span>' : '' !!}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="pull-right">
|
||||||
|
<a href="#" data-toggle="modal" data-target="#uploadFileModal">
|
||||||
|
<x-icon type="paperclip" />
|
||||||
|
{{ trans('button.upload') }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
@@ -243,6 +263,14 @@
|
|||||||
</div><!-- /.table-responsive -->
|
</div><!-- /.table-responsive -->
|
||||||
</div><!-- /.tab-pane -->
|
</div><!-- /.tab-pane -->
|
||||||
|
|
||||||
|
<div class="tab-pane fade" id="files">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<x-filestable object_type="suppliers" :object="$supplier" />
|
||||||
|
</div> <!-- /.col-md-12 -->
|
||||||
|
</div> <!-- /.row -->
|
||||||
|
</div>
|
||||||
|
|
||||||
</div><!--/.col-md-9-->
|
</div><!--/.col-md-9-->
|
||||||
</div><!--/.col-md-9-->
|
</div><!--/.col-md-9-->
|
||||||
</div><!--/.col-md-9-->
|
</div><!--/.col-md-9-->
|
||||||
@@ -318,6 +346,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@can('update', \App\Models\Supplier::class)
|
||||||
|
@include ('modals.upload-file', ['item_type' => 'supplier', 'item_id' => $supplier->id])
|
||||||
|
@endcan
|
||||||
@stop
|
@stop
|
||||||
|
|
||||||
@section('moar_scripts')
|
@section('moar_scripts')
|
||||||
|
|||||||
@@ -1348,7 +1348,7 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
|
|||||||
'index'
|
'index'
|
||||||
]
|
]
|
||||||
)->name('api.files.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
|
// Get a file
|
||||||
Route::get('{object_type}/{id}/files/{file_id}',
|
Route::get('{object_type}/{id}/files/{file_id}',
|
||||||
@@ -1357,7 +1357,7 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
|
|||||||
'show'
|
'show'
|
||||||
]
|
]
|
||||||
)->name('api.files.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)
|
// Upload files(s)
|
||||||
Route::post('{object_type}/{id}/files',
|
Route::post('{object_type}/{id}/files',
|
||||||
@@ -1366,7 +1366,7 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
|
|||||||
'store'
|
'store'
|
||||||
]
|
]
|
||||||
)->name('api.files.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)
|
// Delete files(s)
|
||||||
Route::delete('{object_type}/{id}/files/{file_id}/delete',
|
Route::delete('{object_type}/{id}/files/{file_id}/delete',
|
||||||
@@ -1375,6 +1375,6 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'api-throttle:api']], fu
|
|||||||
'destroy'
|
'destroy'
|
||||||
]
|
]
|
||||||
)->name('api.files.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
|
}); // end API routes
|
||||||
|
|||||||
@@ -716,7 +716,7 @@ Route::group(['middleware' => 'web'], function () {
|
|||||||
'show'
|
'show'
|
||||||
]
|
]
|
||||||
)->name('ui.files.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)
|
// Upload files(s)
|
||||||
Route::post('{object_type}/{id}/files',
|
Route::post('{object_type}/{id}/files',
|
||||||
@@ -725,7 +725,7 @@ Route::group(['middleware' => 'web'], function () {
|
|||||||
'store'
|
'store'
|
||||||
]
|
]
|
||||||
)->name('ui.files.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)
|
// Delete files(s)
|
||||||
Route::delete('{object_type}/{id}/files/{file_id}/delete',
|
Route::delete('{object_type}/{id}/files/{file_id}/delete',
|
||||||
@@ -734,7 +734,7 @@ Route::group(['middleware' => 'web'], function () {
|
|||||||
'destroy'
|
'destroy'
|
||||||
]
|
]
|
||||||
)->name('ui.files.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']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
storage/private_uploads/suppliers/.gitignore
vendored
Normal file
2
storage/private_uploads/suppliers/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*
|
||||||
|
!.gitignore
|
||||||
Reference in New Issue
Block a user