<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20230117104957 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add a new field called rank used for sort references tables like reference_candidate_status,
reference_collaborator_state, reference_mandate_status, reference_person_marital_status,
reference_property_status and reference_transaction_status.';
}
public function up(Schema $schema): void
{
// update reference_candidate_status table
$this->addSql('ALTER TABLE reference_candidate_status ADD rank INT DEFAULT NULL');
$this->addSql("UPDATE reference_candidate_status SET rank = 1 WHERE name = 'reference.candidate.status.IN_PROGRESS'");
$this->addSql("UPDATE reference_candidate_status SET rank = 2 WHERE name = 'reference.candidate.status.ACCEPTED'");
$this->addSql("UPDATE reference_candidate_status SET rank = 3 WHERE name = 'reference.candidate.status.REFUSED'");
// update reference_collaborator_state table
$this->addSql('ALTER TABLE reference_collaborator_state ADD rank INT DEFAULT NULL');
$this->addSql("UPDATE reference_collaborator_state SET rank = 1 WHERE name = 'reference.collaborator.state.ACTIVE'");
$this->addSql("UPDATE reference_collaborator_state SET rank = 2 WHERE name = 'reference.collaborator.state.SUSPENDED'");
$this->addSql("UPDATE reference_collaborator_state SET rank = 3 WHERE name = 'reference.collaborator.state.DISABLED'");
$this->addSql("UPDATE reference_collaborator_state SET rank = 4 WHERE name = 'reference.collaborator.state.ARCHIVED'");
// update reference_mandate_status table
$this->addSql('ALTER TABLE reference_mandate_status ADD rank INT DEFAULT NULL');
$this->addSql("UPDATE reference_mandate_status SET rank = 1 WHERE name = 'reference.mandate.status.IN_PROGRESS'");
$this->addSql("UPDATE reference_mandate_status SET rank = 2 WHERE name = 'reference.mandate.status.VALID'");
$this->addSql("UPDATE reference_mandate_status SET rank = 3 WHERE name = 'reference.mandate.status.RESERVED'");
$this->addSql("UPDATE reference_mandate_status SET rank = 4 WHERE name = 'reference.mandate.status.UNDER_COMPROMISE'");
$this->addSql("UPDATE reference_mandate_status SET rank = 5 WHERE name = 'reference.mandate.status.SOLD_BY_MILKIYA'");
$this->addSql("UPDATE reference_mandate_status SET rank = 6 WHERE name = 'reference.mandate.status.SOLD_BY_COMPETITION'");
$this->addSql("UPDATE reference_mandate_status SET rank = 7 WHERE name = 'reference.mandate.status.SOLD_BY_THE_OWNER'");
$this->addSql("UPDATE reference_mandate_status SET rank = 8 WHERE name = 'reference.mandate.status.REFUSE'");
$this->addSql("UPDATE reference_mandate_status SET rank = 9 WHERE name = 'reference.mandate.status.ARCHIVED'");
// update reference_person_marital_status table
$this->addSql('ALTER TABLE reference_person_marital_status ADD rank INT DEFAULT NULL');
$this->addSql("UPDATE reference_person_marital_status SET rank = 1 WHERE name = 'reference.collaborator.marital.SINGLE'");
$this->addSql("UPDATE reference_person_marital_status SET rank = 2 WHERE name = 'reference.collaborator.marital.MARRIED'");
$this->addSql("UPDATE reference_person_marital_status SET rank = 3 WHERE name = 'reference.collaborator.marital.WINDOWED'");
$this->addSql("UPDATE reference_person_marital_status SET rank = 4 WHERE name = 'reference.collaborator.marital.SEPARATED'");
$this->addSql("UPDATE reference_person_marital_status SET rank = 5 WHERE name = 'reference.collaborator.marital.DIVORCED'");
// update reference_property_status table (rank field already existed)
$this->addSql("UPDATE reference_property_status SET rank = 1 WHERE name = 'reference.property.status.INVALIDE'");
$this->addSql("UPDATE reference_property_status SET rank = 2 WHERE name = 'reference.property.status.PENDING'");
$this->addSql("UPDATE reference_property_status SET rank = 3 WHERE name = 'reference.property.status.IN_PROGRESS'");
$this->addSql("UPDATE reference_property_status SET rank = 4 WHERE name = 'reference.property.status.UNDER_COMPROMISE'");
$this->addSql("UPDATE reference_property_status SET rank = 5 WHERE name = 'reference.property.status.SOLD_BY_MILKIYA'");
$this->addSql("UPDATE reference_property_status SET rank = 6 WHERE name = 'reference.property.status.SOLD_BY_COMPETITION'");
$this->addSql("UPDATE reference_property_status SET rank = 7 WHERE name = 'reference.property.status.RENTED_BY_MILKIYA'");
$this->addSql("UPDATE reference_property_status SET rank = 8 WHERE name = 'reference.property.status.RESERVED'");
$this->addSql("UPDATE reference_property_status SET rank = 9 WHERE name = 'reference.property.status.ARCHIVED'");
// Update reference_transaction_status table
$this->addSql('ALTER TABLE reference_transaction_status ADD rank INT DEFAULT NULL');
$this->addSql("UPDATE reference_transaction_status SET rank = 1 WHERE name = 'reference.transaction.status.UNDER_COMPROMISE'");
$this->addSql("UPDATE reference_transaction_status SET rank = 2 WHERE name = 'reference.transaction.status.UNDER_COMPROMISE_VALID'");
$this->addSql("UPDATE reference_transaction_status SET rank = 3 WHERE name = 'reference.transaction.status.ACTED'");
$this->addSql("UPDATE reference_transaction_status SET rank = 4 WHERE name = 'reference.transaction.status.VERSED'");
$this->addSql("UPDATE reference_transaction_status SET rank = 5 WHERE name = 'reference.transaction.status.PAID'");
$this->addSql("UPDATE reference_transaction_status SET rank = 6 WHERE name = 'reference.transaction.status.CANCELLED'");
$this->addSql("UPDATE reference_transaction_status SET rank = 7 WHERE name = 'reference.transaction.status.REFUSED'");
$this->addSql("UPDATE reference_transaction_status SET rank = 8 WHERE name = 'reference.transaction.status.BAILPENDING'");
$this->addSql("UPDATE reference_transaction_status SET rank = 9 WHERE name = 'reference.transaction.status.BAILSIGNED'");
}
public function down(Schema $schema): void
{
$this->addSql('ALTER TABLE reference_candidate_status DROP rank');
$this->addSql('ALTER TABLE reference_collaborator_state DROP rank');
$this->addSql('ALTER TABLE reference_mandate_status DROP rank');
$this->addSql('ALTER TABLE reference_person_marital_status DROP rank');
$this->addSql('ALTER TABLE reference_transaction_status DROP rank');
}
}