CREATE OR REPLACE
DEFINER = 'root'@'localhost'     -- setting 'definer' to another user requires SUPER privilege
SQL SECURITY INVOKER
VIEW `all_pages_view` (
    `id`,
    `model`,
    `page_id`,
    `caption`,
    `domain_id`,
    `source_id`,
    `domain`,
    `multistate`,

    `is_internal`,
    `is_working`,
    `is_stopped`,
    `is_deleted`,
    `is_readonly`,
    `is_blocked`,
    `is_rejected`,
    `is_protected`,
    `is_balance_registered`,

    `product_type`,
    `owner_id`,
    `login`,
    `client_id`,
    `business_unit`,

    `create_date`,
    `update_time`,
    `send_time`

    ) AS
        SELECT
            page.id                          AS `id`,
            'context_on_site_campaign'       AS `model`,
            page.page_id                     AS `page_id`,
            page.caption                     AS `caption`,
            page.domain_id                   AS `domain_id`,
            all_sources.id                   AS `source_id`,
            site.domain                      AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 128, 1, 0)  AS `is_blocked`,
            if(page.multistate & 512, 1, 0)  AS `is_rejected`,
            if(page.multistate & 1024, 1, 0) AS `is_protected`,
            if(page.multistate & 16, 1, 0)   AS `is_balance_registered`,

            'context'                        AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            users.business_unit              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `context_on_site_campaign` page
            JOIN site             ON site.id  = page.domain_id
            JOIN users            ON users.id = page.owner_id
            LEFT JOIN all_sources ON all_sources.local_id = page.domain_id AND all_sources.model = 'site'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'search_on_site_campaign'        AS `model`,
            page.page_id                     AS `page_id`,
            page.caption                     AS `caption`,
            page.domain_id                   AS `domain_id`,
            all_sources.id                   AS `source_id`,
            site.domain                      AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 128, 1, 0)  AS `is_blocked`,
            if(page.multistate & 512, 1, 0)  AS `is_rejected`,
            if(page.multistate & 1024, 1, 0) AS `is_protected`,
            if(page.multistate & 16, 1, 0)   AS `is_balance_registered`,

            'search'                         AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            users.business_unit              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `search_on_site_campaign` page
            JOIN site             ON site.id  = page.domain_id
            JOIN users            ON users.id = page.owner_id
            LEFT JOIN all_sources ON all_sources.local_id = page.domain_id AND all_sources.model = 'site'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'mobile_app_settings'            AS `model`,
            page.context_page_id             AS `page_id`,
            page.caption                     AS `caption`,
            page.application_id              AS `domain_id`,
            all_sources.id                   AS `source_id`,
            app.store_id                     AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            0                                AS `is_readonly`,
            if(page.multistate & 128, 1, 0)  AS `is_blocked`,
            if(page.multistate & 4096, 1, 0) AS `is_rejected`,
            if(page.multistate & 256, 1, 0)  AS `is_protected`,
            if(page.multistate & 32, 1, 0)   AS `is_balance_registered`,

            'mobile'                         AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            users.business_unit              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `mobile_app_settings` page
            JOIN mobile_app app   ON app.id   = page.application_id
            JOIN users            ON users.id = page.`owner_id`
            LEFT JOIN all_sources ON all_sources.local_id = page.application_id AND all_sources.model = 'mobile_app'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'video_an_site'                  AS `model`,
            page.id                          AS `page_id`,
            page.caption                     AS `caption`,
            page.id                          AS `domain_id`,
            all_sources.id                   AS `source_id`,
            page.domain                      AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            0                                AS `is_readonly`,
            if(page.multistate & 1024, 1, 0) AS `is_blocked`,
            if(page.multistate & 512, 1, 0)  AS `is_rejected`,
            if(page.multistate & 32, 1, 0)   AS `is_protected`,
            1                                AS `is_balance_registered`,

            'video'                          AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            users.business_unit              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `video_an_site` page
            JOIN `users`          ON users.`id` = page.`owner_id`
            LEFT JOIN all_sources ON all_sources.local_id = page.id AND all_sources.model = 'video_an_site'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'indoor'                         AS `model`,
            page.page_id                     AS `page_id`,
            JSON_UNQUOTE(page.caption)       AS `caption`,
            page.id                          AS `domain_id`,
            all_sources.id                   AS `source_id`,
            'indoor.ya'                      AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 2, 1, 0)    AS `is_stopped`,
            if(page.multistate & 4, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 4096, 1, 0) AS `is_blocked`,
            if(page.multistate & 2048, 1, 0) AS `is_rejected`,
            if(page.multistate & 64, 1, 0)   AS `is_protected`,
            if(page.multistate & 256, 1, 0)  AS `is_balance_registered`,

            'video'                          AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            users.business_unit              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `indoor` page
            JOIN users            ON users.id = page.owner_id
            LEFT JOIN all_sources ON all_sources.local_id = page.id AND all_sources.model = 'indoor'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'outdoor'                        AS `model`,
            page.page_id                     AS `page_id`,
            JSON_UNQUOTE(page.caption)       AS `caption`,
            page.id                          AS `domain_id`,
            all_sources.id                   AS `source_id`,
            'outdoor.ya'                     AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 2, 1, 0)    AS `is_stopped`,
            if(page.multistate & 4, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 4096, 1, 0) AS `is_blocked`,
            if(page.multistate & 2048, 1, 0) AS `is_rejected`,
            if(page.multistate & 64, 1, 0)   AS `is_protected`,
            if(page.multistate & 256, 1, 0)  AS `is_balance_registered`,

            'video'                          AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            users.business_unit              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `outdoor` page
            JOIN users            ON users.id = page.owner_id
            LEFT JOIN all_sources ON all_sources.local_id = page.id AND all_sources.model = 'outdoor'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'internal_context_on_site_campaign' AS `model`,
            page.id                          AS `page_id`,
            site.domain                      AS `caption`,
            page.site_id                     AS `domain_id`,
            all_sources.id                   AS `source_id`,
            site.domain                      AS `domain`,
            page.multistate                  AS `multistate`,

            '1'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            0                                AS `is_blocked`,
            0                                AS `is_rejected`,
            if(page.multistate & 128, 1, 0)  AS `is_protected`,
            if(page.multistate & 16, 1, 0)   AS `is_balance_registered`,

            'context'                        AS `product_type`,
            '54519301'                       AS `owner_id`,
            'adinside'                       AS `login`,
            '944028'                         AS `client_id`,
            '0'                              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `internal_context_on_site_campaign` page
            JOIN internal_site site ON site.id = page.site_id
            LEFT JOIN all_sources   ON all_sources.local_id = page.site_id AND all_sources.model = 'internal_site'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'internal_search_on_site_campaign' AS `model`,
            page.id                          AS `page_id`,
            site.domain                      AS `caption`,
            page.site_id                     AS `domain_id`,
            all_sources.id                   AS `source_id`,
            site.domain                      AS `domain`,
            page.multistate                  AS `multistate`,

            '1'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            0                                AS `is_blocked`,
            0                                AS `is_rejected`,
            if(page.multistate & 128, 1, 0)  AS `is_protected`,
            if(page.multistate & 16, 1, 0)   AS `is_balance_registered`,

            'search'                         AS `product_type`,
            '54519301'                       AS `owner_id`,
            'adinside'                       AS `login`,
            '944028'                         AS `client_id`,
            '0'                              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `internal_search_on_site_campaign` page
            JOIN internal_site site ON site.id = page.site_id
            LEFT JOIN all_sources   ON all_sources.local_id = page.site_id AND all_sources.model = 'internal_site'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'internal_mobile_app'            AS `model`,
            page.id                          AS `page_id`,
            page.caption                     AS `caption`,
            page.id                          AS `domain_id`,
            all_sources.id                   AS `source_id`,
            page.store_id                    AS `domain`,
            page.multistate                  AS `multistate`,

            '1'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            0                                AS `is_readonly`,
            0                                AS `is_blocked`,
            0                                AS `is_rejected`,
            if(page.multistate & 32, 1, 0)   AS `is_protected`,
            1                                AS `is_balance_registered`,

            'mobile'                         AS `product_type`,
            '54519301'                       AS `owner_id`,
            'adinside'                       AS `login`,
            '944028'                         AS `client_id`,
            '0'                              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `internal_mobile_app` page
            LEFT JOIN all_sources ON all_sources.local_id = page.id AND all_sources.model = 'internal_mobile_app'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'ssp_mobile_app_settings'        AS `model`,
            page.page_id                     AS `page_id`,
            app.bundle_id                    AS `caption`,
            app.id                           AS `domain_id`,
            all_sources.id                   AS `source_id`,
            app.bundle_id                    AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 128, 1, 0)  AS `is_blocked`,
            if(page.multistate & 512, 1, 0)  AS `is_rejected`,
            if(page.multistate & 1024, 1, 0) AS `is_protected`,
            if(page.multistate & 16, 1, 0)   AS `is_balance_registered`,

            'mobile'                         AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            seller.client_id                 AS `client_id`,
            '0'                              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `ssp_mobile_app_settings` page
            JOIN ssp_link_mobile_app AS link   ON link.mobile_app_id = page.id
            JOIN ssp_application     AS app    ON app.id = link.application_id
            JOIN ssp_seller          AS seller ON seller.id = link.seller_id
            JOIN users                         ON users.client_id = seller.client_id
            LEFT JOIN all_sources              ON all_sources.local_id = app.id AND all_sources.model = 'ssp_application'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'ssp_context_on_site_campaign'   AS `model`,
            page.page_id                     AS `page_id`,
            site.domain                      AS `caption`,
            site.id                          AS `domain_id`,
            all_sources.id                   AS `source_id`,
            site.domain                      AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 128, 1, 0)  AS `is_blocked`,
            if(page.multistate & 512, 1, 0)  AS `is_rejected`,
            if(page.multistate & 1024, 1, 0) AS `is_protected`,
            if(page.multistate & 16, 1, 0)   AS `is_balance_registered`,

            'context'                        AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            seller.client_id                 AS `client_id`,
            '0'                              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `ssp_context_on_site_campaign` page
            JOIN ssp_link_context_rtb AS link   ON link.context_rtb_id = page.id
            JOIN ssp_site             AS site   ON site.id = link.site_id
            JOIN ssp_seller           AS seller ON seller.id = link.seller_id
            JOIN users                          ON users.client_id = seller.client_id
            LEFT JOIN all_sources               ON all_sources.local_id = site.id AND all_sources.model = 'ssp_site'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'ssp_video_an_site'              AS `model`,
            page.page_id                     AS `page_id`,
            app.bundle_id                    AS `caption`,
            app.id                           AS `domain_id`,
            all_sources.id                   AS `source_id`,
            app.bundle_id                    AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 128, 1, 0)  AS `is_blocked`,
            if(page.multistate & 512, 1, 0)  AS `is_rejected`,
            if(page.multistate & 1024, 1, 0) AS `is_protected`,
            if(page.multistate & 16, 1, 0)   AS `is_balance_registered`,

            'video'                          AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            '0'                              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `ssp_video_an_site` page
            JOIN ssp_link_video_app  AS link   ON link.video_app_id = page.id
            JOIN ssp_application     AS app    ON app.id = link.application_id
            JOIN ssp_seller          AS seller ON seller.id = link.seller_id
            JOIN users                         ON users.client_id = seller.client_id
            LEFT JOIN all_sources              ON all_sources.local_id = app.id AND all_sources.model = 'ssp_application'
    UNION ALL
        SELECT
            page.id                          AS `id`,
            'distribution_campaign'          AS `model`,
            page.page_id                     AS `page_id`,
            page.caption                     AS `caption`,
            '0'                              AS `domain_id`,
            all_sources.id                   AS `source_id`,
            ''                               AS `domain`,
            page.multistate                  AS `multistate`,

            '0'                              AS `is_internal`,
            if(page.multistate & 1, 1, 0)    AS `is_working`,
            if(page.multistate & 4, 1, 0)    AS `is_stopped`,
            if(page.multistate & 8, 1, 0)    AS `is_deleted`,
            if(page.multistate & 32, 1, 0)   AS `is_readonly`,
            if(page.multistate & 128, 1, 0)  AS `is_blocked`,
            if(page.multistate & 512, 1, 0)  AS `is_rejected`,
            if(page.multistate & 1024, 1, 0) AS `is_protected`,
            1                                AS `is_balance_registered`,

            'distribution'                   AS `product_type`,
            users.id                         AS `owner_id`,
            users.login                      AS `login`,
            users.client_id                  AS `client_id`,
            users.business_unit              AS `business_unit`,

            page.create_date,
            page.update_time,
            page.send_time

        FROM `distribution_campaign` page
            JOIN `users`          ON users.`id` = page.`owner_id`
            LEFT JOIN all_sources ON all_sources.local_id = page.id AND all_sources.model = 'distribution_campaign';
