import { ViewColumn, ViewEntity } from "typeorm";

@ViewEntity({
  expression: `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)`,
})
export class viewDirector {
  @ViewColumn()
  id: string;
  @ViewColumn()
  prefix: string;
  @ViewColumn()
  firstName: string;
  @ViewColumn()
  lastName: string;
  @ViewColumn()
  citizenId: string;
  @ViewColumn()
  position: string;
  @ViewColumn()
  posNo: string;
  @ViewColumn()
  posLevel: string;
  @ViewColumn()
  posType: string;
  @ViewColumn()
  posExecutiveName: string;
  @ViewColumn()
  isDirector: boolean;
  @ViewColumn()
  isDeputy: boolean;
  @ViewColumn()
  orgRootId: string;
  @ViewColumn()
  orgChild1Id: string;
  @ViewColumn()
  orgChild2Id: string;
  @ViewColumn()
  orgChild3Id: string;
  @ViewColumn()
  orgChild4Id: string;
  @ViewColumn()
  actFullNameId: string;
  @ViewColumn()
  actFullName: string;
  @ViewColumn()
  key: string;
}
