diff --git a/app/Jobs/ScheduleNextMaintenance.php b/app/Jobs/ScheduleNextMaintenance.php
index 24e896e..c87b326 100644
--- a/app/Jobs/ScheduleNextMaintenance.php
+++ b/app/Jobs/ScheduleNextMaintenance.php
@@ -4,6 +4,7 @@ namespace App\Jobs;
use App\Models\Maintenance;
use App\Models\MaintenanceHistory;
+use App\Models\MaintenanceTaskHistory;
use Cron\CronExpression;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
@@ -41,17 +42,21 @@ class ScheduleNextMaintenance implements ShouldQueue
'start_at' => $cron->getNextRunDate(null, 2)
]);
$maintenancePlanned->refresh();
-
- $tasks = $maintenancePlanned->tasks;
- if(!empty($tasks)){
- dd($tasks);
+
+ $hosts = $maintenance->hosts;
+ foreach ($hosts as $key => $host) {
+ $maintenancePlannedHost = $maintenancePlanned->historyHosts()->create([
+ 'host_id' => $host->id
+ ]);
+
+ $tasks = $maintenance->tasks;
foreach ($tasks as $key => $task) {
- $maintenancePlanned->tasks()->create([
- 'host_id' => $task->host_id,
+ $maintenancePlannedHost->historyTasks()->create([
+ 'maintenance_task_id' => $task->id,
+ 'maintenance_history_id' => $maintenancePlanned->id
]);
}
}
-
}
die();
}
diff --git a/app/Livewire/Maintenance/Form.php b/app/Livewire/Maintenance/Form.php
index 98b2bde..2fa945b 100644
--- a/app/Livewire/Maintenance/Form.php
+++ b/app/Livewire/Maintenance/Form.php
@@ -6,7 +6,7 @@ use App\Models\Host;
use Livewire\Component;
use App\Models\Maintenance;
use App\Models\MaintenanceTask;
-use Illuminate\Console\View\Components\Task;
+use App\Models\Task;
class Form extends Component
{
@@ -35,7 +35,7 @@ class Form extends Component
public function mount($model = null)
{
$this->hosts_available = Host::all()->pluck('hostname', 'id')->toArray();
- $this->hosts_tasks_available = MaintenanceTask::all()->pluck('name', 'id')->toArray();
+ $this->hosts_tasks_available = Task::all()->pluck('name', 'id')->toArray();
if (!empty($model)) {
$maintenance = Maintenance::find($model);
@@ -48,7 +48,7 @@ class Form extends Component
$this->hosts = $maintenance->hosts()->pluck('hosts.id')->toArray();
foreach ($maintenance->tasks as $task) {
- $this->hosts_tasks_available[$task->host_id][] = $task->id;
+ $this->hosts_tasks[$task->host_id][] = $task->task_id;
}
$this->action = 'update';
@@ -71,7 +71,7 @@ class Form extends Component
$validatedData = $this->validate();
$maintenance = Maintenance::find($this->model);
$maintenance->hosts()->whereNotIn('host_id', $this->hosts)->delete();
-
+
if (!empty($maintenance)) {
$maintenance->update($validatedData);
$hosts = Host::whereIn('id', $this->hosts)->whereNotIn('id', $maintenance->hosts()->pluck('hosts.id')->toArray())->get();
@@ -79,10 +79,14 @@ class Form extends Component
$maintenance->hosts()->attach($host);
}
$maintenance->refresh();
+
foreach ($maintenance->hosts as $host) {
- foreach ($this->hosts_tasks[$host->id] as $task_id => $host_task_name) {
- $host->tasks()->create([
- 'task_id' => $task_id
+ $alreadyUsedHosts = $maintenance->tasks()->where('host_id', $host->id)->distinct('maintenance_tasks.task_id')->pluck('maintenance_tasks.task_id')->toArray();
+ $tasks = Task::whereIn('id', $this->hosts_tasks[$host->id])->whereNotIn('id', $alreadyUsedHosts)->get();
+ foreach ($tasks as $key => $task) {
+ $maintenance->tasks()->create([
+ 'task_id' => $task->id,
+ 'host_id' => $host->id,
]);
}
}
diff --git a/app/Livewire/MaintenanceTask/DataTable.php b/app/Livewire/Task/DataTable.php
similarity index 65%
rename from app/Livewire/MaintenanceTask/DataTable.php
rename to app/Livewire/Task/DataTable.php
index 0c247b8..88b52af 100644
--- a/app/Livewire/MaintenanceTask/DataTable.php
+++ b/app/Livewire/Task/DataTable.php
@@ -1,20 +1,20 @@
'$refresh',
+ 'taskAdded' => '$refresh',
'closeModal' => '$refresh',
];
public function query(): Builder
{
- return MaintenanceTask::query();
+ return Task::query();
}
public function headers(): array
@@ -25,8 +25,8 @@ class DataTable extends DataTableComponent
];
}
- public function remove($maintenancetask_id){
- MaintenanceTask::find($maintenancetask_id)->delete();
+ public function remove($task_id){
+ Task::find($task_id)->delete();
}
public function actions($item)
@@ -47,8 +47,8 @@ class DataTable extends DataTableComponent
];
}
- public function edit($maintenancetask_id)
+ public function edit($task_id)
{
- $this->dispatch('openModal', 'maintenance-task.form', __('boilerplate::maintenance-task.edit'), ['model' => $maintenancetask_id]);
+ $this->dispatch('openModal', 'task.form', __('boilerplate::task.edit'), ['model' => $task_id]);
}
}
diff --git a/app/Livewire/MaintenanceTask/Form.php b/app/Livewire/Task/Form.php
similarity index 54%
rename from app/Livewire/MaintenanceTask/Form.php
rename to app/Livewire/Task/Form.php
index 35a08b4..88f9be0 100644
--- a/app/Livewire/MaintenanceTask/Form.php
+++ b/app/Livewire/Task/Form.php
@@ -1,13 +1,12 @@
'required',
'name' => 'required',
'description' => 'required',
];
@@ -24,13 +22,12 @@ class Form extends Component
public function mount ($model = null){
if (!empty($model)) {
- $maintenanceTask = MaintenanceTask::find($model);
+ $task = Task::find($model);
$this->model = $model;
- $this->maintenance_id = $maintenanceTask->maintenance_id;
- $this->name = $maintenanceTask->name;
- $this->description = $maintenanceTask->description;
+ $this->name = $task->name;
+ $this->description = $task->description;
$this->action = 'update';
}
@@ -39,22 +36,22 @@ class Form extends Component
public function store()
{
$validatedData = $this->validate();
- MaintenanceTask::create($validatedData);
+ Task::create($validatedData);
$this->dispatch('closeModal');
}
public function update()
{
$validatedData = $this->validate();
- $maintenanceTask = MaintenanceTask::find($this->model);
- if (!empty($maintenanceTask)) {
- $maintenanceTask->update($validatedData);
+ $task = Task::find($this->model);
+ if (!empty($task)) {
+ $task->update($validatedData);
}
$this->dispatch('closeModal');
}
public function render()
{
- return view('livewire.maintenance-task.form');
+ return view('livewire.task.form');
}
}
diff --git a/app/Models/Maintenance.php b/app/Models/Maintenance.php
index 393986b..57abc06 100644
--- a/app/Models/Maintenance.php
+++ b/app/Models/Maintenance.php
@@ -15,16 +15,16 @@ class Maintenance extends Model
'schedule',
];
- public function history()
- {
- return $this->hasMany(MaintenanceHistory::class);
- }
-
public function hosts()
{
return $this->belongsToMany(Host::class, "maintenance_host", "maintenance_id", "host_id" );
}
+ public function history()
+ {
+ return $this->hasMany(MaintenanceHistory::class);
+ }
+
public function tasks()
{
return $this->hasMany(MaintenanceTask::class,);
diff --git a/app/Models/MaintenanceHistory.php b/app/Models/MaintenanceHistory.php
index d956f08..ddd1a56 100644
--- a/app/Models/MaintenanceHistory.php
+++ b/app/Models/MaintenanceHistory.php
@@ -19,4 +19,9 @@ class MaintenanceHistory extends Model
{
return $this->BelongsTo(Maintenance::class);
}
+
+ public function historyHosts()
+ {
+ return $this->hasMany(MaintenanceHostHistory::class);
+ }
}
diff --git a/app/Models/MaintenanceHostHistory.php b/app/Models/MaintenanceHostHistory.php
index b8756ba..60e994a 100644
--- a/app/Models/MaintenanceHostHistory.php
+++ b/app/Models/MaintenanceHostHistory.php
@@ -9,12 +9,17 @@ class MaintenanceHostHistory extends Model
{
use HasFactory;
- public function hosts()
+ protected $fillable = [
+ 'maintenance_history_id',
+ 'host_id',
+ ];
+
+ public function host()
{
- return $this->belongsToMany(MaintenanceHostHistory::class);
+ return $this->belongsTo(Host::class);
}
- public function tasks()
+ public function historyTasks()
{
return $this->hasMany(MaintenanceTaskHistory::class);
}
diff --git a/app/Models/MaintenanceTask.php b/app/Models/MaintenanceTask.php
index 64b66e7..5f7d556 100644
--- a/app/Models/MaintenanceTask.php
+++ b/app/Models/MaintenanceTask.php
@@ -12,7 +12,12 @@ class MaintenanceTask extends Model
protected $fillable = [
'maintenance_id',
'host_id',
- 'name',
- 'description',
+ 'task_id',
];
+
+
+ public function task()
+ {
+ return $this->belongsTo(Task::class);
+ }
}
diff --git a/app/Models/MaintenanceTaskHistory.php b/app/Models/MaintenanceTaskHistory.php
index 8bcd6aa..9ff909f 100644
--- a/app/Models/MaintenanceTaskHistory.php
+++ b/app/Models/MaintenanceTaskHistory.php
@@ -8,9 +8,20 @@ use Illuminate\Database\Eloquent\Model;
class MaintenanceTaskHistory extends Model
{
use HasFactory;
+
+ protected $fillable = [
+ 'maintenance_task_id',
+ 'maintenance_history_id',
+ 'maintenance_host_history_id',
+ ];
- public function task()
+ public function maintenance()
{
- return $this->BelongsTo(MaintenanceTask::class);
+ return $this->BelongsTo(MaintenanceHistory::class);
+ }
+
+ public function maintenanceTask()
+ {
+ return $this->belongsTo(MaintenanceTask::class);
}
}
diff --git a/app/Models/Task.php b/app/Models/Task.php
index 5458207..576ac5e 100644
--- a/app/Models/Task.php
+++ b/app/Models/Task.php
@@ -8,4 +8,9 @@ use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
use HasFactory;
+
+ protected $fillable = [
+ 'name',
+ 'description',
+ ];
}
diff --git a/database/migrations/2024_07_30_083526_create_maintenance_tasks_table.php b/database/migrations/2024_07_30_083526_create_maintenance_tasks_table.php
index da07d79..2f13a32 100644
--- a/database/migrations/2024_07_30_083526_create_maintenance_tasks_table.php
+++ b/database/migrations/2024_07_30_083526_create_maintenance_tasks_table.php
@@ -18,6 +18,7 @@ return new class extends Migration
$table->id();
$table->foreignIdFor(Maintenance::class);
$table->foreignIdFor(Task::class);
+ $table->foreignIdFor(Host::class);
$table->timestamps();
});
}
diff --git a/database/migrations/2024_07_30_083546_create_maintenance_task_histories_table.php b/database/migrations/2024_07_30_083546_create_maintenance_task_histories_table.php
index b1f19f7..a4b0fd8 100644
--- a/database/migrations/2024_07_30_083546_create_maintenance_task_histories_table.php
+++ b/database/migrations/2024_07_30_083546_create_maintenance_task_histories_table.php
@@ -2,6 +2,7 @@
use App\Models\Host;
use App\Models\MaintenanceHistory;
+use App\Models\MaintenanceHostHistory;
use App\Models\MaintenanceTask;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
@@ -18,7 +19,7 @@ return new class extends Migration
$table->id();
$table->foreignIdFor(MaintenanceTask::class);
$table->foreignIdFor(MaintenanceHistory::class);
- $table->foreignIdFor(Host::class);
+ $table->foreignIdFor(MaintenanceHostHistory::class);
$table->string('status')->default(1);
$table->datetime('finished_at')->nullable();
$table->timestamps();
diff --git a/database/migrations/2024_07_30_083607_create_maintenance_host_histories_table.php b/database/migrations/2024_07_30_083607_create_maintenance_host_histories_table.php
index 3f80778..dd8bcf2 100644
--- a/database/migrations/2024_07_30_083607_create_maintenance_host_histories_table.php
+++ b/database/migrations/2024_07_30_083607_create_maintenance_host_histories_table.php
@@ -2,6 +2,8 @@
use App\Models\Host;
use App\Models\Maintenance;
+use App\Models\MaintenanceHistory;
+use App\Models\MaintenanceHostHistory;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -15,7 +17,7 @@ return new class extends Migration
{
Schema::create('maintenance_host_histories', function (Blueprint $table) {
$table->id();
- $table->foreignIdFor(Maintenance::class);
+ $table->foreignIdFor(MaintenanceHistory::class);
$table->foreignIdFor(Host::class);
$table->timestamps();
});
diff --git a/resources/views/livewire/maintenance/form.blade.php b/resources/views/livewire/maintenance/form.blade.php
index f9e4fd8..e673b14 100644
--- a/resources/views/livewire/maintenance/form.blade.php
+++ b/resources/views/livewire/maintenance/form.blade.php
@@ -5,7 +5,7 @@
{!! $maintenance_history->maintenance->description !!}
- @foreach ($maintenance_history->maintenance->hosts as $host) -{!! $maintenance_history->maintenance->description !!}
+ @foreach ($maintenance_history->historyHosts as $historyHost) +