diff --git a/app/Http/Controllers/AssetMaintenancesController.php b/app/Http/Controllers/AssetMaintenancesController.php
index 0d18ae1e1b08..8ab710b03b9e 100644
--- a/app/Http/Controllers/AssetMaintenancesController.php
+++ b/app/Http/Controllers/AssetMaintenancesController.php
@@ -117,7 +117,7 @@ public function store(Request $request) : RedirectResponse
) {
$startDate = Carbon::parse($assetMaintenance->start_date);
$completionDate = Carbon::parse($assetMaintenance->completion_date);
- $assetMaintenance->asset_maintenance_time = $completionDate->diffInDays($startDate);
+ $assetMaintenance->asset_maintenance_time = (int) $completionDate->diffInDays($startDate, true);
}
// Was the asset maintenance created?
@@ -210,7 +210,7 @@ public function update(Request $request, AssetMaintenance $maintenance) : View |
) {
$startDate = Carbon::parse($maintenance->start_date);
$completionDate = Carbon::parse($maintenance->completion_date);
- $maintenance->asset_maintenance_time = $completionDate->diffInDays($startDate);
+ $maintenance->asset_maintenance_time = (int) $completionDate->diffInDays($startDate, true);
}
// Was the asset maintenance created?
diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php
index 6bd530a0e51c..9578acea6378 100755
--- a/app/Http/Controllers/Assets/AssetsController.php
+++ b/app/Http/Controllers/Assets/AssetsController.php
@@ -318,7 +318,7 @@ public function update(ImageUploadRequest $request, Asset $asset) : RedirectResp
$asset->eol_explicit = false;
} elseif ($request->filled('asset_eol_date')) {
$asset->asset_eol_date = $request->input('asset_eol_date', null);
- $months = Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date);
+ $months = (int) Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date, true);
if($asset->model->eol) {
if($months != $asset->model->eol > 0) {
$asset->eol_explicit = true;
diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php
index ae2896e6e89d..05cc2e7dfac4 100644
--- a/app/Http/Controllers/ReportsController.php
+++ b/app/Http/Controllers/ReportsController.php
@@ -1081,10 +1081,10 @@ public function exportAssetMaintenancesReport() : Response
$row[] = e($assetMaintenance->start_date);
$row[] = e($assetMaintenance->completion_date);
if (is_null($assetMaintenance->asset_maintenance_time)) {
- $improvementTime = intval(Carbon::now()
- ->diffInDays(Carbon::parse($assetMaintenance->start_date)));
+ $improvementTime = (int) Carbon::now()
+ ->diffInDays(Carbon::parse($assetMaintenance->start_date), true);
} else {
- $improvementTime = intval($assetMaintenance->asset_maintenance_time);
+ $improvementTime = (int) $assetMaintenance->asset_maintenance_time;
}
$row[] = $improvementTime;
$row[] = trans('general.currency') . Helper::formatCurrencyOutput($assetMaintenance->cost);
diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php
index 378fba28738d..b6579845469d 100644
--- a/app/Http/Transformers/AssetsTransformer.php
+++ b/app/Http/Transformers/AssetsTransformer.php
@@ -42,7 +42,7 @@ public function transformAsset(Asset $asset)
'requestable' => ($asset->requestable ? true : false),
'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null,
- 'eol' => (($asset->asset_eol_date != '') && ($asset->purchase_date != '')) ? Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date).' months' : null,
+ 'eol' => (($asset->asset_eol_date != '') && ($asset->purchase_date != '')) ? (int) Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date, true) . ' months' : null,
'asset_eol_date' => ($asset->asset_eol_date != '') ? Helper::getFormattedDateObject($asset->asset_eol_date, 'date') : null,
'status_label' => ($asset->assetstatus) ? [
'id' => (int) $asset->assetstatus->id,
diff --git a/app/Models/Actionlog.php b/app/Models/Actionlog.php
index a14910208ea7..3a8fcf1cb9f6 100755
--- a/app/Models/Actionlog.php
+++ b/app/Models/Actionlog.php
@@ -295,13 +295,13 @@ public function daysUntilNextAudit($monthInterval = 12, $asset = null)
$now = Carbon::now();
$last_audit_date = $this->created_at; // this is the action log's created at, not the asset itself
$next_audit = $last_audit_date->addMonth($monthInterval); // this actually *modifies* the $last_audit_date
- $next_audit_days = round($now->diffInDays($next_audit, true));
+ $next_audit_days = (int) round($now->diffInDays($next_audit, true));
$override_default_next = $next_audit;
// Override the default setting for interval if the asset has its own next audit date
if (($asset) && ($asset->next_audit_date)) {
$override_default_next = Carbon::parse($asset->next_audit_date);
- $next_audit_days = round($override_default_next->diffInDays($now, true));
+ $next_audit_days = (int) round($override_default_next->diffInDays($now, true));
}
// Show as negative number if the next audit date is before the audit date we're looking at
diff --git a/app/Observers/AssetObserver.php b/app/Observers/AssetObserver.php
index b44d098123b5..c807ac4d1d11 100644
--- a/app/Observers/AssetObserver.php
+++ b/app/Observers/AssetObserver.php
@@ -171,7 +171,7 @@ public function saving(Asset $asset)
// determine if explicit and set eol_explicit to true
if (!is_null($asset->asset_eol_date) && !is_null($asset->purchase_date)) {
if($asset->model->eol > 0) {
- $months = Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date);
+ $months = (int) Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date, true);
if($months != $asset->model->eol) {
$asset->eol_explicit = true;
}
diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php
index a59b0534b2a7..2bbc0b07c1de 100755
--- a/resources/views/hardware/view.blade.php
+++ b/resources/views/hardware/view.blade.php
@@ -957,7 +957,7 @@ class="form-inline"
- {{ Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date) }}
+ {{ (int) Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date, true) }}
{{ trans('admin/hardware/form.months') }}
diff --git a/resources/views/notifications/markdown/upcoming-audits.blade.php b/resources/views/notifications/markdown/upcoming-audits.blade.php
index e623941d2525..c6b9bf445b0d 100644
--- a/resources/views/notifications/markdown/upcoming-audits.blade.php
+++ b/resources/views/notifications/markdown/upcoming-audits.blade.php
@@ -9,7 +9,7 @@
@php
$next_audit_date = Helper::getFormattedDateObject($asset->next_audit_date, 'date', false);
$last_audit_date = Helper::getFormattedDateObject($asset->last_audit_date, 'date', false);
-$diff = Carbon::parse(Carbon::now())->diffInDays($asset->next_audit_date, false);
+$diff = (int) Carbon::parse(Carbon::now())->diffInDays($asset->next_audit_date, true);
$icon = ($diff <= 7) ? '🚨' : (($diff <= 14) ? '⚠️' : ' ');
@endphp
|{{ $icon }}| [{{ $asset->present()->name }}]({{ route('hardware.show', $asset->id) }}) | {{ $last_audit_date }}| {{ $next_audit_date }} | {{ $diff }} | {{ ($asset->supplier ? e($asset->supplier->name) : '') }}|{{ ($asset->assignedTo ? $asset->assignedTo->present()->name() : '') }}|{{ $asset->notes }}
diff --git a/tests/Feature/AssetMaintenances/Ui/CreateAssetMaintenanceTest.php b/tests/Feature/AssetMaintenances/Ui/CreateAssetMaintenanceTest.php
index 6bfa46ed9eb8..e50cd50a12a9 100644
--- a/tests/Feature/AssetMaintenances/Ui/CreateAssetMaintenanceTest.php
+++ b/tests/Feature/AssetMaintenances/Ui/CreateAssetMaintenanceTest.php
@@ -2,6 +2,8 @@
namespace Tests\Feature\AssetMaintenances\Ui;
+use App\Models\Asset;
+use App\Models\Supplier;
use App\Models\User;
use Tests\TestCase;
@@ -13,4 +15,41 @@ public function testPageRenders()
->get(route('maintenances.create'))
->assertOk();
}
+
+ public function testCanCreateAssetMaintenance()
+ {
+ $actor = User::factory()->superuser()->create();
+
+ $asset = Asset::factory()->create();
+ $supplier = Supplier::factory()->create();
+
+ $this->actingAs($actor)
+ ->followingRedirects()
+ ->post(route('maintenances.store'), [
+ 'title' => 'Test Maintenance',
+ 'asset_id' => $asset->id,
+ 'supplier_id' => $supplier->id,
+ 'asset_maintenance_type' => 'Maintenance',
+ 'start_date' => '2021-01-01',
+ 'completion_date' => '2021-01-10',
+ 'is_warranty' => '1',
+ 'cost' => '100.00',
+ 'notes' => 'A note',
+ ])
+ ->assertOk();
+
+ $this->assertDatabaseHas('asset_maintenances', [
+ 'asset_id' => $asset->id,
+ 'supplier_id' => $supplier->id,
+ 'asset_maintenance_type' => 'Maintenance',
+ 'title' => 'Test Maintenance',
+ 'is_warranty' => 1,
+ 'start_date' => '2021-01-01',
+ 'completion_date' => '2021-01-10',
+ 'asset_maintenance_time' => '9',
+ 'notes' => 'A note',
+ 'cost' => '100.00',
+ 'created_by' => $actor->id,
+ ]);
+ }
}
diff --git a/tests/Feature/AssetMaintenances/Ui/EditAssetMaintenanceTest.php b/tests/Feature/AssetMaintenances/Ui/EditAssetMaintenanceTest.php
index 0b3b68108580..0e0f5b81c355 100644
--- a/tests/Feature/AssetMaintenances/Ui/EditAssetMaintenanceTest.php
+++ b/tests/Feature/AssetMaintenances/Ui/EditAssetMaintenanceTest.php
@@ -2,7 +2,9 @@
namespace Tests\Feature\AssetMaintenances\Ui;
+use App\Models\Asset;
use App\Models\AssetMaintenance;
+use App\Models\Supplier;
use App\Models\User;
use Tests\TestCase;
@@ -14,4 +16,43 @@ public function testPageRenders()
->get(route('maintenances.edit', AssetMaintenance::factory()->create()->id))
->assertOk();
}
+
+ public function testCanUpdateAssetMaintenance()
+ {
+ $actor = User::factory()->superuser()->create();
+
+ $assetMaintenance = AssetMaintenance::factory()->create();
+
+ $asset = Asset::factory()->create();
+ $supplier = Supplier::factory()->create();
+
+ $this->actingAs($actor)
+ ->followingRedirects()
+ ->put(route('maintenances.update', $assetMaintenance->id), [
+ 'title' => 'Test Maintenance',
+ 'asset_id' => $asset->id,
+ 'supplier_id' => $supplier->id,
+ 'asset_maintenance_type' => 'Maintenance',
+ 'start_date' => '2021-01-01',
+ 'completion_date' => '2021-01-10',
+ 'is_warranty' => '1',
+ 'cost' => '100.00',
+ 'notes' => 'A note',
+ ])
+ ->assertOk();
+
+ $this->assertDatabaseHas('asset_maintenances', [
+ 'asset_id' => $asset->id,
+ 'supplier_id' => $supplier->id,
+ 'asset_maintenance_type' => 'Maintenance',
+ 'title' => 'Test Maintenance',
+ 'is_warranty' => 1,
+ 'start_date' => '2021-01-01',
+ 'completion_date' => '2021-01-10',
+ 'asset_maintenance_time' => '9',
+ 'notes' => 'A note',
+ 'cost' => '100.00',
+ ]);
+ }
+
}
diff --git a/tests/Feature/Assets/Ui/EditAssetTest.php b/tests/Feature/Assets/Ui/EditAssetTest.php
index 328067e89367..f443f6640008 100644
--- a/tests/Feature/Assets/Ui/EditAssetTest.php
+++ b/tests/Feature/Assets/Ui/EditAssetTest.php
@@ -98,7 +98,7 @@ public function testNewCheckinIsLoggedIfStatusChangedToUndeployable()
$this->assertEquals($achived_status->id, $asset->status_id);
Event::assertDispatched(function (CheckoutableCheckedIn $event) use ($currentTimestamp) {
- return Carbon::parse($event->action_date)->diffInSeconds($currentTimestamp) < 2;
+ return (int) Carbon::parse($event->action_date)->diffInSeconds($currentTimestamp, true) < 2;
}, 1);
}
diff --git a/tests/Feature/Checkins/Api/AssetCheckinTest.php b/tests/Feature/Checkins/Api/AssetCheckinTest.php
index 0e041fc73aa1..7ce3d05619ff 100644
--- a/tests/Feature/Checkins/Api/AssetCheckinTest.php
+++ b/tests/Feature/Checkins/Api/AssetCheckinTest.php
@@ -72,7 +72,7 @@ public function testAssetCanBeCheckedIn()
Event::assertDispatched(function (CheckoutableCheckedIn $event) use ($currentTimestamp) {
// this could be better mocked but is ok for now.
- return Carbon::parse($event->action_date)->diffInSeconds($currentTimestamp) < 2;
+ return (int) Carbon::parse($event->action_date)->diffInSeconds($currentTimestamp, true) < 2;
}, 1);
}
diff --git a/tests/Feature/Checkins/Ui/AssetCheckinTest.php b/tests/Feature/Checkins/Ui/AssetCheckinTest.php
index 9c7b371e2b39..4f1c62cf2ce3 100644
--- a/tests/Feature/Checkins/Ui/AssetCheckinTest.php
+++ b/tests/Feature/Checkins/Ui/AssetCheckinTest.php
@@ -86,7 +86,7 @@ public function testAssetCanBeCheckedIn()
Event::assertDispatched(function (CheckoutableCheckedIn $event) use ($currentTimestamp) {
// this could be better mocked but is ok for now.
- return Carbon::parse($event->action_date)->diffInSeconds($currentTimestamp) < 2;
+ return (int) Carbon::parse($event->action_date)->diffInSeconds($currentTimestamp, true) < 2;
}, 1);
}
diff --git a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php
index ded38896426f..0a62ef6e4487 100644
--- a/tests/Feature/Checkouts/Api/AssetCheckoutTest.php
+++ b/tests/Feature/Checkouts/Api/AssetCheckoutTest.php
@@ -209,6 +209,6 @@ public function testLastCheckoutUsesCurrentDateIfNotProvided()
$asset->refresh();
- $this->assertTrue(Carbon::parse($asset->last_checkout)->diffInSeconds(now()) < 2);
+ $this->assertTrue((int) Carbon::parse($asset->last_checkout)->diffInSeconds(now(), true) < 2);
}
}
diff --git a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php
index f364064a1d6d..00197917522e 100644
--- a/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php
+++ b/tests/Feature/Checkouts/Ui/AssetCheckoutTest.php
@@ -249,7 +249,7 @@ public function testLastCheckoutUsesCurrentDateIfNotProvided()
$asset->refresh();
- $this->assertTrue(Carbon::parse($asset->last_checkout)->diffInSeconds(now()) < 2);
+ $this->assertTrue((int) Carbon::parse($asset->last_checkout)->diffInSeconds(now(), true) < 2);
}
public function testAssetCheckoutPageIsRedirectedIfModelIsInvalid()