import { MigrationInterface, QueryRunner } from "typeorm";

export class UpdateTableRevisionAddIslock1731471323400 implements MigrationInterface {
    name = 'UpdateTableRevisionAddIslock1731471323400'

    public async up(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`ALTER TABLE \`orgRevision\` ADD \`isLock\` tinyint NOT NULL COMMENT 'สถานะเช็คโครงสร้างส่งคนไปออกคำสั่งหรือไม่' DEFAULT 0`);
        await queryRunner.query(`CREATE VIEW \`view_director\` AS SELECT 
        \`profile\`.\`id\` AS \`Id\`,
        \`profile\`.\`prefix\` AS \`prefix\`,
        \`profile\`.\`firstName\` AS \`firstName\`,
        \`profile\`.\`lastName\` AS \`lastName\`,
        \`profile\`.\`citizenId\` AS \`citizenId\`,
        \`profile\`.\`position\` AS \`position\`,
        CONCAT((CASE
                    WHEN (\`posMaster\`.\`orgChild1Id\` IS NULL) THEN \`orgRoot\`.\`orgRootShortName\`
                    WHEN (\`posMaster\`.\`orgChild2Id\` IS NULL) THEN \`orgChild1\`.\`orgChild1ShortName\`
                    WHEN (\`posMaster\`.\`orgChild3Id\` IS NULL) THEN \`orgChild2\`.\`orgChild2ShortName\`
                    WHEN (\`posMaster\`.\`orgChild4Id\` IS NULL) THEN \`orgChild3\`.\`orgChild3ShortName\`
                    ELSE \`orgChild4\`.\`orgChild4ShortName\`
                END),
                \`posMaster\`.\`posMasterNo\`) AS \`posNo\`,
        \`posMaster\`.\`isDirector\` AS \`isDirector\`,
        \`posLevel\`.\`posLevelName\` AS \`posLevel\`,
        \`posType\`.\`posTypeName\` AS \`posType\`,
        \`posExecutive\`.\`posExecutiveName\` AS \`posExecutiveName\`,
        \`orgRoot\`.\`isDeputy\` AS \`isDeputy\`,
        \`posMaster\`.\`orgRootId\` AS \`orgRootId\`,
        \`posMaster\`.\`orgChild1Id\` AS \`orgChild1Id\`,
        \`posMaster\`.\`orgChild2Id\` AS \`orgChild2Id\`,
        \`posMaster\`.\`orgChild3Id\` AS \`orgChild3Id\`,
        \`posMaster\`.\`orgChild4Id\` AS \`orgChild4Id\`,
        CONCAT(\`posMaster\`.\`id\`, \`profile\`.\`id\`) AS \`key\`,
        NULL AS \`actFullNameId\`,
        NULL AS \`actFullName\`
    FROM
        ((((((((((\`posMaster\`
        JOIN \`profile\` ON ((\`posMaster\`.\`current_holderId\` = \`profile\`.\`id\`)))
        LEFT JOIN \`orgRoot\` ON ((\`posMaster\`.\`orgRootId\` = \`orgRoot\`.\`id\`)))
        LEFT JOIN \`orgChild1\` ON ((\`posMaster\`.\`orgChild1Id\` = \`orgChild1\`.\`id\`)))
        LEFT JOIN \`orgChild2\` ON ((\`posMaster\`.\`orgChild2Id\` = \`orgChild2\`.\`id\`)))
        LEFT JOIN \`orgChild3\` ON ((\`posMaster\`.\`orgChild3Id\` = \`orgChild3\`.\`id\`)))
        LEFT JOIN \`orgChild4\` ON ((\`posMaster\`.\`orgChild4Id\` = \`orgChild4\`.\`id\`)))
        JOIN \`posLevel\` ON ((\`profile\`.\`posLevelId\` = \`posLevel\`.\`id\`)))
        JOIN \`posType\` ON ((\`profile\`.\`posTypeId\` = \`posType\`.\`id\`)))
        LEFT JOIN \`position\` ON ((\`posMaster\`.\`id\` = \`position\`.\`posMasterId\`)))
        LEFT JOIN \`posExecutive\` ON ((\`position\`.\`posExecutiveId\` = \`posExecutive\`.\`id\`)))
    WHERE
        (\`position\`.\`positionIsSelected\` = TRUE)`);
        await queryRunner.query(`INSERT INTO \`bma_ehr_organization_demo\`.\`typeorm_metadata\`(\`database\`, \`schema\`, \`table\`, \`type\`, \`name\`, \`value\`) VALUES (DEFAULT, ?, DEFAULT, ?, ?, ?)`, ["bma_ehr_organization_demo","VIEW","view_director","SELECT \n        `profile`.`id` AS `Id`,\n        `profile`.`prefix` AS `prefix`,\n        `profile`.`firstName` AS `firstName`,\n        `profile`.`lastName` AS `lastName`,\n        `profile`.`citizenId` AS `citizenId`,\n        `profile`.`position` AS `position`,\n        CONCAT((CASE\n                    WHEN (`posMaster`.`orgChild1Id` IS NULL) THEN `orgRoot`.`orgRootShortName`\n                    WHEN (`posMaster`.`orgChild2Id` IS NULL) THEN `orgChild1`.`orgChild1ShortName`\n                    WHEN (`posMaster`.`orgChild3Id` IS NULL) THEN `orgChild2`.`orgChild2ShortName`\n                    WHEN (`posMaster`.`orgChild4Id` IS NULL) THEN `orgChild3`.`orgChild3ShortName`\n                    ELSE `orgChild4`.`orgChild4ShortName`\n                END),\n                `posMaster`.`posMasterNo`) AS `posNo`,\n        `posMaster`.`isDirector` AS `isDirector`,\n        `posLevel`.`posLevelName` AS `posLevel`,\n        `posType`.`posTypeName` AS `posType`,\n        `posExecutive`.`posExecutiveName` AS `posExecutiveName`,\n        `orgRoot`.`isDeputy` AS `isDeputy`,\n        `posMaster`.`orgRootId` AS `orgRootId`,\n        `posMaster`.`orgChild1Id` AS `orgChild1Id`,\n        `posMaster`.`orgChild2Id` AS `orgChild2Id`,\n        `posMaster`.`orgChild3Id` AS `orgChild3Id`,\n        `posMaster`.`orgChild4Id` AS `orgChild4Id`,\n        CONCAT(`posMaster`.`id`, `profile`.`id`) AS `key`,\n        NULL AS `actFullNameId`,\n        NULL AS `actFullName`\n    FROM\n        ((((((((((`posMaster`\n        JOIN `profile` ON ((`posMaster`.`current_holderId` = `profile`.`id`)))\n        LEFT JOIN `orgRoot` ON ((`posMaster`.`orgRootId` = `orgRoot`.`id`)))\n        LEFT JOIN `orgChild1` ON ((`posMaster`.`orgChild1Id` = `orgChild1`.`id`)))\n        LEFT JOIN `orgChild2` ON ((`posMaster`.`orgChild2Id` = `orgChild2`.`id`)))\n        LEFT JOIN `orgChild3` ON ((`posMaster`.`orgChild3Id` = `orgChild3`.`id`)))\n        LEFT JOIN `orgChild4` ON ((`posMaster`.`orgChild4Id` = `orgChild4`.`id`)))\n        JOIN `posLevel` ON ((`profile`.`posLevelId` = `posLevel`.`id`)))\n        JOIN `posType` ON ((`profile`.`posTypeId` = `posType`.`id`)))\n        LEFT JOIN `position` ON ((`posMaster`.`id` = `position`.`posMasterId`)))\n        LEFT JOIN `posExecutive` ON ((`position`.`posExecutiveId` = `posExecutive`.`id`)))\n    WHERE\n        (`position`.`positionIsSelected` = TRUE)"]);
        await queryRunner.query(`CREATE VIEW \`view_director_acting\` AS SELECT 
        \`profileChild\`.\`id\` AS \`Id\`,
        \`profileChild\`.\`prefix\` AS \`prefix\`,
        \`profileChild\`.\`firstName\` AS \`firstName\`,
        \`profileChild\`.\`lastName\` AS \`lastName\`,
        \`profileChild\`.\`citizenId\` AS \`citizenId\`,
        \`profileChild\`.\`position\` AS \`position\`,
        CONCAT((CASE
                    WHEN (\`posMaster\`.\`orgChild1Id\` IS NULL) THEN \`orgRootChild\`.\`orgRootShortName\`
                    WHEN (\`posMaster\`.\`orgChild2Id\` IS NULL) THEN \`orgChild1Child\`.\`orgChild1ShortName\`
                    WHEN (\`posMaster\`.\`orgChild3Id\` IS NULL) THEN \`orgChild2Child\`.\`orgChild2ShortName\`
                    WHEN (\`posMaster\`.\`orgChild4Id\` IS NULL) THEN \`orgChild3Child\`.\`orgChild3ShortName\`
                    ELSE \`orgChild4Child\`.\`orgChild4ShortName\`
                END),
                \`posMaster\`.\`posMasterNo\`) AS \`posNo\`,
        \`posMasterChild\`.\`isDirector\` AS \`isDirectorChild\`,
        \`posMaster\`.\`isDirector\` AS \`isDirector\`,
        \`posLevel\`.\`posLevelName\` AS \`posLevel\`,
        \`posType\`.\`posTypeName\` AS \`posType\`,
        \`posExecutive\`.\`posExecutiveName\` AS \`posExecutiveName\`,
        \`orgRoot\`.\`isDeputy\` AS \`isDeputy\`,
        \`posMaster\`.\`orgRootId\` AS \`orgRootId\`,
        \`posMaster\`.\`orgChild1Id\` AS \`orgChild1Id\`,
        \`posMaster\`.\`orgChild2Id\` AS \`orgChild2Id\`,
        \`posMaster\`.\`orgChild3Id\` AS \`orgChild3Id\`,
        \`posMaster\`.\`orgChild4Id\` AS \`orgChild4Id\`,
        CONCAT(\`posMaster\`.\`id\`, \`profileChild\`.\`id\`) AS \`key\`,
        \`profile\`.\`id\` AS \`actFullNameId\`,
        CONCAT(\`profile\`.\`prefix\`,
                \`profile\`.\`firstName\`,
                ' ',
                \`profile\`.\`lastName\`) AS \`actFullName\`
    FROM
        ((((((((((((((\`posMasterAct\`
        JOIN \`posMaster\` \`posMasterChild\` ON ((\`posMasterAct\`.\`posMasterChildId\` = \`posMasterChild\`.\`id\`)))
        JOIN \`profile\` \`profileChild\` ON ((\`posMasterChild\`.\`current_holderId\` = \`profileChild\`.\`id\`)))
        LEFT JOIN \`orgRoot\` \`orgRootChild\` ON ((\`posMasterChild\`.\`orgRootId\` = \`orgRootChild\`.\`id\`)))
        LEFT JOIN \`orgChild1\` \`orgChild1Child\` ON ((\`posMasterChild\`.\`orgChild1Id\` = \`orgChild1Child\`.\`id\`)))
        LEFT JOIN \`orgChild2\` \`orgChild2Child\` ON ((\`posMasterChild\`.\`orgChild2Id\` = \`orgChild2Child\`.\`id\`)))
        LEFT JOIN \`orgChild3\` \`orgChild3Child\` ON ((\`posMasterChild\`.\`orgChild3Id\` = \`orgChild3Child\`.\`id\`)))
        LEFT JOIN \`orgChild4\` \`orgChild4Child\` ON ((\`posMasterChild\`.\`orgChild4Id\` = \`orgChild4Child\`.\`id\`)))
        JOIN \`posLevel\` ON ((\`profileChild\`.\`posLevelId\` = \`posLevel\`.\`id\`)))
        JOIN \`posType\` ON ((\`profileChild\`.\`posTypeId\` = \`posType\`.\`id\`)))
        JOIN \`posMaster\` ON ((\`posMasterAct\`.\`posMasterId\` = \`posMaster\`.\`id\`)))
        LEFT JOIN \`orgRoot\` ON ((\`posMaster\`.\`orgRootId\` = \`orgRoot\`.\`id\`)))
        JOIN \`profile\` ON ((\`posMaster\`.\`current_holderId\` = \`profile\`.\`id\`)))
        LEFT JOIN \`position\` ON ((\`posMasterChild\`.\`id\` = \`position\`.\`posMasterId\`)))
        LEFT JOIN \`posExecutive\` ON ((\`position\`.\`posExecutiveId\` = \`posExecutive\`.\`id\`)))
    WHERE
        (\`position\`.\`positionIsSelected\` = TRUE)`);
        await queryRunner.query(`INSERT INTO \`bma_ehr_organization_demo\`.\`typeorm_metadata\`(\`database\`, \`schema\`, \`table\`, \`type\`, \`name\`, \`value\`) VALUES (DEFAULT, ?, DEFAULT, ?, ?, ?)`, ["bma_ehr_organization_demo","VIEW","view_director_acting","SELECT \n        `profileChild`.`id` AS `Id`,\n        `profileChild`.`prefix` AS `prefix`,\n        `profileChild`.`firstName` AS `firstName`,\n        `profileChild`.`lastName` AS `lastName`,\n        `profileChild`.`citizenId` AS `citizenId`,\n        `profileChild`.`position` AS `position`,\n        CONCAT((CASE\n                    WHEN (`posMaster`.`orgChild1Id` IS NULL) THEN `orgRootChild`.`orgRootShortName`\n                    WHEN (`posMaster`.`orgChild2Id` IS NULL) THEN `orgChild1Child`.`orgChild1ShortName`\n                    WHEN (`posMaster`.`orgChild3Id` IS NULL) THEN `orgChild2Child`.`orgChild2ShortName`\n                    WHEN (`posMaster`.`orgChild4Id` IS NULL) THEN `orgChild3Child`.`orgChild3ShortName`\n                    ELSE `orgChild4Child`.`orgChild4ShortName`\n                END),\n                `posMaster`.`posMasterNo`) AS `posNo`,\n        `posMasterChild`.`isDirector` AS `isDirectorChild`,\n        `posMaster`.`isDirector` AS `isDirector`,\n        `posLevel`.`posLevelName` AS `posLevel`,\n        `posType`.`posTypeName` AS `posType`,\n        `posExecutive`.`posExecutiveName` AS `posExecutiveName`,\n        `orgRoot`.`isDeputy` AS `isDeputy`,\n        `posMaster`.`orgRootId` AS `orgRootId`,\n        `posMaster`.`orgChild1Id` AS `orgChild1Id`,\n        `posMaster`.`orgChild2Id` AS `orgChild2Id`,\n        `posMaster`.`orgChild3Id` AS `orgChild3Id`,\n        `posMaster`.`orgChild4Id` AS `orgChild4Id`,\n        CONCAT(`posMaster`.`id`, `profileChild`.`id`) AS `key`,\n        `profile`.`id` AS `actFullNameId`,\n        CONCAT(`profile`.`prefix`,\n                `profile`.`firstName`,\n                ' ',\n                `profile`.`lastName`) AS `actFullName`\n    FROM\n        ((((((((((((((`posMasterAct`\n        JOIN `posMaster` `posMasterChild` ON ((`posMasterAct`.`posMasterChildId` = `posMasterChild`.`id`)))\n        JOIN `profile` `profileChild` ON ((`posMasterChild`.`current_holderId` = `profileChild`.`id`)))\n        LEFT JOIN `orgRoot` `orgRootChild` ON ((`posMasterChild`.`orgRootId` = `orgRootChild`.`id`)))\n        LEFT JOIN `orgChild1` `orgChild1Child` ON ((`posMasterChild`.`orgChild1Id` = `orgChild1Child`.`id`)))\n        LEFT JOIN `orgChild2` `orgChild2Child` ON ((`posMasterChild`.`orgChild2Id` = `orgChild2Child`.`id`)))\n        LEFT JOIN `orgChild3` `orgChild3Child` ON ((`posMasterChild`.`orgChild3Id` = `orgChild3Child`.`id`)))\n        LEFT JOIN `orgChild4` `orgChild4Child` ON ((`posMasterChild`.`orgChild4Id` = `orgChild4Child`.`id`)))\n        JOIN `posLevel` ON ((`profileChild`.`posLevelId` = `posLevel`.`id`)))\n        JOIN `posType` ON ((`profileChild`.`posTypeId` = `posType`.`id`)))\n        JOIN `posMaster` ON ((`posMasterAct`.`posMasterId` = `posMaster`.`id`)))\n        LEFT JOIN `orgRoot` ON ((`posMaster`.`orgRootId` = `orgRoot`.`id`)))\n        JOIN `profile` ON ((`posMaster`.`current_holderId` = `profile`.`id`)))\n        LEFT JOIN `position` ON ((`posMasterChild`.`id` = `position`.`posMasterId`)))\n        LEFT JOIN `posExecutive` ON ((`position`.`posExecutiveId` = `posExecutive`.`id`)))\n    WHERE\n        (`position`.`positionIsSelected` = TRUE)"]);
    }

    public async down(queryRunner: QueryRunner): Promise<void> {
        await queryRunner.query(`DELETE FROM \`bma_ehr_organization_demo\`.\`typeorm_metadata\` WHERE \`type\` = ? AND \`name\` = ? AND \`schema\` = ?`, ["VIEW","view_director_acting","bma_ehr_organization_demo"]);
        await queryRunner.query(`DROP VIEW \`view_director_acting\``);
        await queryRunner.query(`DELETE FROM \`bma_ehr_organization_demo\`.\`typeorm_metadata\` WHERE \`type\` = ? AND \`name\` = ? AND \`schema\` = ?`, ["VIEW","view_director","bma_ehr_organization_demo"]);
        await queryRunner.query(`DROP VIEW \`view_director\``);
        await queryRunner.query(`ALTER TABLE \`orgRevision\` DROP COLUMN \`isLock\``);
    }

}
