From 63d1292bf80d88be40eec7695c1a59f29e6609c5 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Mon, 24 Sep 2018 14:19:13 +0200 Subject: Added EventConfig model --- ...2018_09_24_000000_create_event_config_table.php | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 db/migrations/2018_09_24_000000_create_event_config_table.php (limited to 'db') diff --git a/db/migrations/2018_09_24_000000_create_event_config_table.php b/db/migrations/2018_09_24_000000_create_event_config_table.php new file mode 100644 index 00000000..18298100 --- /dev/null +++ b/db/migrations/2018_09_24_000000_create_event_config_table.php @@ -0,0 +1,101 @@ + 'buildup_start', + 'event_start_date' => 'event_start', + 'event_end_date' => 'event_end', + 'teardown_end_date' => 'teardown_end', + ]; + + /** + * Run the migration + */ + public function up() + { + $this->schema->create('event_config', function (Blueprint $table) { + $table->string('name')->index()->unique(); + $table->json('value'); + $table->timestamps(); + }); + + if ($this->schema->hasTable('EventConfig')) { + $config = $this->schema->getConnection() + ->table('EventConfig') + ->first(); + + if (!empty($config)) { + (new EventConfig([ + 'name' => 'name', + 'value' => $config->event_name, + ]))->save(); + + (new EventConfig([ + 'name' => 'welcome_msg', + 'value' => $config->event_welcome_msg, + ]))->save(); + + foreach ($this->mapping as $old => $new) { + (new EventConfig([ + 'name' => $new, + 'value' => (new Carbon())->setTimestamp($config->{$old}), + ]))->save(); + } + } + + $this->schema->drop('EventConfig'); + } + } + + /** + * Reverse the migration + */ + public function down() + { + $this->schema->create('EventConfig', function (Blueprint $table) { + $table->string('event_name')->nullable(); + $table->integer('buildup_start_date')->nullable(); + $table->integer('event_start_date')->nullable(); + $table->integer('event_end_date')->nullable(); + $table->integer('teardown_end_date')->nullable(); + $table->string('event_welcome_msg')->nullable(); + }); + + $config = new EventConfig(); + $data = [ + 'event_name' => $config->findOrNew('name')->value, + 'event_welcome_msg' => $config->findOrNew('welcome_msg')->value, + ]; + foreach ($this->mapping as $new => $old) { + /** @var Carbon $value */ + $value = $config->findOrNew($old)->value; + + if (!$value) { + continue; + } + + $data[$new] = $value->getTimestamp(); + } + + $dataNotEmpty = false; + foreach ($data as $value) { + $dataNotEmpty |= !empty($value); + } + + if ($dataNotEmpty) { + $this->schema->getConnection() + ->table('EventConfig') + ->insert($data); + } + + $this->schema->dropIfExists('event_config'); + } +} -- cgit v1.2.3-54-g00ecf