From 8a0b9bf776c640e9a00d1f99edac512236e4c866 Mon Sep 17 00:00:00 2001 From: Benjamin Sigonneau Date: Fri, 17 Apr 2020 11:30:44 +0200 Subject: [PATCH] Record paddock state changes --- app/Http/Controllers/PaddockController.php | 18 +++++++++- .../PaddockStateChangeController.php | 10 ++++++ app/Paddock.php | 8 +++++ app/PaddockStateChange.php | 16 +++++++++ ...156_create_paddock_state_changes_table.php | 34 +++++++++++++++++++ 5 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/PaddockStateChangeController.php create mode 100644 app/PaddockStateChange.php create mode 100644 database/migrations/2020_04_17_083156_create_paddock_state_changes_table.php diff --git a/app/Http/Controllers/PaddockController.php b/app/Http/Controllers/PaddockController.php index 3d19316..0272191 100644 --- a/app/Http/Controllers/PaddockController.php +++ b/app/Http/Controllers/PaddockController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Paddock; +use App\PaddockStateChange; use Redirect; class PaddockController extends Controller @@ -85,11 +86,26 @@ class PaddockController extends Controller 'name' => 'required', ]); + // Was there a state change? + $paddock = Paddock::find($id); + $state_changed = FALSE; + if ($paddock->isClosed && ($request->state === 'opened')) { + $state_changed = TRUE; + } else if (!$paddock->isClosed && ($request->state === 'closed')) { + $state_changed = TRUE; + } + + // Record the state change, if needs be + if ($state_changed) { + $change = new PaddockStateChange(['state' => $request->state]); + $paddock->state_changes()->save($change); + } + $update = [ 'name' => $request->name, 'isClosed' => $request->state !== 'opened', ]; - Paddock::where('id', $id)->update($update); + $paddock->update($update); return Redirect::to('paddocks') ->with('success', 'Enclos mis à jour.'); diff --git a/app/Http/Controllers/PaddockStateChangeController.php b/app/Http/Controllers/PaddockStateChangeController.php new file mode 100644 index 0000000..0bceb28 --- /dev/null +++ b/app/Http/Controllers/PaddockStateChangeController.php @@ -0,0 +1,10 @@ +hasMany('App\PaddockStateChange'); + } } diff --git a/app/PaddockStateChange.php b/app/PaddockStateChange.php new file mode 100644 index 0000000..104365e --- /dev/null +++ b/app/PaddockStateChange.php @@ -0,0 +1,16 @@ +belongsTo('App\Paddock'); + } +} diff --git a/database/migrations/2020_04_17_083156_create_paddock_state_changes_table.php b/database/migrations/2020_04_17_083156_create_paddock_state_changes_table.php new file mode 100644 index 0000000..b9725c9 --- /dev/null +++ b/database/migrations/2020_04_17_083156_create_paddock_state_changes_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('paddock_id')->unsigned(); + $table->foreign('paddock_id')->references('id')->on('paddocks'); + $table->string('state'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('paddock_state_changes'); + } +}