<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20250817002624 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE payroll_records (id INT AUTO_INCREMENT NOT NULL, sync_id INT NOT NULL, establishment_id INT NOT NULL, rh_salary_id INT NOT NULL, employee_id VARCHAR(60) NOT NULL, matricule VARCHAR(100) NOT NULL, first_name VARCHAR(100) NOT NULL, last_name VARCHAR(100) NOT NULL, date DATE NOT NULL, entry_time TIME DEFAULT NULL, exit_time TIME DEFAULT NULL, total_hours NUMERIC(5, 2) NOT NULL, normal_hours NUMERIC(5, 2) NOT NULL, overtime_hours NUMERIC(5, 2) NOT NULL, status VARCHAR(50) NOT NULL, late_minutes INT NOT NULL, early_leave_minutes INT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_A1A4CF1FA50C422 (sync_id), INDEX IDX_A1A4CF18565851 (establishment_id), INDEX IDX_A1A4CF14758967C (rh_salary_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE payroll_sync (id INT AUTO_INCREMENT NOT NULL, establishment_id INT NOT NULL, sync_id VARCHAR(30) NOT NULL, sync_timestamp DATETIME NOT NULL, period_start DATE NOT NULL, period_end DATE NOT NULL, id_establishment VARCHAR(60) NOT NULL, status VARCHAR(50) NOT NULL, processed_records INT DEFAULT NULL, error_message LONGTEXT DEFAULT NULL, completed_at DATETIME DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, UNIQUE INDEX UNIQ_970B62B9FA50C422 (sync_id), INDEX IDX_970B62B98565851 (establishment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE restaurant_session (id INT AUTO_INCREMENT NOT NULL, cash_register_id INT NOT NULL, opened_by_id INT NOT NULL, establishment_id INT NOT NULL, session_code VARCHAR(50) NOT NULL, opened_at DATETIME NOT NULL, closed_at DATETIME DEFAULT NULL, opening_amount NUMERIC(10, 2) NOT NULL, closing_amount NUMERIC(10, 2) DEFAULT NULL, status VARCHAR(20) NOT NULL, ticket_validity_hours INT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, UNIQUE INDEX UNIQ_1A0F89A1B16430B2 (session_code), INDEX IDX_1A0F89A1A917CC69 (cash_register_id), INDEX IDX_1A0F89A1AB159F5 (opened_by_id), INDEX IDX_1A0F89A18565851 (establishment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE restaurant_session_product (id INT AUTO_INCREMENT NOT NULL, session_id INT NOT NULL, product_id INT NOT NULL, establishment_id INT NOT NULL, quantity_available NUMERIC(10, 2) NOT NULL, quantity_sold NUMERIC(10, 2) NOT NULL, quantity_remaining NUMERIC(10, 2) NOT NULL, session_price NUMERIC(10, 2) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_76D9015613FECDF (session_id), INDEX IDX_76D90154584665A (product_id), INDEX IDX_76D90158565851 (establishment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE restaurant_ticket (id INT AUTO_INCREMENT NOT NULL, session_id INT NOT NULL, created_user_id INT NOT NULL, validated_by_id INT DEFAULT NULL, establishment_id INT NOT NULL, ticket_code VARCHAR(50) NOT NULL, valid_until DATETIME NOT NULL, status VARCHAR(20) NOT NULL, validated_at DATETIME DEFAULT NULL, total_amount NUMERIC(10, 2) NOT NULL, amount_paid NUMERIC(10, 2) NOT NULL, change_amount NUMERIC(10, 2) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, UNIQUE INDEX UNIQ_663E525245CE25A0 (ticket_code), INDEX IDX_663E5252613FECDF (session_id), INDEX IDX_663E5252E104C1D3 (created_user_id), INDEX IDX_663E5252C69DE5E5 (validated_by_id), INDEX IDX_663E52528565851 (establishment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE restaurant_ticket_item (id INT AUTO_INCREMENT NOT NULL, ticket_id INT NOT NULL, product_id INT NOT NULL, establishment_id INT NOT NULL, quantity NUMERIC(10, 2) NOT NULL, unit_price NUMERIC(10, 2) NOT NULL, total_price NUMERIC(10, 2) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_7CBB0A3C700047D2 (ticket_id), INDEX IDX_7CBB0A3C4584665A (product_id), INDEX IDX_7CBB0A3C8565851 (establishment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE transport_call_journey (id INT AUTO_INCREMENT NOT NULL, establishment_id INT NOT NULL, transport_zone_id INT NOT NULL, create_date DATE NOT NULL COMMENT \'(DC2Type:date_immutable)\', is_validated TINYINT(1) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, status VARCHAR(20) DEFAULT NULL, INDEX IDX_8341A4D78565851 (establishment_id), INDEX IDX_8341A4D7BFBFF5A (transport_zone_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE transport_call_sheet_checkpoint (id INT AUTO_INCREMENT NOT NULL, transport_call_sheet_id INT NOT NULL, checkpoint_id INT NOT NULL, establishment_id INT NOT NULL, type VARCHAR(20) NOT NULL, status VARCHAR(20) NOT NULL, scheduled_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', actual_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', validated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', total_children INT DEFAULT NULL, present_children INT DEFAULT NULL, absent_children INT DEFAULT NULL, notes LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_7974DB8AB36D474 (transport_call_sheet_id), INDEX IDX_7974DB8F27C615F (checkpoint_id), INDEX IDX_7974DB88565851 (establishment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE transport_call_sheet_checkpoint_line (id INT AUTO_INCREMENT NOT NULL, checkpoint_id INT NOT NULL, student_registration_id INT NOT NULL, establishment_id INT NOT NULL, status VARCHAR(20) NOT NULL, is_present TINYINT(1) NOT NULL, call_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', validation_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', notes LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_72E53F6AF27C615F (checkpoint_id), INDEX IDX_72E53F6ADF990765 (student_registration_id), INDEX IDX_72E53F6A8565851 (establishment_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('CREATE TABLE transport_incidents (id INT AUTO_INCREMENT NOT NULL, journey_id INT NOT NULL, establishment_id INT NOT NULL, reported_by_id INT NOT NULL, resolved_by_id INT DEFAULT NULL, type VARCHAR(50) NOT NULL, severity VARCHAR(20) DEFAULT NULL, location VARCHAR(255) NOT NULL, description LONGTEXT NOT NULL, estimated_delay INT DEFAULT NULL, status VARCHAR(20) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', resolved_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', created_by INT NOT NULL, updated_by INT NOT NULL, INDEX IDX_7092B34BD5C9896F (journey_id), INDEX IDX_7092B34B8565851 (establishment_id), INDEX IDX_7092B34B71CE806 (reported_by_id), INDEX IDX_7092B34B6713A32B (resolved_by_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
$this->addSql('ALTER TABLE payroll_records ADD CONSTRAINT FK_A1A4CF1FA50C422 FOREIGN KEY (sync_id) REFERENCES payroll_sync (id)');
$this->addSql('ALTER TABLE payroll_records ADD CONSTRAINT FK_A1A4CF18565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE payroll_records ADD CONSTRAINT FK_A1A4CF14758967C FOREIGN KEY (rh_salary_id) REFERENCES rh_salary (id)');
$this->addSql('ALTER TABLE payroll_sync ADD CONSTRAINT FK_970B62B98565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE restaurant_session ADD CONSTRAINT FK_1A0F89A1A917CC69 FOREIGN KEY (cash_register_id) REFERENCES treasury_cash_register (id)');
$this->addSql('ALTER TABLE restaurant_session ADD CONSTRAINT FK_1A0F89A1AB159F5 FOREIGN KEY (opened_by_id) REFERENCES user (id)');
$this->addSql('ALTER TABLE restaurant_session ADD CONSTRAINT FK_1A0F89A18565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE restaurant_session_product ADD CONSTRAINT FK_76D9015613FECDF FOREIGN KEY (session_id) REFERENCES restaurant_session (id)');
$this->addSql('ALTER TABLE restaurant_session_product ADD CONSTRAINT FK_76D90154584665A FOREIGN KEY (product_id) REFERENCES stock_product (id)');
$this->addSql('ALTER TABLE restaurant_session_product ADD CONSTRAINT FK_76D90158565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE restaurant_ticket ADD CONSTRAINT FK_663E5252613FECDF FOREIGN KEY (session_id) REFERENCES restaurant_session (id)');
$this->addSql('ALTER TABLE restaurant_ticket ADD CONSTRAINT FK_663E5252E104C1D3 FOREIGN KEY (created_user_id) REFERENCES user (id)');
$this->addSql('ALTER TABLE restaurant_ticket ADD CONSTRAINT FK_663E5252C69DE5E5 FOREIGN KEY (validated_by_id) REFERENCES user (id)');
$this->addSql('ALTER TABLE restaurant_ticket ADD CONSTRAINT FK_663E52528565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE restaurant_ticket_item ADD CONSTRAINT FK_7CBB0A3C700047D2 FOREIGN KEY (ticket_id) REFERENCES restaurant_ticket (id)');
$this->addSql('ALTER TABLE restaurant_ticket_item ADD CONSTRAINT FK_7CBB0A3C4584665A FOREIGN KEY (product_id) REFERENCES stock_product (id)');
$this->addSql('ALTER TABLE restaurant_ticket_item ADD CONSTRAINT FK_7CBB0A3C8565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE transport_call_journey ADD CONSTRAINT FK_8341A4D78565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE transport_call_journey ADD CONSTRAINT FK_8341A4D7BFBFF5A FOREIGN KEY (transport_zone_id) REFERENCES transport_zone (id)');
$this->addSql('ALTER TABLE transport_call_sheet_checkpoint ADD CONSTRAINT FK_7974DB8AB36D474 FOREIGN KEY (transport_call_sheet_id) REFERENCES transport_call_sheet (id)');
$this->addSql('ALTER TABLE transport_call_sheet_checkpoint ADD CONSTRAINT FK_7974DB8F27C615F FOREIGN KEY (checkpoint_id) REFERENCES transport_zone_check_point (id)');
$this->addSql('ALTER TABLE transport_call_sheet_checkpoint ADD CONSTRAINT FK_7974DB88565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE transport_call_sheet_checkpoint_line ADD CONSTRAINT FK_72E53F6AF27C615F FOREIGN KEY (checkpoint_id) REFERENCES transport_call_sheet_checkpoint (id)');
$this->addSql('ALTER TABLE transport_call_sheet_checkpoint_line ADD CONSTRAINT FK_72E53F6ADF990765 FOREIGN KEY (student_registration_id) REFERENCES registration_student_registration (id)');
$this->addSql('ALTER TABLE transport_call_sheet_checkpoint_line ADD CONSTRAINT FK_72E53F6A8565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE transport_incidents ADD CONSTRAINT FK_7092B34BD5C9896F FOREIGN KEY (journey_id) REFERENCES transport_call_journey (id)');
$this->addSql('ALTER TABLE transport_incidents ADD CONSTRAINT FK_7092B34B8565851 FOREIGN KEY (establishment_id) REFERENCES establishment (id)');
$this->addSql('ALTER TABLE transport_incidents ADD CONSTRAINT FK_7092B34B71CE806 FOREIGN KEY (reported_by_id) REFERENCES user (id)');
$this->addSql('ALTER TABLE transport_incidents ADD CONSTRAINT FK_7092B34B6713A32B FOREIGN KEY (resolved_by_id) REFERENCES user (id)');
$this->addSql('ALTER TABLE registration_student_registration ADD is_authorized_alone TINYINT(1) NOT NULL');
$this->addSql('ALTER TABLE stock_product ADD is_available_for_restaurant TINYINT(1) DEFAULT \'0\' NOT NULL, ADD restaurant_price DOUBLE PRECISION DEFAULT NULL, ADD quantity_available_for_restaurant DOUBLE PRECISION DEFAULT NULL, ADD image VARCHAR(255) DEFAULT NULL');
$this->addSql('ALTER TABLE transport_call_sheet ADD transport_call_journey_id INT DEFAULT NULL, ADD status VARCHAR(20) DEFAULT NULL, ADD started_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', ADD ended_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', ADD total_children INT DEFAULT NULL, ADD present_children INT DEFAULT NULL');
$this->addSql('ALTER TABLE transport_call_sheet ADD CONSTRAINT FK_829D84102537EEED FOREIGN KEY (transport_call_journey_id) REFERENCES transport_call_journey (id)');
$this->addSql('CREATE INDEX IDX_829D84102537EEED ON transport_call_sheet (transport_call_journey_id)');
$this->addSql('ALTER TABLE transport_call_sheet_line ADD status VARCHAR(20) DEFAULT NULL, ADD embarkation_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', ADD disembarkation_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', ADD parent_notified TINYINT(1) DEFAULT NULL');
$this->addSql('ALTER TABLE transport_zone_check_point ADD validated_embarkation TINYINT(1) DEFAULT NULL, ADD validated_disembarkation TINYINT(1) DEFAULT NULL, ADD embarkation_validation_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', ADD disembarkation_validation_time DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\'');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE payroll_records DROP FOREIGN KEY FK_A1A4CF1FA50C422');
$this->addSql('ALTER TABLE restaurant_session_product DROP FOREIGN KEY FK_76D9015613FECDF');
$this->addSql('ALTER TABLE restaurant_ticket DROP FOREIGN KEY FK_663E5252613FECDF');
$this->addSql('ALTER TABLE restaurant_ticket_item DROP FOREIGN KEY FK_7CBB0A3C700047D2');
$this->addSql('ALTER TABLE transport_call_sheet DROP FOREIGN KEY FK_829D84102537EEED');
$this->addSql('ALTER TABLE transport_incidents DROP FOREIGN KEY FK_7092B34BD5C9896F');
$this->addSql('ALTER TABLE transport_call_sheet_checkpoint_line DROP FOREIGN KEY FK_72E53F6AF27C615F');
$this->addSql('DROP TABLE payroll_records');
$this->addSql('DROP TABLE payroll_sync');
$this->addSql('DROP TABLE restaurant_session');
$this->addSql('DROP TABLE restaurant_session_product');
$this->addSql('DROP TABLE restaurant_ticket');
$this->addSql('DROP TABLE restaurant_ticket_item');
$this->addSql('DROP TABLE transport_call_journey');
$this->addSql('DROP TABLE transport_call_sheet_checkpoint');
$this->addSql('DROP TABLE transport_call_sheet_checkpoint_line');
$this->addSql('DROP TABLE transport_incidents');
$this->addSql('ALTER TABLE registration_student_registration DROP is_authorized_alone');
$this->addSql('ALTER TABLE stock_product DROP is_available_for_restaurant, DROP restaurant_price, DROP quantity_available_for_restaurant, DROP image');
$this->addSql('DROP INDEX IDX_829D84102537EEED ON transport_call_sheet');
$this->addSql('ALTER TABLE transport_call_sheet DROP transport_call_journey_id, DROP status, DROP started_at, DROP ended_at, DROP total_children, DROP present_children');
$this->addSql('ALTER TABLE transport_call_sheet_line DROP status, DROP embarkation_time, DROP disembarkation_time, DROP parent_notified');
$this->addSql('ALTER TABLE transport_zone_check_point DROP validated_embarkation, DROP validated_disembarkation, DROP embarkation_validation_time, DROP disembarkation_validation_time');
}
}