Migration to normalize eol date for assets

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2023-01-22 00:54:24 -08:00
parent abad579306
commit 2f7ca37666

View file

@ -0,0 +1,54 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use App\Models\Asset;
use App\Models\AssetModel;
class AddEolDateOnAssetsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('assets', function (Blueprint $table) {
if (!Schema::hasColumn('assets', 'asset_eol_date')) {
$table->date('asset_eol_date')->after('purchase_date')->nullable()->default(null);
}
});
// Chunk the model query to get the models that do have an EOL date
AssetModel::whereNotNull('eol')->with('assets')->chunk(200, function ($models) {
foreach ($models as $model) {
foreach ($model->assets as $asset) {
if ($asset->purchase_date!='') {
$asset->asset_eol_date = $asset->present()->eol_date();
$asset->save();
}
}
}
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('assets', function (Blueprint $table) {
if (Schema::hasColumn('assets', 'asset_eol_date')) {
$table->dropColumn('asset_eol_date');
}
});
}
}