migrations/Version20220901153154.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use App\Entity\SectionalEvaluation;
  5. use App\Entity\SectionalEvaluationDescription;
  6. use Doctrine\DBAL\Schema\Schema;
  7. use Doctrine\Migrations\AbstractMigration;
  8. use Doctrine\ORM\EntityManager;
  9. use Symfony\Component\DependencyInjection\ContainerAwareInterface;
  10. use Symfony\Component\DependencyInjection\ContainerInterface;
  11. final class Version20220901153154 extends AbstractMigration implements ContainerAwareInterface
  12. {
  13.     private EntityManager $em;
  14.     private ContainerInterface $container;
  15.     public function setContainer(ContainerInterface $container null)
  16.     {
  17.         $this->container $container;
  18.         $this->em $container->get('doctrine')->getManager();
  19.     }
  20.     private const DATA = [
  21.         'Intégration' => [
  22.             'L\'éditeur ne couvre qu\'un seul domaine RH (pure players)',
  23.             'L\'éditeur couvre plusieurs domaines RH, intégration non native et peu fluide',
  24.             'L\'éditeur couvre plusieurs domaines RH, intégration non native mais fluide',
  25.             'L\'éditeur couvre plusieurs domaines RH, intégration native et fluide',
  26.         ],
  27.         'Ergonomie' => [
  28.             'Différencier le back et le front office avec une ergonomie et des possibilités de modification de l\'ergonomie assez limité',
  29.             'Front et back office unifiés et un choix substantial de configuration possible à la main de client sur l\'ergonomie (Le fait d\'avoir des pages différenciées selon les profils',
  30.             'Critère 2 + Full responsive design + application réelles et qui fonctionnent',
  31.             'Critère 1+2+3 + vraie démarche d\'expérience utilisateur qui intègre la navigation, le nombre de clics, l\'intuitivité notamment par rapport aux applications du grand public',
  32.         ],
  33.         'Rapidité de déploiement' => [
  34.         ],
  35.         'Innovation' => [
  36.             'Release annuel ou release bi annuel avec peu de mises à jour',
  37.             'Release fréquent et/ou nouvelles fonctionnalités intégrées aux modules',
  38.             'Intégration de nouvelles fonctionnalités digitales : robot, IA…',
  39.             'A la pointe sur les nouvelles fonctionnalités digitales et/ou innovation sur de nouvelles approches métier',
  40.         ],
  41.         'Regard international' => [
  42.             'Il y a quelques langues de disponibles (- de 10)',
  43.             'L\'application est disponible dans un nombre important de langues + éléments de localisation de base (aspect donnée)',
  44.             'Critère 1+2+ élément de localisation avancés',
  45.             'Critère 1+2+3+ Adaptabilité des processus à la culture',
  46.         ],
  47.         'Qualité du support' => [],
  48.         'Qualité de la maintenance' => [
  49.             'Aucune maintenance',
  50.             'Maintenance légale (le reste étant à la charge du client)',
  51.             'Maintenance légale et conventionnelle',
  52.             'Maintenance applicative et évolutive aussi bien légale, conventionnelle que les accords',
  53.         ],
  54.     ];
  55.     public function getDescription(): string
  56.     {
  57.         return 'add sectorial relation evaluation add post data';
  58.     }
  59.     public function up(Schema $schema): void
  60.     {
  61.         $this->addSql('CREATE TABLE sectional_evaluation (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(36) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  62.         $this->addSql('CREATE TABLE sectional_evaluation_description (id INT AUTO_INCREMENT NOT NULL, sectional_evaluation_id INT DEFAULT NULL, description LONGTEXT NOT NULL, INDEX IDX_22A225DFAF87C90D (sectional_evaluation_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  63.         $this->addSql('CREATE TABLE sectional_evaluation_solution (id INT AUTO_INCREMENT NOT NULL, sectional_evaluation_id INT DEFAULT NULL, solution_id INT DEFAULT NULL, rating INT DEFAULT NULL, INDEX IDX_1BF89DCAF87C90D (sectional_evaluation_id), INDEX IDX_1BF89DC1C0BE183 (solution_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  64.         $this->addSql('ALTER TABLE sectional_evaluation_description ADD CONSTRAINT FK_22A225DFAF87C90D FOREIGN KEY (sectional_evaluation_id) REFERENCES sectional_evaluation (id)');
  65.         $this->addSql('ALTER TABLE sectional_evaluation_solution ADD CONSTRAINT FK_1BF89DCAF87C90D FOREIGN KEY (sectional_evaluation_id) REFERENCES sectional_evaluation (id)');
  66.         $this->addSql('ALTER TABLE sectional_evaluation_solution ADD CONSTRAINT FK_1BF89DC1C0BE183 FOREIGN KEY (solution_id) REFERENCES solution (id)');
  67.         $this->addSql('ALTER TABLE evaluation_solution DROP FOREIGN KEY FK_927D50FD1C0BE183');
  68.         $this->addSql('ALTER TABLE evaluation_solution DROP FOREIGN KEY FK_927D50FD456C5646');
  69.         $this->addSql('DROP TABLE evaluation_solution');
  70.         $this->addSql('DROP TABLE evaluation');
  71.         $this->addSql('ALTER TABLE media_object CHANGE content_url content_url VARCHAR(255) DEFAULT NULL');
  72.         $this->addSql('ALTER TABLE sectional_evaluation_description ADD level INT DEFAULT NULL');
  73.     }
  74.     public function postUp(Schema $schema): void
  75.     {
  76.         foreach (self::DATA as $sectionalEvaluationName => $sectionalEvaluationDescriptions) {
  77.             $sectionalEvaluation = (new SectionalEvaluation())
  78.                 ->setName($sectionalEvaluationName);
  79.             $index 0;
  80.             foreach ($sectionalEvaluationDescriptions as $sectionalEvaluationDescription) {
  81.                 ++$index;
  82.                 $sectionalEvaluation
  83.                     ->addDescription(
  84.                         (new SectionalEvaluationDescription())
  85.                             ->setDescription($sectionalEvaluationDescription)
  86.                             ->setLevel($index)
  87.                     );
  88.                 if (=== $index) {
  89.                     $index 0;
  90.                 }
  91.             }
  92.             $this->em->persist($sectionalEvaluation);
  93.         }
  94.         $this->em->flush();
  95.     }
  96.     public function down(Schema $schema): void
  97.     {
  98.     }
  99. }