<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20241119080313 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add the free payment method';
}
public function up(Schema $schema): void
{
$this->addSql("INSERT INTO `gateway_config` (`id`, `config`) VALUES (null, '[]')");
$this->addSql('INSERT INTO `payment_method_config` (`id`, `gateway_config_id`, `code`, `name`, `enabled`, `type`, `created_at`, `updated_at`) (SELECT NULL, (SELECT MAX(id) FROM gateway_config), "free", "Product offer", "1", "offline", NOW(), NOW())');
$this->addSql("INSERT INTO `gateway_config` (`id`, `config`) VALUES (null, '[]')");
$this->addSql(
"INSERT INTO `payment_method`(`id`, `shop_id`, `payemnt_menthod_config_id`, `gateway_config_id`, `position`, `enabled`, `created_at`, `updated_at`, `deleted`, `deleted_at`, `kiosk_only`, `anonymous_authorized`)
VALUES (null, null, (SELECT MAX(id) FROM payment_method_config), (SELECT MAX(id) FROM gateway_config), 0, 1, NOW(), NOW(), 0, null, 0, 0)"
);
}
public function down(Schema $schema): void
{
$freePaymentMethodConfig = $this->connection->fetchAllAssociative('SELECT id, gateway_config_id FROM payment_method_config pmc WHERE pmc.code = "free"')[0];
$paymentMethod = $this->connection->fetchAllAssociative("SELECT * FROM payment_method pm WHERE pm.payemnt_menthod_config_id = {$freePaymentMethodConfig['id']}")[0];
$this->addSql("DELETE FROM `payment_method` WHERE id = {$paymentMethod['id']}");
$this->addSql('DELETE FROM `payment_method_config` WHERE code = "free"');
$this->addSql("DELETE FROM `gateway_config` WHERE id = {$freePaymentMethodConfig['gateway_config_id']} OR id = {$paymentMethod['gateway_config_id']}");
}
}