migrations/Version20220905104545.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use App\Entity\FunctionalEvaluation;
  5. use App\Entity\Subdomain;
  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 Version20220905104545 extends AbstractMigration implements ContainerAwareInterface
  12. {
  13.     private const DATA = [
  14.         'Core HR' => [
  15.             'Richesse du modèle de données / référentiel',
  16.             'Gestion du on-boarding',
  17.             'Modalité d\'interfaçage avec les systèmes de paie',
  18.             'API',
  19.             'Prise en compte des spécificités légales',
  20.         ],
  21.         'Recrutement' => [
  22.             'Richesse du modèle de données / référentiel',
  23.             'Gestion du on-boarding',
  24.             'Modalité d\'interfaçage avec les systèmes de paie',
  25.             'API',
  26.             'Prise en compte des spécificités légales',
  27.         ],
  28.         'Formation et learning' => [
  29.             'Gérer le catalogue et les actions de formation',
  30.             'Préparer et animer le plan de formation (TMS)',
  31.             'Partager et créer des contenus de formation digitaux (LCMS)',
  32.             'Faire vivre les modalités mixtes de la formation',
  33.             '(blended, social Learning, classe virtuelle) LMS',
  34.             'Gérer les besoins spécifiques des organismes de formation',
  35.         ],
  36.         'Entretiens & carrières' => [
  37.             'Gestion des comités carrières / people Review',
  38.             'Mise en place d\'un feedback / 360°',
  39.             'Gestion d\'un plan de succession',
  40.             'Gestion des plans de développement individuel',
  41.             'Evaluation des compétences / identification et validation',
  42.             'Gestion des matching de compétences',
  43.         ],
  44.         'Gestion administrative' => [
  45.             'Gestion du dossier collaborateur et des actes de gestion (Diversité des populations gérées : salariés, droit public, privé, international…)',
  46.             'Gestion de la structure organisationnelle (Sont-ils capables de gérer des organisations complexes (site, établissement…) Multiplicité de la structure, gestion des postes, organigramme, …',
  47.             'Ergonomie du portail et services associés (RIB, adresse, ensemble des services offerts, chatbot, lien avec les collaborateurs)',
  48.             'Gestion des workflows et des notifications (richesse fonctionnelle des workflows, richesse du paramétrage et simplicité de celui-ci)',
  49.             'Gestion électronique de documents et Edition publipostage de documents',
  50.         ],
  51.         'Gestion electronique des documents' => [
  52.             'Coffre-fort employé',
  53.             'Coffre-fort employeur',
  54.         ],
  55.         'Paie' => [
  56.             'Lecture intelligente des documents',
  57.             'Génération automatique de documents',
  58.             'Base de connaissance',
  59.             'Diversité des populations gérées (public, privé, expatrié…)',
  60.             'Modèle de service (on premise, SaaS, processing, BPO)',
  61.             'Capacité d\'adaptation (solution modélisée ou non)',
  62.             'Extension fonctionnelle (reporting, gestion de la masse salariale, contrôle de paie, EDI (com avec les org sociaux) autres services',
  63.         ],
  64.         'GTA' => [
  65.             'Planification, moteur de planification sous contraintes (existence d\'un moteur de planification)',
  66.             'Gestion du temps de travail / présence (capacité à gérer des populations et situations complexes) ',
  67.             'Gestion des absences (capacité à gérer des populations et situations complexe)',
  68.             'Extension fonctionnelle (gestion administrative, talent…)',
  69.             'Conformité réglementaire et conventionnelle (à la pointe sur la réglementation, la maintenance…)',
  70.         ],
  71.         'Rémunération' => [
  72.             'Pilotage de la masse salariale',
  73.             'Note Gestion des courriers / lettres et flexibilité de la personnalisation',
  74.             'Gestion des workflows de validation, différents accès (personnalisation)',
  75.             'Gestion des augmentations individuelles et collectives',
  76.             'Facilité de prise en main et d\'utilisation du module par un administrateur',
  77.             'Capacité à faire le lien entre performance et rémunération',
  78.         ],
  79.         'Pilotage RH' => [
  80.             'Capacité à proposer le reporting réglementaire et légal (bilan social, BDES, rapport égalité femme/homme…)',
  81.             'Capacité à proposer un reporting lié à chaque domaine RH (rémunération, formation etc)',
  82.             'Autonomie laissée à l’administrateur / aux utilisateurs de créer leurs propres indicateurs / tableaux de bord',
  83.             'Capacité à proposer un Bilan Social Individuel',
  84.         ],
  85.         'Pilotage de la masse salariale' => [
  86.             'Capacité à proposer une vue mensuelle sur la Masse salariale réalisée au niveau global puis selon les axes choisis par l’utilisateur (structure juridique, organisationnelle, géographique…)',
  87.             'Capacité à réaliser des simulations sur les effectifs à un niveau macro et à mesurer les effets sur la Masse Salariale',
  88.             'Capacité à réaliser des simulations sur les effectifs à un niveau individuel et à mesurer les effets sur la Masse Salariale',
  89.             'Capacité à réaliser des simulations sur la rémunération à un niveau macro et à mesurer les effets sur la Masse Salariale',
  90.             'Capacité à réaliser des simulations sur la rémunération à un niveau individuel et à mesurer les effets sur la Masse Salariale',
  91.             'Capacité à proposer des indicateurs d’analyse de l’évolution de la Masse Salariale (effet de Noria, d’effectif, GVT, de structure etc)',
  92.         ],
  93.     ];
  94.     private EntityManager $em;
  95.     private ContainerInterface $container;
  96.     public function setContainer(ContainerInterface $container null)
  97.     {
  98.         $this->container $container;
  99.         $this->em $container->get('doctrine')->getManager();
  100.     }
  101.     public function getDescription(): string
  102.     {
  103.         return 'add functional relation evaluation add post data';
  104.     }
  105.     public function up(Schema $schema): void
  106.     {
  107.         $this->addSql('CREATE TABLE evaluation_subdomain (id INT AUTO_INCREMENT NOT NULL, subdomain_id INT DEFAULT NULL, evaluation_solution_id INT DEFAULT NULL, rating INT DEFAULT NULL, INDEX IDX_13D55DAA8530A5DC (subdomain_id), INDEX IDX_13D55DAA4F5275F4 (evaluation_solution_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  108.         $this->addSql('CREATE TABLE functional_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');
  109.         $this->addSql('CREATE TABLE functional_evaluation_solution (id INT AUTO_INCREMENT NOT NULL, functional_evaluation_id INT DEFAULT NULL, solution_id INT DEFAULT NULL, rating INT DEFAULT NULL, is_active TINYINT(1) NOT NULL, advantage LONGTEXT DEFAULT NULL, disadvantage LONGTEXT DEFAULT NULL, INDEX IDX_E4A489647B2088CC (functional_evaluation_id), INDEX IDX_E4A489641C0BE183 (solution_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  110.         $this->addSql('CREATE TABLE subdomain (id INT AUTO_INCREMENT NOT NULL, functional_evaluation_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, INDEX IDX_C1D5962E7B2088CC (functional_evaluation_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  111.         $this->addSql('ALTER TABLE evaluation_subdomain ADD CONSTRAINT FK_13D55DAA8530A5DC FOREIGN KEY (subdomain_id) REFERENCES subdomain (id)');
  112.         $this->addSql('ALTER TABLE evaluation_subdomain ADD CONSTRAINT FK_13D55DAA4F5275F4 FOREIGN KEY (evaluation_solution_id) REFERENCES functional_evaluation_solution (id)');
  113.         $this->addSql('ALTER TABLE functional_evaluation_solution ADD CONSTRAINT FK_E4A489647B2088CC FOREIGN KEY (functional_evaluation_id) REFERENCES functional_evaluation (id)');
  114.         $this->addSql('ALTER TABLE functional_evaluation_solution ADD CONSTRAINT FK_E4A489641C0BE183 FOREIGN KEY (solution_id) REFERENCES solution (id)');
  115.         $this->addSql('ALTER TABLE subdomain ADD CONSTRAINT FK_C1D5962E7B2088CC FOREIGN KEY (functional_evaluation_id) REFERENCES functional_evaluation (id)');
  116.         $this->addSql('ALTER TABLE editor CHANGE turnover_global turnover_global DOUBLE PRECISION DEFAULT NULL, CHANGE turnover_france turnover_france DOUBLE PRECISION DEFAULT NULL, CHANGE turnover_sirhglobal turnover_sirhglobal DOUBLE PRECISION DEFAULT NULL, CHANGE turnover_sirhfrance turnover_sirhfrance DOUBLE PRECISION DEFAULT NULL, CHANGE logo_id editor_logo_id INT DEFAULT NULL');
  117.         $this->addSql('ALTER TABLE editor ADD CONSTRAINT FK_CCF1F1BAFAD3C153 FOREIGN KEY (editor_logo_id) REFERENCES media_object (id)');
  118.         $this->addSql('CREATE UNIQUE INDEX UNIQ_CCF1F1BAFAD3C153 ON editor (editor_logo_id)');
  119.         $this->addSql('ALTER TABLE solution DROP FOREIGN KEY FK_9F3329DBF98F144A');
  120.         $this->addSql('DROP INDEX UNIQ_9F3329DBF98F144A ON solution');
  121.         $this->addSql('ALTER TABLE solution CHANGE logo_id solution_logo_id INT DEFAULT NULL');
  122.         $this->addSql('ALTER TABLE solution ADD CONSTRAINT FK_9F3329DB5D2D26F0 FOREIGN KEY (solution_logo_id) REFERENCES media_object (id)');
  123.         $this->addSql('CREATE UNIQUE INDEX UNIQ_9F3329DB5D2D26F0 ON solution (solution_logo_id)');
  124.     }
  125.     public function postUp(Schema $schema): void
  126.     {
  127.         foreach (self::DATA as $functionalEvaluationName => $functionalEvaluationSubdomains) {
  128.             $functionalEvaluation = (new FunctionalEvaluation())
  129.                 ->setName($functionalEvaluationName)
  130.             ;
  131.             foreach ($functionalEvaluationSubdomains as $functionalEvaluationSubdomain) {
  132.                 $functionalEvaluation
  133.                     ->addSubdomain(
  134.                         (new Subdomain())
  135.                             ->setName($functionalEvaluationSubdomain)
  136.                     )
  137.                 ;
  138.             }
  139.             $this->em->persist($functionalEvaluation);
  140.         }
  141.         $this->em->flush();
  142.     }
  143.     public function down(Schema $schema): void
  144.     {
  145.     }
  146. }