migrations/Version20251006140000.php line 1

  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Migration pour créer la table conseiller_call_notes
  8.  * 
  9.  * Cette table permet aux conseillers/voyants de prendre et sauvegarder des notes
  10.  * sur leurs clients lors des consultations téléphoniques.
  11.  */
  12. final class Version20251006140000 extends AbstractMigration
  13. {
  14.     public function getDescription(): string
  15.     {
  16.         return 'Création de la table conseiller_call_notes pour stocker les notes des voyants sur leurs clients';
  17.     }
  18.     public function up(Schema $schema): void
  19.     {
  20.         // Création de la table conseiller_call_notes
  21.         $this->addSql(<<<'SQL'
  22.             CREATE TABLE conseiller_call_notes (
  23.                 id INT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT 'ID unique de la note',
  24.                 id_conseiller INT UNSIGNED NOT NULL COMMENT 'ID du conseiller/voyant',
  25.                 id_client INT UNSIGNED NOT NULL COMMENT 'ID du client',
  26.                 service_id INT UNSIGNED NOT NULL COMMENT 'ID du service',
  27.                 notes TEXT DEFAULT NULL COMMENT 'Notes prises par le voyant sur ce client',
  28.                 created_at DATETIME NOT NULL COMMENT 'Date de création',
  29.                 updated_at DATETIME NOT NULL COMMENT 'Date de dernière mise à jour',
  30.                 PRIMARY KEY(id),
  31.                 INDEX idx_conseiller_client (id_conseiller, id_client),
  32.                 INDEX idx_conseiller (id_conseiller),
  33.                 INDEX idx_client (id_client),
  34.                 INDEX idx_service (service_id),
  35.                 INDEX idx_updated_at (updated_at)
  36.             ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
  37.             COMMENT = 'Table pour stocker les notes des conseillers sur leurs clients'
  38.         SQL);
  39.         // Ajout des contraintes de clés étrangères (optionnel, selon votre schéma existant)
  40.         // Si vous avez des contraintes FK sur vos autres tables, décommentez ces lignes :
  41.         
  42.         // $this->addSql('ALTER TABLE conseiller_call_notes ADD CONSTRAINT fk_conseiller_notes_client FOREIGN KEY (id_client) REFERENCES client(id_client) ON DELETE CASCADE');
  43.         // $this->addSql('ALTER TABLE conseiller_call_notes ADD CONSTRAINT fk_conseiller_notes_service FOREIGN KEY (service_id) REFERENCES service(service_id) ON DELETE CASCADE');
  44.         // Log de la migration
  45.         $this->addSql("INSERT INTO migration_log (version, description, executed_at) VALUES ('20251006140000', 'Création table conseiller_call_notes', NOW()) ON DUPLICATE KEY UPDATE executed_at = NOW()");
  46.     }
  47.     public function down(Schema $schema): void
  48.     {
  49.         // Suppression des contraintes de clés étrangères si elles existent
  50.         // $this->addSql('ALTER TABLE conseiller_call_notes DROP FOREIGN KEY fk_conseiller_notes_client');
  51.         // $this->addSql('ALTER TABLE conseiller_call_notes DROP FOREIGN KEY fk_conseiller_notes_service');
  52.         // Suppression de la table
  53.         $this->addSql('DROP TABLE IF EXISTS conseiller_call_notes');
  54.     }
  55.     public function isTransactional(): bool
  56.     {
  57.         // Cette migration peut être exécutée dans une transaction
  58.         return true;
  59.     }
  60. }