diff --git a/app/Http/Controllers/Api/SuppliersController.php b/app/Http/Controllers/Api/SuppliersController.php
index ab0db67909..6784ee82c1 100644
--- a/app/Http/Controllers/Api/SuppliersController.php
+++ b/app/Http/Controllers/Api/SuppliersController.php
@@ -194,7 +194,7 @@ class SuppliersController extends Controller
public function destroy($id) : JsonResponse
{
$this->authorize('delete', Supplier::class);
- $supplier = Supplier::with('asset_maintenances', 'assets', 'licenses')->withCount('asset_maintenances as asset_maintenances_count', 'assets as assets_count', 'licenses as licenses_count')->findOrFail($id);
+ $supplier = Supplier::with('maintenances', 'assets', 'licenses')->withCount('maintenances as maintenances_count', 'assets as assets_count', 'licenses as licenses_count')->findOrFail($id);
$this->authorize('delete', $supplier);
@@ -202,8 +202,8 @@ class SuppliersController extends Controller
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/suppliers/message.delete.assoc_assets', ['asset_count' => (int) $supplier->assets_count])));
}
- if ($supplier->asset_maintenances_count > 0) {
- return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/suppliers/message.delete.assoc_maintenances', ['asset_maintenances_count' => $supplier->asset_maintenances_count])));
+ if ($supplier->maintenances_count > 0) {
+ return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/suppliers/message.delete.assoc_maintenances', ['maintenances_count' => $supplier->maintenances_count])));
}
if ($supplier->licenses_count > 0) {
diff --git a/app/Http/Controllers/SuppliersController.php b/app/Http/Controllers/SuppliersController.php
index 2f1cd637ca..2a3c73bebe 100755
--- a/app/Http/Controllers/SuppliersController.php
+++ b/app/Http/Controllers/SuppliersController.php
@@ -121,7 +121,7 @@ class SuppliersController extends Controller
public function destroy($supplierId) : RedirectResponse
{
$this->authorize('delete', Supplier::class);
- if (is_null($supplier = Supplier::with('asset_maintenances', 'assets', 'licenses')->withCount('asset_maintenances as asset_maintenances_count', 'assets as assets_count', 'licenses as licenses_count')->find($supplierId))) {
+ if (is_null($supplier = Supplier::with('maintenances', 'assets', 'licenses')->withCount('maintenances as maintenances_count', 'assets as assets_count', 'licenses as licenses_count')->find($supplierId))) {
return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.not_found'));
}
@@ -129,8 +129,8 @@ class SuppliersController extends Controller
return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.delete.assoc_assets', ['asset_count' => (int) $supplier->assets_count]));
}
- if ($supplier->asset_maintenances_count > 0) {
- return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.delete.assoc_maintenances', ['asset_maintenances_count' => $supplier->asset_maintenances_count]));
+ if ($supplier->maintenances_count > 0) {
+ return redirect()->route('suppliers.index')->with('error', trans('admin/suppliers/message.delete.assoc_maintenances', ['maintenances_count' => $supplier->maintenances_count]));
}
if ($supplier->licenses_count > 0) {
diff --git a/app/Models/Maintenance.php b/app/Models/Maintenance.php
index fe96b4f340..dadc205a57 100644
--- a/app/Models/Maintenance.php
+++ b/app/Models/Maintenance.php
@@ -31,7 +31,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
'asset_id' => 'required|integer',
'supplier_id' => 'nullable|integer',
'asset_maintenance_type' => 'required',
- 'title' => 'required|max:100',
+ 'name' => 'required|max:100',
'is_warranty' => 'boolean',
'start_date' => 'required|date_format:Y-m-d',
'completion_date' => 'date_format:Y-m-d|nullable|after_or_equal:start_date',
@@ -46,7 +46,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
* @var array
*/
protected $fillable = [
- 'title',
+ 'name',
'asset_id',
'supplier_id',
'asset_maintenance_type',
@@ -67,7 +67,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
protected $searchableAttributes =
[
- 'title',
+ 'name',
'notes',
'asset_maintenance_type',
'cost',
@@ -103,14 +103,14 @@ class Maintenance extends SnipeModel implements ICompanyableChild
public static function getImprovementOptions()
{
return [
- trans('admin/$maintenances/general.maintenance') => trans('admin/$maintenances/general.maintenance'),
- trans('admin/$maintenances/general.repair') => trans('admin/$maintenances/general.repair'),
- trans('admin/$maintenances/general.upgrade') => trans('admin/$maintenances/general.upgrade'),
- trans('admin/$maintenances/general.pat_test') => trans('admin/$maintenances/general.pat_test'),
- trans('admin/$maintenances/general.calibration') => trans('admin/$maintenances/general.calibration'),
- trans('admin/$maintenances/general.software_support') => trans('admin/$maintenances/general.software_support'),
- trans('admin/$maintenances/general.hardware_support') => trans('admin/$maintenances/general.hardware_support'),
- trans('admin/$maintenances/general.configuration_change') => trans('admin/$maintenances/general.configuration_change'),
+ trans('admin/maintenances/general.maintenance') => trans('admin/maintenances/general.maintenance'),
+ trans('admin/maintenances/general.repair') => trans('admin/maintenances/general.repair'),
+ trans('admin/maintenances/general.upgrade') => trans('admin/maintenances/general.upgrade'),
+ trans('admin/maintenances/general.pat_test') => trans('admin/maintenances/general.pat_test'),
+ trans('admin/maintenances/general.calibration') => trans('admin/maintenances/general.calibration'),
+ trans('admin/maintenances/general.software_support') => trans('admin/maintenances/general.software_support'),
+ trans('admin/maintenances/general.hardware_support') => trans('admin/maintenances/general.hardware_support'),
+ trans('admin/maintenances/general.configuration_change') => trans('admin/maintenances/general.configuration_change'),
];
}
@@ -192,7 +192,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
public function getDisplayNameAttribute()
{
- return $this->title;
+ return $this->name;
}
/**
@@ -211,7 +211,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
public function scopeOrderBySupplier($query, $order)
{
- return $query->leftJoin('suppliers as suppliers_maintenances', '$maintenances.supplier_id', '=', 'suppliers_maintenances.id')
+ return $query->leftJoin('suppliers as suppliers_maintenances', 'maintenances.supplier_id', '=', 'suppliers_maintenances.id')
->orderBy('suppliers_maintenances.name', $order);
}
@@ -227,7 +227,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
public function scopeOrderByTag($query, $order)
{
- return $query->leftJoin('assets', '$maintenances.asset_id', '=', 'assets.id')
+ return $query->leftJoin('assets', 'maintenances.asset_id', '=', 'assets.id')
->orderBy('assets.asset_tag', $order);
}
@@ -241,7 +241,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
public function scopeOrderByAssetName($query, $order)
{
- return $query->leftJoin('assets', '$maintenances.asset_id', '=', 'assets.id')
+ return $query->leftJoin('assets', 'maintenances.asset_id', '=', 'assets.id')
->orderBy('assets.name', $order);
}
@@ -255,7 +255,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
public function scopeOrderByAssetSerial($query, $order)
{
- return $query->leftJoin('assets', '$maintenances.asset_id', '=', 'assets.id')
+ return $query->leftJoin('assets', 'maintenances.asset_id', '=', 'assets.id')
->orderBy('assets.serial', $order);
}
@@ -269,7 +269,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
public function scopeOrderStatusName($query, $order)
{
- return $query->join('assets as maintained_asset', '$maintenances.asset_id', '=', 'maintained_asset.id')
+ return $query->join('assets as maintained_asset', 'maintenances.asset_id', '=', 'maintained_asset.id')
->leftjoin('status_labels as maintained_asset_status', 'maintained_asset_status.id', '=', 'maintained_asset.status_id')
->orderBy('maintained_asset_status.name', $order);
}
@@ -284,7 +284,7 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
public function scopeOrderLocationName($query, $order)
{
- return $query->join('assets as maintained_asset', '$maintenances.asset_id', '=', 'maintained_asset.id')
+ return $query->join('assets as maintained_asset', 'maintenances.asset_id', '=', 'maintained_asset.id')
->leftjoin('locations as maintained_asset_location', 'maintained_asset_location.id', '=', 'maintained_asset.location_id')
->orderBy('maintained_asset_location.name', $order);
}
@@ -294,6 +294,6 @@ class Maintenance extends SnipeModel implements ICompanyableChild
*/
public function scopeOrderByCreatedBy($query, $order)
{
- return $query->leftJoin('users as admin_sort', '$maintenances.created_by', '=', 'admin_sort.id')->select('$maintenances.*')->orderBy('admin_sort.first_name', $order)->orderBy('admin_sort.last_name', $order);
+ return $query->leftJoin('users as admin_sort', 'maintenances.created_by', '=', 'admin_sort.id')->select('maintenances.*')->orderBy('admin_sort.first_name', $order)->orderBy('admin_sort.last_name', $order);
}
}
diff --git a/app/Presenters/MaintenancesPresenter.php b/app/Presenters/MaintenancesPresenter.php
index 71ab1fa458..41ff927f67 100644
--- a/app/Presenters/MaintenancesPresenter.php
+++ b/app/Presenters/MaintenancesPresenter.php
@@ -51,7 +51,7 @@ class MaintenancesPresenter extends Presenter
'field' => 'asset_name',
'searchable' => true,
'sortable' => true,
- 'title' => trans('admin/$maintenances/table.asset_name'),
+ 'title' => trans('admin/maintenances/table.asset_name'),
'formatter' => 'assetNameLinkFormatter',
], [
'field' => 'asset_tag',
@@ -98,35 +98,35 @@ class MaintenancesPresenter extends Presenter
'field' => 'asset_maintenance_type',
'searchable' => true,
'sortable' => true,
- 'title' => trans('admin/$maintenances/form.asset_maintenance_type'),
+ 'title' => trans('admin/maintenances/form.asset_maintenance_type'),
], [
'field' => 'start_date',
'searchable' => true,
'sortable' => true,
- 'title' => trans('admin/$maintenances/form.start_date'),
+ 'title' => trans('admin/maintenances/form.start_date'),
'formatter' => 'dateDisplayFormatter',
], [
'field' => 'completion_date',
'searchable' => true,
'sortable' => true,
- 'title' => trans('admin/$maintenances/form.completion_date'),
+ 'title' => trans('admin/maintenances/form.completion_date'),
'formatter' => 'dateDisplayFormatter',
], [
'field' => 'notes',
'searchable' => true,
'sortable' => true,
- 'title' => trans('admin/$maintenances/form.notes'),
+ 'title' => trans('admin/maintenances/form.notes'),
], [
'field' => 'is_warranty',
'searchable' => true,
'sortable' => true,
- 'title' => trans('admin/$maintenances/table.is_warranty'),
+ 'title' => trans('admin/maintenances/table.is_warranty'),
'formatter' => 'trueFalseFormatter'
], [
'field' => 'cost',
'searchable' => true,
'sortable' => true,
- 'title' => trans('admin/$maintenances/form.cost'),
+ 'title' => trans('admin/maintenances/form.cost'),
'class' => 'text-right',
], [
'field' => 'created_by',
diff --git a/app/Providers/BreadcrumbsServiceProvider.php b/app/Providers/BreadcrumbsServiceProvider.php
index f1b47280dd..b452e5c18f 100644
--- a/app/Providers/BreadcrumbsServiceProvider.php
+++ b/app/Providers/BreadcrumbsServiceProvider.php
@@ -415,12 +415,12 @@ class BreadcrumbsServiceProvider extends ServiceProvider
Breadcrumbs::for('maintenances.show', fn (Trail $trail, Maintenance $maintenance) =>
$trail->parent('maintenances.index', route('maintenances.index'))
- ->push($maintenance->title, route('maintenances.show', $maintenance))
+ ->push($maintenance->name, route('maintenances.show', $maintenance))
);
Breadcrumbs::for('maintenances.edit', fn (Trail $trail, Maintenance $maintenance) =>
$trail->parent('maintenances.index', route('maintenances.index'))
- ->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $maintenance->title]), route('maintenances.edit', $maintenance))
+ ->push(trans('general.breadcrumb_button_actions.edit_item', ['name' => $maintenance->name]), route('maintenances.edit', $maintenance))
);
diff --git a/app/Providers/SettingsServiceProvider.php b/app/Providers/SettingsServiceProvider.php
index a40366f81a..45e62ac4f9 100644
--- a/app/Providers/SettingsServiceProvider.php
+++ b/app/Providers/SettingsServiceProvider.php
@@ -65,7 +65,7 @@ class SettingsServiceProvider extends ServiceProvider
return 'assets/';
});
- app()->singleton('$maintenances_path', function () {
+ app()->singleton('maintenances_path', function () {
return 'maintenances/';
});
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index 5e26a9a257..6816df5804 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -53,7 +53,7 @@ class DatabaseSeeder extends Seeder
Model::reguard();
DB::table('imports')->truncate();
- DB::table('asset_maintenances')->truncate();
+ DB::table('maintenances')->truncate();
DB::table('requested_assets')->truncate();
}
}
diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php
index 8d696c1fc4..550c4b1fbf 100755
--- a/resources/views/hardware/view.blade.php
+++ b/resources/views/hardware/view.blade.php
@@ -143,7 +143,7 @@
{{ trans('general.maintenances') }}
- {!! ($asset->assetmaintenances()->count() > 0 ) ? ''.number_format($asset->assetmaintenances()->count()).'' : '' !!}
+ {!! ($asset->maintenances()->count() > 0 ) ? ''.number_format($asset->maintenances()->count()).'' : '' !!}
@@ -1327,16 +1327,16 @@
-
+
diff --git a/resources/views/layouts/default.blade.php b/resources/views/layouts/default.blade.php
index a35ab748fd..cc2a2b7b58 100644
--- a/resources/views/layouts/default.blade.php
+++ b/resources/views/layouts/default.blade.php
@@ -820,7 +820,7 @@ dir="{{ Helper::determineLanguageDirection() }}">
{{ trans('general.license_report') }}
-
is('reports/asset_maintenances') ? ' class="active"' : '') !!}}>
+ is('reports/maintenances') ? ' class="active"' : '') !!}}>
{{ trans('general.asset_maintenance_report') }}
diff --git a/resources/views/maintenances/edit.blade.php b/resources/views/maintenances/edit.blade.php
index 56c22fe2d1..38d290b4dc 100644
--- a/resources/views/maintenances/edit.blade.php
+++ b/resources/views/maintenances/edit.blade.php
@@ -43,16 +43,7 @@
-
-
+ @include ('partials.forms.edit.name', ['translated_name' => trans('general.name'), 'required' => 'true'])
@if (!$item->id)
diff --git a/tests/Feature/Maintenances/Api/CreateMaintenanceTest.php b/tests/Feature/Maintenances/Api/CreateMaintenanceTest.php
index 11fb93d0db..ecd08e01cc 100644
--- a/tests/Feature/Maintenances/Api/CreateMaintenanceTest.php
+++ b/tests/Feature/Maintenances/Api/CreateMaintenanceTest.php
@@ -48,12 +48,12 @@ class CreateMaintenanceTest extends TestCase
->assertStatus(200);
// Since we rename the file in the ImageUploadRequest, we have to fetch the record from the database
- $maintenance = Maintenance::where('title', 'Test Maintenance')->first();
+ $maintenance = Maintenance::where('name', 'Test Maintenance')->first();
// Assert file was stored...
Storage::disk('public')->assertExists(app('maintenances_path').$maintenance->image);
- $this->assertDatabaseHas('asset_maintenances', [
+ $this->assertDatabaseHas('maintenances', [
'asset_id' => $asset->id,
'supplier_id' => $supplier->id,
'asset_maintenance_type' => 'Maintenance',
diff --git a/tests/Feature/Maintenances/Api/EditMaintenanceTest.php b/tests/Feature/Maintenances/Api/EditMaintenanceTest.php
index d4ba8c3e0f..6edb47ba27 100644
--- a/tests/Feature/Maintenances/Api/EditMaintenanceTest.php
+++ b/tests/Feature/Maintenances/Api/EditMaintenanceTest.php
@@ -48,7 +48,7 @@ class EditMaintenanceTest extends TestCase
Storage::disk('public')->assertExists(app('maintenances_path').$maintenance->image);
- $this->assertDatabaseHas('asset_maintenances', [
+ $this->assertDatabaseHas('maintenances', [
'supplier_id' => $supplier->id,
'asset_maintenance_type' => 'Maintenance',
'name' => 'Test Maintenance',
diff --git a/tests/Feature/Maintenances/Ui/CreateMaintenanceTest.php b/tests/Feature/Maintenances/Ui/CreateMaintenanceTest.php
index 52ff3d34e6..ba35199a9e 100644
--- a/tests/Feature/Maintenances/Ui/CreateMaintenanceTest.php
+++ b/tests/Feature/Maintenances/Ui/CreateMaintenanceTest.php
@@ -12,6 +12,13 @@ use Tests\TestCase;
class CreateMaintenanceTest extends TestCase
{
+ public function testPageRequiresPermission()
+ {
+ $this->actingAs(User::factory()->create())
+ ->get(route('maintenances.create'))
+ ->assertForbidden();
+ }
+
public function testPageRenders()
{
$this->actingAs(User::factory()->superuser()->create())
@@ -24,12 +31,10 @@ class CreateMaintenanceTest extends TestCase
{
Storage::fake('public');
$actor = User::factory()->superuser()->create();
-
$asset = Asset::factory()->create();
$supplier = Supplier::factory()->create();
$this->actingAs($actor)
- ->followingRedirects()
->post(route('maintenances.store'), [
'name' => 'Test Maintenance',
'selected_assets' => [$asset->id],
@@ -42,7 +47,8 @@ class CreateMaintenanceTest extends TestCase
'image' => UploadedFile::fake()->image('test_image.png'),
'notes' => 'A note',
])
- ->assertOk();
+ ->assertSessionHasNoErrors()
+ ->assertRedirect(route('maintenances.index'));
// Since we rename the file in the ImageUploadRequest, we have to fetch the record from the database
$maintenance = Maintenance::where('name', 'Test Maintenance')->first();
@@ -51,7 +57,7 @@ class CreateMaintenanceTest extends TestCase
Storage::disk('public')->assertExists(app('maintenances_path').$maintenance->image);
- $this->assertDatabaseHas('asset_maintenances', [
+ $this->assertDatabaseHas('maintenances', [
'asset_id' => $asset->id,
'supplier_id' => $supplier->id,
'asset_maintenance_type' => 'Maintenance',
diff --git a/tests/Feature/Maintenances/Ui/EditMaintenanceTest.php b/tests/Feature/Maintenances/Ui/EditMaintenanceTest.php
index e5ebec889f..d2959fd781 100644
--- a/tests/Feature/Maintenances/Ui/EditMaintenanceTest.php
+++ b/tests/Feature/Maintenances/Ui/EditMaintenanceTest.php
@@ -40,7 +40,8 @@ class EditMaintenanceTest extends TestCase
'cost' => '100.99',
'notes' => 'A note',
])
- ->assertOk();
+ ->assertSessionHasNoErrors()
+ ->assertRedirect(route('maintenances.index'));
// Since we rename the file in the ImageUploadRequest, we have to fetch the record from the database
$maintenance = Maintenance::where('name', 'Test Maintenance')->first();
@@ -48,7 +49,7 @@ class EditMaintenanceTest extends TestCase
// Assert file was stored...
Storage::disk('public')->assertExists(app('maintenances_path').$maintenance->image);
- $this->assertDatabaseHas('asset_maintenances', [
+ $this->assertDatabaseHas('maintenances', [
'asset_id' => $asset->id,
'supplier_id' => $supplier->id,
'asset_maintenance_type' => 'Maintenance',