Record paddock state changes

This commit is contained in:
2020-04-17 11:30:44 +02:00
parent b71678bf3b
commit 8a0b9bf776
5 changed files with 85 additions and 1 deletions

View File

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Paddock; use App\Paddock;
use App\PaddockStateChange;
use Redirect; use Redirect;
class PaddockController extends Controller class PaddockController extends Controller
@@ -85,11 +86,26 @@ class PaddockController extends Controller
'name' => 'required', '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 = [ $update = [
'name' => $request->name, 'name' => $request->name,
'isClosed' => $request->state !== 'opened', 'isClosed' => $request->state !== 'opened',
]; ];
Paddock::where('id', $id)->update($update); $paddock->update($update);
return Redirect::to('paddocks') return Redirect::to('paddocks')
->with('success', 'Enclos mis à jour.'); ->with('success', 'Enclos mis à jour.');

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PaddockStateChangeController extends Controller
{
//
}

View File

@@ -15,4 +15,12 @@ class Paddock extends Model
'name', 'name',
'isClosed', 'isClosed',
]; ];
/**
* Get the state changes for a paddock
*/
public function state_changes() {
return $this->hasMany('App\PaddockStateChange');
}
} }

View File

@@ -0,0 +1,16 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class PaddockStateChange extends Model
{
protected $fillable = [
'state',
];
public function paddock() {
return $this->belongsTo('App\Paddock');
}
}

View File

@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreatePaddockStateChangesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('paddock_state_changes', function (Blueprint $table) {
$table->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');
}
}