migrations/Version20210721054416.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20210702054416 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return '';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // this up() migration is auto-generated, please modify it to your needs
  18.         $this->addSql('CREATE TABLE order_shipping_vehicle_feature (order_shipping_id INT NOT NULL, vehicle_feature_id INT NOT NULL, INDEX IDX_57FFB79253358C7E (order_shipping_id), INDEX IDX_57FFB792E57637E4 (vehicle_feature_id), PRIMARY KEY(order_shipping_id, vehicle_feature_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  19.         $this->addSql('ALTER TABLE order_shipping_vehicle_feature ADD CONSTRAINT FK_57FFB79253358C7E FOREIGN KEY (order_shipping_id) REFERENCES order_shipping (id) ON DELETE CASCADE');
  20.         $this->addSql('ALTER TABLE order_shipping_vehicle_feature ADD CONSTRAINT FK_57FFB792E57637E4 FOREIGN KEY (vehicle_feature_id) REFERENCES vehicle_feature (id) ON DELETE CASCADE');
  21.         $this->addSql('DROP TABLE order_vehicle_feature');
  22.         $this->addSql('ALTER TABLE order_shipping ADD state VARCHAR(100) NOT NULL, ADD start_time TIME DEFAULT NULL, ADD end_time TIME DEFAULT NULL, CHANGE date date DATETIME DEFAULT NULL');
  23.         $this->addSql('CREATE INDEX idx_state ON order_shipping (state)');
  24.         // IMPORTANT: make sure to run this migration when all unfulfilled orders are still pending!!!
  25.         // update existing shipped orders
  26.         $this->addSql('UPDATE order_shipping LEFT JOIN orders ON orders.id=order_shipping.order_id SET 
  27.             order_shipping.start_time=orders.delivery_start_time,
  28.             order_shipping.end_time=orders.delivery_end_time,
  29.             order_shipping.date=orders.delivery_date,
  30.             order_shipping.state=\'state.delivered\'
  31.             WHERE orders.state=\'Entregado\'
  32.         ');
  33.         $this->addSql('UPDATE order_shipping LEFT JOIN orders ON orders.id=order_shipping.order_id SET 
  34.             order_shipping.start_time=orders.delivery_start_time,
  35.             order_shipping.end_time=orders.delivery_end_time,
  36.             order_shipping.date=orders.delivery_date,
  37.             order_shipping.state=\'state.returned\'
  38.             WHERE orders.state=\'Fallido\'
  39.         ');
  40.         $this->addSql('UPDATE order_shipping LEFT JOIN orders ON orders.id=order_shipping.order_id SET 
  41.             order_shipping.start_time=orders.delivery_start_time,
  42.             order_shipping.end_time=orders.delivery_end_time,
  43.             order_shipping.date=orders.delivery_date,
  44.             order_shipping.state=\'state.cancelled\'
  45.             WHERE orders.state=\'Anulado\'
  46.         ');
  47.         $this->addSql('UPDATE order_shipping LEFT JOIN orders ON orders.id=order_shipping.order_id SET 
  48.             order_shipping.start_time=orders.delivery_start_time,
  49.             order_shipping.end_time=orders.delivery_end_time,
  50.             order_shipping.date=orders.delivery_date,
  51.             order_shipping.state=\'state.preparing\'
  52.             WHERE orders.state=\'Preparing\'
  53.         ');
  54.         $this->addSql('UPDATE order_shipping LEFT JOIN orders ON orders.id=order_shipping.order_id SET 
  55.             order_shipping.start_time=orders.delivery_start_time,
  56.             order_shipping.end_time=orders.delivery_end_time,
  57.             order_shipping.date=orders.delivery_date,
  58.             order_shipping.state=\'state.transit\'
  59.             WHERE orders.state=\'Despachado\'
  60.         ');
  61.         
  62.         // create new shippings for pending orders
  63.         $this->addSql('INSERT INTO order_shipping(created_by_id, created_at, updated_by_id, updated_at, order_id, date, start_time, end_time, delivery_order, `state`)
  64.             SELECT 1, NOW(), 1, NOW(), orders.id, orders.delivery_date, orders.delivery_start_time, orders.delivery_end_time,0,\'state.pending\' FROM orders WHERE state=\'Pendiente\'
  65.         ');
  66.         $this->addSql('UPDATE orders SET state="state.open" WHERE state="Pendiente" OR state="Preparing" OR state="Despachado" OR state="Fallido"');
  67.         $this->addSql('UPDATE orders SET state="state.closed" WHERE state="Entregado"');
  68.         $this->addSql('UPDATE orders SET state="state.cancelled" WHERE state="Anulado"');
  69.         $this->addSql('ALTER TABLE orders DROP delivery_date, DROP delivery_start_time, DROP delivery_end_time');
  70.     }
  71.     public function down(Schema $schema): void
  72.     {
  73.         // this down() migration is auto-generated, please modify it to your needs
  74.         $this->addSql('CREATE TABLE order_vehicle_feature (order_id INT NOT NULL, vehicle_feature_id INT NOT NULL, INDEX IDX_CBADEB558D9F6D38 (order_id), INDEX IDX_CBADEB55E57637E4 (vehicle_feature_id), PRIMARY KEY(order_id, vehicle_feature_id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB COMMENT = \'\' ');
  75.         $this->addSql('ALTER TABLE order_vehicle_feature ADD CONSTRAINT FK_CBADEB558D9F6D38 FOREIGN KEY (order_id) REFERENCES orders (id) ON DELETE CASCADE');
  76.         $this->addSql('ALTER TABLE order_vehicle_feature ADD CONSTRAINT FK_CBADEB55E57637E4 FOREIGN KEY (vehicle_feature_id) REFERENCES vehicle_feature (id) ON DELETE CASCADE');
  77.         $this->addSql('DROP TABLE order_shipping_vehicle_feature');
  78.         $this->addSql('ALTER TABLE order_shipping DROP start_time, DROP end_time, CHANGE date date DATETIME NOT NULL');
  79.         $this->addSql('ALTER TABLE orders ADD delivery_date DATETIME NOT NULL, ADD delivery_start_time TIME DEFAULT NULL, ADD delivery_end_time TIME DEFAULT NULL');
  80.         $this->addSql('DROP INDEX idx_state ON order_shipping');
  81.         $this->addSql('ALTER TABLE order_shipping DROP state');
  82.     }
  83.    
  84.     public function isTransactional(): bool
  85.     {
  86.         return false;
  87.     }
  88. }