You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

161 lines
4.8 KiB

DROP VIEW IF EXISTS `gm_settings_view`;
DROP VIEW IF EXISTS `gm_subsettings_view`;
DROP VIEW IF EXISTS `gm_raw_subsettings_view_for_bo`;
DROP VIEW IF EXISTS `gm_events_affected_by_latest_mod_settings_view`;
DROP VIEW IF EXISTS `gm_evscheds_affected_by_latest_mod_settings_view`;
--
-- Structure for view `gm_settings_view`
-- this view shows the settings but includes a validation
--
CREATE VIEW gm_settings_view AS
SELECT gm_id,
gm_mod_stat,
CASE WHEN gm_mod_stat = 0 THEN 0 ELSE noshow_psub_stat END AS noshow_psub_stat,
CASE WHEN gm_mod_stat = 0 THEN 0 ELSE res_psub_stat END AS res_psub_stat,
(CASE WHEN gm_mod_stat = 0 THEN 0 ELSE
CASE WHEN (noshow_psub_stat = 1 OR res_psub_stat = 1) THEN event_cat_stat
ELSE 0 END
END) AS event_cat_stat,
(CASE WHEN gm_mod_stat = 0 THEN 0 ELSE
CASE WHEN (noshow_psub_stat = 1 OR res_psub_stat = 1) THEN event_loc_stat
ELSE 0 END
END) AS event_loc_stat,
(CASE WHEN gm_mod_stat = 0 THEN 0 ELSE
CASE WHEN (noshow_psub_stat = 1 OR res_psub_stat = 1) THEN event_month_stat
ELSE 0 END
END) AS event_month_stat,
CASE WHEN gm_mod_stat = 0 THEN 0 ELSE flex_mod_stat END AS flex_mod_stat,
date_created,
(
CASE WHEN gm_id IN((
SELECT evmod.gm_id
FROM gm_evsched_setting evmod
WHERE (evmod.gm_id = gm.gm_id))) THEN 1
ELSE 0
END
) AS is_used
from global_moderation gm;
-- --------------------------------------------------------
--
-- Structure for view `gm_subsettings_view`
-- Subsettings that contain some validations
--
CREATE VIEW gm_subsettings_view AS
SELECT gm_id,
CASE WHEN noshow_psub_stat = 0 THEN NULL
ELSE gnp.max_noshow END AS max_noshow,
CASE WHEN noshow_psub_stat = 0 THEN NULL
ELSE gnp.nshow_period END AS nshow_period,
CASE WHEN res_psub_stat = 0 THEN NULL
ELSE grp.max_res END AS max_res,
CASE WHEN res_psub_stat = 0 THEN NULL
ELSE grp.res_period_type END AS res_period_type,
CASE WHEN event_cat_stat = 0 THEN NULL ELSE
(SELECT GROUP_CONCAT(event_cat,'') FROM gm_event_cat WHERE gm_id = gmv.gm_id GROUP BY gm_id)
END AS event_cats,
CASE WHEN event_loc_stat = 0 THEN NULL ELSE
(SELECT GROUP_CONCAT(event_location,'') FROM gm_event_loc WHERE gm_id = gmv.gm_id GROUP BY gm_id)
END AS locations,
CASE WHEN event_month_stat = 0 THEN NULL ELSE
(SELECT GROUP_CONCAT(event_month,'') FROM gm_event_month WHERE gm_id = gmv.gm_id GROUP BY gm_id)
END AS months,
CASE WHEN flex_mod_stat = 0 THEN NULL
ELSE gfm.hrs_bef_event_closes END AS hrs_bef_event_closes,
CASE WHEN flex_mod_stat = 0 THEN NULL
ELSE gfm.places_volume END AS places_volume,
is_used
FROM gm_settings_view gmv
LEFT JOIN gm_nshow_psubs gnp USING (gm_id)
LEFT JOIN gm_res_psubs grp USING (gm_id)
LEFT JOIN gm_flex_mod gfm USING (gm_id)
GROUP BY gm_id;
--
-- Structure for view `gm_raw_subsettings_view_for_bo`
-- Raw sub settings data, from actual tables, no validation/unfiltered
--
CREATE VIEW gm_raw_subsettings_view_for_bo AS
SELECT gm_id,
gnp.max_noshow, gnp.nshow_period ,
grp.max_res, grp.res_period_type,
(SELECT GROUP_CONCAT(event_cat,'') FROM gm_event_cat WHERE gm_id = gm.gm_id GROUP BY gm_id) AS event_cats,
(SELECT GROUP_CONCAT(event_location,'') FROM gm_event_loc WHERE gm_id = gm.gm_id GROUP BY gm_id) AS locations,
(SELECT GROUP_CONCAT(event_month,'') FROM gm_event_month WHERE gm_id = gm.gm_id GROUP BY gm_id) AS months,
gfm.hrs_bef_event_closes, gfm.places_volume
FROM global_moderation gm
LEFT JOIN gm_nshow_psubs gnp USING (gm_id)
LEFT JOIN gm_res_psubs grp USING (gm_id)
LEFT JOIN gm_flex_mod gfm USING (gm_id)
GROUP BY gm_id;
--
-- Structure for view `gm_events_affected_by_latest_mod_settings_view`
-- List of events affected by current global moderation settings
-- But settings are not yet applied to them
--
CREATE VIEW gm_evscheds_affected_by_latest_mod_settings_view AS
SELECT
(SELECT MAX(gm_id)
FROM gm_settings_view
) latest_gm_sett,
evsched.event_schedule_id,
ev.event_id, ev.title,
ev.event_type_id event_cat,
(CASE
WHEN ev.use_different_address_per_date = 0 THEN ev.city_location
ELSE evsched.city_location
END) AS event_loc,
DATE_FORMAT(evsched.start_date_time, '%c') event_month
FROM event_schedule evsched
INNER JOIN event ev ON (ev.event_id = evsched.event_id AND ev.event_category IN ('REGULAR_EVENT'))
HAVING
event_cat IN (
SELECT event_cat
FROM gm_subsettings_view
WHERE event_cats REGEXP CONCAT('[[:<:]]',event_cat,'[[:>:]]')
AND gm_id = latest_gm_sett
)
OR
event_loc IN (
SELECT event_loc
FROM gm_subsettings_view
WHERE locations REGEXP CONCAT('[[:<:]]',event_loc,'[[:>:]]')
AND gm_id = latest_gm_sett
)
OR
event_month IN (
SELECT event_month
FROM gm_subsettings_view
WHERE months REGEXP CONCAT('[[:<:]]',event_month,'[[:>:]]')
AND gm_id = latest_gm_sett
)