diff --git a/app/Http/Middleware/GenerateMenus.php b/app/Http/Middleware/GenerateMenus.php index 9105858..2c5b6ea 100644 --- a/app/Http/Middleware/GenerateMenus.php +++ b/app/Http/Middleware/GenerateMenus.php @@ -46,7 +46,7 @@ class GenerateMenus $systemRoutes = [ 'Host' => [' fas fa-server', 'host'], 'Maintenance' => [' fas fa-calendar', 'maintenance'], - 'Tasks' => [' fas fa-calendar', 'tasks'], + 'Tasks' => [' fas fa-list', 'tasks'], ]; foreach ($systemRoutes as $title => $route_data) { diff --git a/app/Jobs/ScheduleNextMaintenance.php b/app/Jobs/ScheduleNextMaintenance.php index c87b326..12700c1 100644 --- a/app/Jobs/ScheduleNextMaintenance.php +++ b/app/Jobs/ScheduleNextMaintenance.php @@ -5,12 +5,14 @@ namespace App\Jobs; use App\Models\Maintenance; use App\Models\MaintenanceHistory; use App\Models\MaintenanceTaskHistory; +use Carbon\Carbon; use Cron\CronExpression; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Queue\Queueable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Poliander\Cron\CronExpression as CronCronExpression; class ScheduleNextMaintenance implements ShouldQueue { @@ -31,15 +33,9 @@ class ScheduleNextMaintenance implements ShouldQueue { $maintenances = Maintenance::all(); foreach ($maintenances as $maintenance) { - $valid = CronExpression::isValidExpression($maintenance->schedule); - if (!$valid) { - dd($maintenance->schedule); - return; - } - - $cron = new CronExpression($maintenance->schedule); + $cron = new CronCronExpression($maintenance->schedule); $maintenancePlanned = $maintenance->history()->create([ - 'start_at' => $cron->getNextRunDate(null, 2) + 'start_at' => Carbon::createFromTimestamp($cron->getNext()), ]); $maintenancePlanned->refresh(); @@ -58,6 +54,5 @@ class ScheduleNextMaintenance implements ShouldQueue } } } - die(); } } diff --git a/app/Livewire/MaintenanceHistory/DataTable.php b/app/Livewire/MaintenanceHistory/DataTable.php index e10ca5d..b9d3ee4 100644 --- a/app/Livewire/MaintenanceHistory/DataTable.php +++ b/app/Livewire/MaintenanceHistory/DataTable.php @@ -37,4 +37,16 @@ class DataTable extends DataTableComponent $ret = '' . e($val) . ''; return $ret; } + + public function actions($item) + { + return [ + [ + 'type' => "livewire", + 'action' => "remove", + 'text' => "remove", + 'parameters' => $item['id'] + ] + ]; + } } diff --git a/composer.json b/composer.json index 179e747..84d5707 100644 --- a/composer.json +++ b/composer.json @@ -6,10 +6,10 @@ "license": "MIT", "require": { "php": "^8.2", - "dragonmantank/cron-expression": "^3.3", "laravel/framework": "^11.9", "laravel/sanctum": "^4.0", "laravel/tinker": "^2.9", + "poliander/cron": "^3.1", "steelants/laravel-boilerplate": "^1.2" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 583b047..3216cef 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "07da4413e8866ce0abc6ed9d0e274725", + "content-hash": "3e780887adb9744dd78e2b2908185416", "packages": [ { "name": "brick/math", @@ -2532,6 +2532,50 @@ ], "time": "2024-07-20T21:41:07+00:00" }, + { + "name": "poliander/cron", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/poliander/cron.git", + "reference": "9e037c06aab233787999dfba38f1a12d100510c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/poliander/cron/zipball/9e037c06aab233787999dfba38f1a12d100510c1", + "reference": "9e037c06aab233787999dfba38f1a12d100510c1", + "shasum": "" + }, + "require": { + "php": "8.1.* || 8.2.* || 8.3.*" + }, + "require-dev": { + "phpunit/phpunit": "~10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Poliander\\Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0-or-later" + ], + "authors": [ + { + "name": "René Pollesch", + "role": "Developer" + } + ], + "description": "Standard (V7) compliant crontab expression parser/validator with support for time zones", + "homepage": "https://github.com/poliander/cron", + "support": { + "issues": "https://github.com/poliander/cron/issues", + "source": "https://github.com/poliander/cron/tree/3.1.0" + }, + "time": "2023-11-23T21:56:03+00:00" + }, { "name": "psr/clock", "version": "1.0.0",