USE partsltd_prod; -- Permanent Temp Tables DROP TABLE IF EXISTS partsltd_prod.tmp_ph_Calc_User; DROP TABLE IF EXISTS partsltd_prod.tmp_core_Msg_Error; DROP TABLE IF EXISTS partsltd_prod.tmp_ph_User; DROP TABLE IF EXISTS partsltd_prod.tmp_ph_User_Role_Link; -- Permanent Tables DROP TABLE IF EXISTS partsltd_prod.PH_Contact_Form_Temp; DROP TABLE IF EXISTS partsltd_prod.PH_Contact_Form_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_Contact_Form; DROP TABLE IF EXISTS partsltd_prod.PH_Contact_Form_Change_Set; DROP TABLE IF EXISTS partsltd_prod.PH_Calc_User_Temp; DROP TABLE IF EXISTS partsltd_prod.PH_User_Role_Link_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_User_Role_Link; DROP TABLE IF EXISTS partsltd_prod.PH_Role_Permission_Link_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_Role_Permission_Link; DROP TABLE IF EXISTS partsltd_prod.PH_Role_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_Role; DROP TABLE IF EXISTS partsltd_prod.PH_User_Temp; DROP TABLE IF EXISTS partsltd_prod.PH_User_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_User; DROP TABLE IF EXISTS partsltd_prod.PH_Permission_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_Permission; DROP TABLE IF EXISTS partsltd_prod.PH_Permission_Group_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_Permission_Group; DROP TABLE IF EXISTS partsltd_prod.PH_Access_Level_Audit; DROP TABLE IF EXISTS partsltd_prod.PH_Access_Level; DROP TABLE IF EXISTS partsltd_prod.PH_User_Change_Set; DROP TABLE IF EXISTS partsltd_prod.CORE_Split_Key_Value_Pair_Csv_Temp; DROP TABLE IF EXISTS partsltd_prod.CORE_Split_Temp; DROP TABLE IF EXISTS partsltd_prod.CORE_Msg_Error_Type; -- Stored Procedures DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_test_get_many_contact_form; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_get_many_contact_form; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_test_save_contact_form; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_save_contact_form; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_clear_calc_user; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_calc_user; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_clear_split_key_value_pair_csv; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_split_key_value_pair_csv; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_clear_split; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_split; DROP PROCEDURE IF EXISTS partsltd_prod.p_clear_split_key_value_pair_csv; DROP PROCEDURE IF EXISTS partsltd_prod.p_split_key_value_pair_csv; DROP PROCEDURE IF EXISTS partsltd_prod.p_clear_split; DROP PROCEDURE IF EXISTS partsltd_prod.p_split; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_debug_timing_reporting; DROP PROCEDURE IF EXISTS partsltd_prod.p_debug_timing_reporting; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_validate_guid; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_validate_guid_test; USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'CORE_Msg_Error_Type' ; CREATE TABLE IF NOT EXISTS partsltd_prod.CORE_Msg_Error_Type ( id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY , code VARCHAR(50) NOT NULL , name VARCHAR(500) NOT NULL , description VARCHAR(1000) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'CORE_Split_Temp' ; CREATE TABLE IF NOT EXISTS partsltd_prod.CORE_Split_Temp ( guid BINARY(36) NOT NULL , display_order INT NOT NULL , substring VARCHAR(4000) NOT NULL ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'CORE_Split_Key_Value_Pair_Csv_Temp' ; CREATE TABLE IF NOT EXISTS partsltd_prod.CORE_Split_Key_Value_Pair_Csv_Temp ( guid BINARY(36) NOT NULL , id INT NOT NULL , key_column VARCHAR(4000) NULL , value_column VARCHAR(4000) NULL ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_User_Change_Set' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_User_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY , comment VARCHAR(500) , updated_last_on DATETIME , id_user_updated_last_by INT ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Access_Level' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Access_Level ( id_access_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY , code VARCHAR(50) , name VARCHAR(255) , priority INT NOT NULL , display_order INT NOT NULL , active BIT NOT NULL DEFAULT 1 ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Permission_Group' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Permission_Group ( id_group INT NOT NULL AUTO_INCREMENT PRIMARY KEY , code VARCHAR(50) , name VARCHAR(255) , display_order INT NOT NULL , active BIT NOT NULL DEFAULT 1 ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Permission' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Permission ( id_permission INT NOT NULL AUTO_INCREMENT PRIMARY KEY , code VARCHAR(50) , name VARCHAR(255) , id_permission_group INT NOT NULL , CONSTRAINT FK_PH_Permission_id_permission_group FOREIGN KEY (id_permission_group) REFERENCES partsltd_prod.PH_Permission_Group(id_group) , id_access_level_required INT NOT NULL , CONSTRAINT FK_PH_Permission_id_access_level_required FOREIGN KEY (id_access_level_required) REFERENCES partsltd_prod.PH_Access_Level(id_access_level) , display_order INT NOT NULL , active BIT NOT NULL DEFAULT 1 ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_User' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_User ( id_user INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_user_auth0 VARCHAR(200) , firstname VARCHAR(255) , surname VARCHAR(255) , email VARCHAR(254) , is_email_verified BIT NOT NULL DEFAULT 0 , is_super_user BIT NOT NULL DEFAULT 0 , active BIT NOT NULL DEFAULT 1 , created_on DATETIME , id_user_created_by INT , CONSTRAINT FK_PH_User_id_user_created_by FOREIGN KEY (id_user_created_by) REFERENCES partsltd_prod.PH_User(id_user) , id_change_set INT , CONSTRAINT FK_PH_User_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_User_Audit' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_User_Audit ( id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_user INT NOT NULL , CONSTRAINT FK_PH_User_Audit_id_user FOREIGN KEY (id_user) REFERENCES partsltd_prod.PH_User(id_user) , name_field VARCHAR(50) NOT NULL , value_prev VARCHAR(500) , value_new VARCHAR(500) , id_change_set INT NOT NULL , CONSTRAINT FK_PH_User_Audit_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_User_Temp' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_User_Temp ( id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_user INT NOT NULL , id_user_auth0 VARCHAR(200) , firstname VARCHAR(255) , surname VARCHAR(255) , email VARCHAR(254) , is_email_verified BIT , is_super_user BIT , active BIT , guid BINARY(36) NOT NULL ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Role' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Role ( id_role INT NOT NULL AUTO_INCREMENT PRIMARY KEY , code VARCHAR(50) , name VARCHAR(255) , display_order INT NOT NULL , active BIT NOT NULL DEFAULT 1 , created_on DATETIME , id_user_created_by INT , CONSTRAINT FK_PH_Role_id_user_created_by FOREIGN KEY (id_user_created_by) REFERENCES partsltd_prod.PH_User(id_user) , id_change_set INT , CONSTRAINT FK_PH_Role_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Role_Audit' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Role_Audit ( id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_role INT NOT NULL , CONSTRAINT FK_PH_Role_Audit_id_role FOREIGN KEY (id_role) REFERENCES partsltd_prod.PH_Role(id_role) , name_field VARCHAR(50) NOT NULL , value_prev VARCHAR(500) , value_new VARCHAR(500) , id_change_set INT NOT NULL , CONSTRAINT FK_PH_Role_Audit_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Role_Permission_Link' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Role_Permission_Link ( id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_role INT NOT NULL , CONSTRAINT FK_PH_Role_Permission_Link_id_role FOREIGN KEY (id_role) REFERENCES partsltd_prod.PH_Role(id_role) , id_permission INT NOT NULL , CONSTRAINT FK_PH_Role_Permission_Link_id_permission FOREIGN KEY (id_permission) REFERENCES partsltd_prod.PH_Permission(id_permission) , id_access_level INT NOT NULL , CONSTRAINT FK_PH_Role_Permission_Link_id_access_level FOREIGN KEY (id_access_level) REFERENCES partsltd_prod.PH_Access_Level(id_access_level) , active BIT NOT NULL DEFAULT 1 , created_on DATETIME , id_user_created_by INT , CONSTRAINT FK_PH_Role_Permission_Link_id_user_created_by FOREIGN KEY (id_user_created_by) REFERENCES partsltd_prod.PH_User(id_user) , id_change_set INT , CONSTRAINT FK_PH_Role_Permission_Link_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Role_Permission_Link_Audit'; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Role_Permission_Link_Audit ( id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_link INT NOT NULL , CONSTRAINT FK_PH_Role_Permission_Link_Audit_id_link FOREIGN KEY (id_link) REFERENCES partsltd_prod.PH_Role_Permission_Link(id_link) , name_field VARCHAR(50) NOT NULL , value_prev VARCHAR(500) , value_new VARCHAR(500) , id_change_set INT NOT NULL , CONSTRAINT FK_PH_Role_Permission_Link_Audit_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_User_Role_Link' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_User_Role_Link ( id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_user INT NOT NULL , CONSTRAINT FK_PH_User_Role_Link_id_user FOREIGN KEY (id_user) REFERENCES partsltd_prod.PH_User(id_user) , id_role INT NOT NULL , CONSTRAINT FK_PH_User_Role_Link_id_role FOREIGN KEY (id_role) REFERENCES partsltd_prod.PH_Role(id_role) , active BIT NOT NULL DEFAULT 1 , created_on DATETIME , id_user_created_by INT , CONSTRAINT FK_PH_User_Role_Link_id_user_created_by FOREIGN KEY (id_user_created_by) REFERENCES partsltd_prod.PH_User(id_user) , id_change_set INT , CONSTRAINT FK_PH_User_Role_Link_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_User_Role_Link_Audit' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_User_Role_Link_Audit ( id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_link INT NOT NULL , CONSTRAINT FK_PH_User_Role_Link_Audit_id_link FOREIGN KEY (id_link) REFERENCES partsltd_prod.PH_User_Role_Link(id_link) , name_field VARCHAR(50) NOT NULL , value_prev VARCHAR(500) , value_new VARCHAR(500) , id_change_set INT NOT NULL , CONSTRAINT FK_PH_User_Role_Link_Audit_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_User_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Calc_User_Temp' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Calc_User_Temp ( guid BINARY(36) NOT NULL , id_user INT , id_permission_required INT NOT NULL , CONSTRAINT FK_PH_Calc_User_Temp_id_permission_required FOREIGN KEY (id_permission_required) REFERENCES partsltd_prod.PH_Permission (id_permission) , priority_access_level_required INT NOT NULL , is_super_user BIT , priority_access_level_user INT , has_access BIT ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Contact_Form_Change_Set' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Contact_Form_Change_Set ( id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY , comment VARCHAR(500) , updated_last_on DATETIME , id_user_updated_last_by INT , CONSTRAINT FK_PH_Role_id_user_updated_last_by FOREIGN KEY (id_user_updated_last_by) REFERENCES partsltd_prod.PH_User(id_user) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Contact_Form' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Contact_Form ( id_contact_form INT NOT NULL AUTO_INCREMENT PRIMARY KEY , email VARCHAR(255) NOT NULL , name_contact VARCHAR(255) NOT NULL , name_company VARCHAR(255) NOT NULL , message TEXT NOT NULL , receive_marketing_communications BIT NOT NULL DEFAULT 0 , active BIT NOT NULL DEFAULT 1 , created_on DATETIME , id_user_created_by INT , CONSTRAINT FK_PH_Contact_Form_id_user_created_by FOREIGN KEY (id_user_created_by) REFERENCES partsltd_prod.PH_User(id_user) , id_change_set INT , CONSTRAINT FK_PH_Contact_Form_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_Contact_Form_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Contact_Form_Audit' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Contact_Form_Audit ( id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY , id_contact_form INT NOT NULL , CONSTRAINT FK_PH_Contact_Form_Audit_id_contact_form FOREIGN KEY (id_contact_form) REFERENCES partsltd_prod.PH_Contact_Form(id_contact_form) , name_field VARCHAR(50) NOT NULL , value_prev TEXT , value_new TEXT , id_change_set INT NOT NULL , CONSTRAINT FK_PH_Contact_Form_Audit_id_change_set FOREIGN KEY (id_change_set) REFERENCES partsltd_prod.PH_Contact_Form_Change_Set(id_change_set) ); USE partsltd_prod; SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'partsltd_prod' AND TABLE_NAME = 'PH_Contact_Form_Temp' ; CREATE TABLE IF NOT EXISTS partsltd_prod.PH_Contact_Form_Temp ( id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT , id_contact_form INT , email VARCHAR(255) , name_contact VARCHAR(255) , name_company VARCHAR(255) , message TEXT , receive_marketing_communications BIT , active BIT , guid BINARY(36) ); USE partsltd_prod; DROP TRIGGER IF EXISTS partsltd_prod.before_insert_PH_User_Change_Set; DELIMITER // CREATE TRIGGER partsltd_prod.before_insert_PH_User_Change_Set BEFORE INSERT ON partsltd_prod.PH_User_Change_Set FOR EACH ROW BEGIN IF NEW.updated_last_on <=> NULL THEN SET NEW.updated_last_on = NOW(); END IF; END // DELIMITER ; DELIMITER // CREATE TRIGGER partsltd_prod.before_update_PH_User_Change_Set BEFORE UPDATE ON partsltd_prod.PH_User_Change_Set FOR EACH ROW BEGIN IF NOT EXISTS(SELECT * FROM partsltd_prod.PH_User WHERE id_user = NEW.id_user_updated_last_by) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New Updated-Last-By User ID must be provided.'; END IF; END // DELIMITER ; USE partsltd_prod; DROP TRIGGER IF EXISTS partsltd_prod.before_insert_PH_User; DROP TRIGGER IF EXISTS partsltd_prod.before_update_PH_User; DELIMITER // CREATE TRIGGER partsltd_prod.before_insert_PH_User BEFORE INSERT ON partsltd_prod.PH_User FOR EACH ROW BEGIN SET NEW.created_on := IFNULL(NEW.created_on, NOW()); END // DELIMITER ; DELIMITER // CREATE TRIGGER partsltd_prod.before_update_PH_User BEFORE UPDATE ON partsltd_prod.PH_User FOR EACH ROW BEGIN IF OLD.id_change_set <=> NEW.id_change_set THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New change Set ID must be provided.'; END IF; INSERT INTO partsltd_prod.PH_User_Audit ( id_user, name_field, value_prev, value_new, id_change_set ) -- Changed id_user_auth0 SELECT NEW.id_user, 'id_user_auth0', OLD.id_user_auth0, NEW.id_user_auth0, NEW.id_change_set WHERE NOT (OLD.id_user_auth0 <=> NEW.id_user_auth0) UNION -- Changed firstname SELECT NEW.id_user, 'firstname', OLD.firstname, NEW.firstname, NEW.id_change_set WHERE NOT (OLD.firstname <=> NEW.firstname) UNION -- Changed surname SELECT NEW.id_user, 'surname', OLD.surname, NEW.surname, NEW.id_change_set WHERE NOT (OLD.surname <=> NEW.surname) UNION -- Changed email SELECT NEW.id_user, 'email', OLD.email, NEW.email, NEW.id_change_set WHERE NOT (OLD.email <=> NEW.email) UNION -- Changed is_email_verified SELECT NEW.id_user, 'is_email_verified', CONVERT(CONVERT(OLD.is_email_verified, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_email_verified, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.is_email_verified <=> NEW.is_email_verified) UNION -- Changed is_super_user SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.is_super_user <=> NEW.is_super_user) UNION -- Changed active SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.active <=> NEW.active) ; END // DELIMITER ; USE partsltd_prod; DROP TRIGGER IF EXISTS partsltd_prod.before_insert_PH_Role; DROP TRIGGER IF EXISTS partsltd_prod.before_update_PH_Role; DELIMITER // CREATE TRIGGER partsltd_prod.before_insert_PH_Role BEFORE INSERT ON partsltd_prod.PH_Role FOR EACH ROW BEGIN SET NEW.created_on := IFNULL(NEW.created_on, NOW()); END // DELIMITER ; DELIMITER // CREATE TRIGGER partsltd_prod.before_update_PH_Role BEFORE UPDATE ON partsltd_prod.PH_Role FOR EACH ROW BEGIN IF OLD.id_change_set <=> NEW.id_change_set THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New change Set ID must be provided.'; END IF; INSERT INTO partsltd_prod.PH_Role_Audit ( id_role, name_field, value_prev, value_new, id_change_set ) -- Changed code SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set WHERE NOT OLD.code <=> NEW.code UNION -- Changed name SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set WHERE NOT OLD.name <=> NEW.name UNION -- Changed active SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.active <=> NEW.active) UNION -- Changed display_order SELECT NEW.id_role, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set WHERE NOT OLD.display_order <=> NEW.display_order ; END // DELIMITER ; USE partsltd_prod; DROP TRIGGER IF EXISTS partsltd_prod.before_insert_PH_Role_Permission_Link; DROP TRIGGER IF EXISTS partsltd_prod.before_update_PH_Role_Permission_Link; DELIMITER // CREATE TRIGGER partsltd_prod.before_insert_PH_Role_Permission_Link BEFORE INSERT ON partsltd_prod.PH_Role_Permission_Link FOR EACH ROW BEGIN SET NEW.created_on := IFNULL(NEW.created_on, NOW()); END // DELIMITER ; DELIMITER // CREATE TRIGGER partsltd_prod.before_update_PH_Role_Permission_Link BEFORE UPDATE ON partsltd_prod.PH_Role_Permission_Link FOR EACH ROW BEGIN IF OLD.id_change_set <=> NEW.id_change_set THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New change Set ID must be provided.'; END IF; INSERT INTO partsltd_prod.PH_Role_Permission_Link_Audit ( id_link, name_field, value_prev, value_new, id_change_set ) -- Changed id_role SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set WHERE NOT OLD.id_role <=> NEW.id_role UNION -- Changed id_permission SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set WHERE NOT OLD.id_permission <=> NEW.id_permission UNION -- Changed id_access_level SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set WHERE NOT OLD.id_access_level <=> NEW.id_access_level UNION -- Changed active SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.active <=> NEW.active) ; END // DELIMITER ; USE partsltd_prod; DROP TRIGGER IF EXISTS partsltd_prod.before_insert_PH_User_Role_Link; DROP TRIGGER IF EXISTS partsltd_prod.before_update_PH_User_Role_Link; DELIMITER // CREATE TRIGGER partsltd_prod.before_insert_PH_User_Role_Link BEFORE INSERT ON partsltd_prod.PH_User_Role_Link FOR EACH ROW BEGIN SET NEW.created_on := IFNULL(NEW.created_on, NOW()); END // DELIMITER ; DELIMITER // CREATE TRIGGER partsltd_prod.before_update_PH_User_Role_Link BEFORE UPDATE ON partsltd_prod.PH_User_Role_Link FOR EACH ROW BEGIN IF OLD.id_change_set <=> NEW.id_change_set THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New change Set ID must be provided.'; END IF; INSERT INTO partsltd_prod.PH_User_Role_Link_Audit ( id_link, name_field, value_prev, value_new, id_change_set ) -- Changed id_user SELECT NEW.id_link, 'id_user', CONVERT(OLD.id_user, CHAR), CONVERT(NEW.id_user, CHAR), NEW.id_change_set WHERE NOT OLD.id_user <=> NEW.id_user UNION -- Changed id_role SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set WHERE NOT OLD.id_role <=> NEW.id_role UNION -- Changed active SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.active <=> NEW.active) ; END // DELIMITER ;USE partsltd_prod; DROP TRIGGER IF EXISTS partsltd_prod.before_insert_PH_Contact_Form_Change_Set; DELIMITER // CREATE TRIGGER partsltd_prod.before_insert_PH_Contact_Form_Change_Set BEFORE INSERT ON partsltd_prod.PH_Contact_Form_Change_Set FOR EACH ROW BEGIN IF NEW.updated_last_on <=> NULL THEN SET NEW.updated_last_on = NOW(); END IF; END // DELIMITER ; USE partsltd_prod; DROP TRIGGER IF EXISTS partsltd_prod.before_insert_PH_Contact_Form; DROP TRIGGER IF EXISTS partsltd_prod.before_update_PH_Contact_Form; DELIMITER // CREATE TRIGGER partsltd_prod.before_insert_PH_Contact_Form BEFORE INSERT ON partsltd_prod.PH_Contact_Form FOR EACH ROW BEGIN SET NEW.created_on := IFNULL(NEW.created_on, NOW()); END // DELIMITER ; DELIMITER // CREATE TRIGGER partsltd_prod.before_update_PH_Contact_Form BEFORE UPDATE ON partsltd_prod.PH_Contact_Form FOR EACH ROW BEGIN IF OLD.id_change_set <=> NEW.id_change_set THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'New change Set ID must be provided.'; END IF; INSERT INTO partsltd_prod.PH_Contact_Form_Audit ( id_contact_form, name_field, value_prev, value_new, id_change_set ) -- Changed email SELECT NEW.id_contact_form, 'email', OLD.email, NEW.email, NEW.id_change_set WHERE NOT OLD.email <=> NEW.email UNION -- Changed name_contact SELECT NEW.id_contact_form, 'name_contact', OLD.name_contact, NEW.name_contact, NEW.id_change_set WHERE NOT OLD.name_contact <=> NEW.name_contact UNION -- Changed name_company SELECT NEW.id_contact_form, 'name_company', OLD.name_company, NEW.name_company, NEW.id_change_set WHERE NOT OLD.name_company <=> NEW.name_company UNION -- Changed message SELECT NEW.id_contact_form, 'message', OLD.message, NEW.message, NEW.id_change_set WHERE NOT OLD.message <=> NEW.message UNION -- Changed receive_marketing_communications SELECT NEW.id_contact_form, 'receive_marketing_communications', CONVERT(CONVERT(OLD.receive_marketing_communications, SIGNED), CHAR), CONVERT(CONVERT(NEW.receive_marketing_communications, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.receive_marketing_communications <=> NEW.receive_marketing_communications) UNION -- Changed active SELECT NEW.id_contact_form, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set WHERE NOT (OLD.active <=> NEW.active) ; END // DELIMITER ; USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_validate_guid; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_validate_guid_test; DELIMITER // CREATE PROCEDURE partsltd_prod.p_core_validate_guid ( IN a_guid BINARY(36) ) BEGIN IF ISNULL(a_guid) THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'GUID is required.' ; END IF; END // DELIMITER ; DELIMITER // CREATE PROCEDURE partsltd_prod.p_core_validate_guid_test () BEGIN CALL partsltd_prod.p_core_validate_guid ( 'nips' ); CALL partsltd_prod.p_core_validate_guid ( NULL ); END // DELIMITER ; -- CALL partsltd_prod.p_core_validate_guid_test(); USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_debug_timing_reporting; DELIMITER // CREATE PROCEDURE partsltd_prod.p_core_debug_timing_reporting ( IN a_time_start TIMESTAMP(6) ) BEGIN /* PROCEDURE partsltd_prod.p_core_debug_timing_reporting Shared method timing reporting */ DECLARE v_time_end TIMESTAMP(6); SET v_time_end := CURRENT_TIMESTAMP(6); SELECT a_time_start , UNIX_TIMESTAMP(a_time_start) , MICROSECOND(a_time_start) / 1000 , v_time_end , UNIX_TIMESTAMP(v_time_end) , MICROSECOND(v_time_end) / 1000 , v_time_end - a_time_start AS timestamp_delta , UNIX_TIMESTAMP(v_time_end - a_time_start) AS UNIX_TIMESTAMP_timestamp_delta , MICROSECOND(v_time_end - a_time_start) AS MICROSECOND_timestamp_delta -- , TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H:%i:%s') AS time_difference , CONCAT( TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H hours, %i minutes, %s seconds'), ', ', TIMESTAMPDIFF(MICROSECOND, a_time_start, v_time_end) % 1000000 / 1000, ' milliseconds' ) AS time_difference ; END // DELIMITER ; /* CALL partsltd_prod.p_core_debug_timing_reporting ( CURRENT_TIMESTAMP(6) ); */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_split; DELIMITER // CREATE PROCEDURE partsltd_prod.p_core_split ( IN a_guid BINARY(36) , IN a_string LONGTEXT , IN a_separator VARCHAR(1000) -- IN a_allow_empty BIT , IN a_debug BIT ) BEGIN DECLARE v_has_string BIT; DECLARE v_has_separator BIT; DECLARE v_i_separator INT; DECLARE v_i_start INT; DECLARE v_i_end INT; DECLARE v_current_item VARCHAR(4000); DECLARE v_time_start TIMESTAMP(6); SET v_time_start := CURRENT_TIMESTAMP(6); SET a_string := IFNULL(a_string, ''); SET a_separator := IFNULL(a_separator, ''); SET a_debug := IFNULL(a_debug, 0); IF a_debug = 1 THEN SELECT a_guid , a_string , a_separator , a_debug ; END IF; CALL partsltd_prod.p_core_validate_guid ( a_guid ); DROP TABLE IF EXISTS tmp_Split_Split; CREATE TEMPORARY TABLE tmp_Split_Split ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, substring VARCHAR(4000) NOT NULL ); SET v_has_string = CASE WHEN a_string = '' THEN 0 ELSE 1 END; SET v_has_separator = CASE WHEN a_separator = '' THEN 0 ELSE 1 END; IF v_has_string THEN SET v_i_start = 1; SET v_i_end = LOCATE(',', a_string); WHILE v_i_end > 0 DO SET v_current_item = SUBSTRING(a_string, v_i_start, v_i_end - v_i_start); INSERT INTO tmp_Split_Split (substring) VALUES (v_current_item); SET v_i_start = v_i_end + 1; SET v_i_end = LOCATE(',', a_string, v_i_start); END WHILE; SET v_current_item = SUBSTRING(a_string, v_i_start); INSERT INTO tmp_Split_Split (substring) VALUES (TRIM(v_current_item)); END IF; IF EXISTS (SELECT * FROM tmp_Split_Split LIMIT 1) THEN START TRANSACTION; INSERT INTO partsltd_prod.CORE_Split_Temp ( guid , display_order , substring ) SELECT a_guid , display_order , substring FROM tmp_Split_Split ; COMMIT; END IF; DROP TABLE IF EXISTS tmp_Split_Split; IF a_debug = 1 THEN CALL partsltd_prod.p_core_debug_timing_reporting ( v_time_start ); END IF; END // DELIMITER ; /* CALL partsltd_prod.p_core_split ( 'nips' , 'noods, cheese ' -- a_string , ',' -- a_separator -- '0', -- a_allow_empty , 1 ); SELECT * FROM partsltd_prod.CORE_Split_Temp WHERE GUID = 'nips'; CALL partsltd_prod.p_core_clear_split_temp( 'nips' ); */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_clear_split; DELIMITER // CREATE PROCEDURE partsltd_prod.p_core_clear_split ( IN a_guid BINARY(36) ) BEGIN CALL partsltd_prod.p_core_validate_guid( a_guid ); START TRANSACTION; -- DROP TABLE IF EXISTS DELETE FROM partsltd_prod.CORE_Split_Temp WHERE GUID = a_guid ; COMMIT; END // DELIMITER ; /* CALL partsltd_prod.p_core_clear_split ( 'nips' ); */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_split_key_value_pair_csv; DELIMITER // CREATE PROCEDURE partsltd_prod.p_core_split_key_value_pair_csv ( IN a_guid BINARY(36) , IN a_string LONGTEXT , IN a_debug BIT ) BEGIN DECLARE v_has_string BIT; DECLARE v_current_item VARCHAR(4000); DECLARE v_time_start TIMESTAMP(6); SET v_time_start := CURRENT_TIMESTAMP(6); SET a_string := IFNULL(a_string, ''); SET a_debug := IFNULL(a_debug, 0); SET v_has_string = CASE WHEN a_string = '' THEN 0 ELSE 1 END; IF a_debug = 1 THEN SELECT a_guid , a_string , a_debug ; END IF; CALL partsltd_prod.p_core_validate_guid ( a_guid ); DROP TABLE IF EXISTS tmp_Input_Split_Key_Value_Pair_Csv; DROP TABLE IF EXISTS tmp_Split_Split_Key_Value_Pair_Csv; CREATE TEMPORARY TABLE tmp_Input_Split_Key_Value_Pair_Csv ( input_string TEXT ); CREATE TEMPORARY TABLE tmp_Split_Split_Key_Value_Pair_Csv ( id INT AUTO_INCREMENT PRIMARY KEY , key_column VARCHAR(4000) , value_column VARCHAR(4000) ); INSERT INTO tmp_Input_Split_Key_Value_Pair_Csv ( input_string ) VALUES ( a_string ); INSERT INTO tmp_Split_Split_Key_Value_Pair_Csv (key_column, value_column) SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.pair, ':', 1), ',', -1) AS key_column, SUBSTRING_INDEX(t.pair, ':', -1) AS value_column FROM ( SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(input_string, ',', n), ',', -1) pair FROM temp_input CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a CROSS JOIN (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ORDER BY n ) numbers WHERE n <= 1 + (LENGTH(input_string) - LENGTH(REPLACE(input_string, ',', ''))) ) t; IF EXISTS (SELECT * FROM tmp_Split_Split_Key_Value_Pair_Csv LIMIT 1) THEN START TRANSACTION; INSERT INTO partsltd_prod.CORE_Split_Key_Value_Pair_Csv_Temp ( guid , id , key_column , value_column ) SELECT a_guid , id , key_column , value_column FROM tmp_Split_Split_Key_Value_Pair_Csv ; COMMIT; END IF; DROP TEMPORARY TABLE IF EXISTS tmp_Input_Split_Key_Value_Pair_Csv; DROP TEMPORARY TABLE IF EXISTS tmp_Split_Split_Key_Value_Pair_Csv; IF a_debug = 1 THEN CALL partsltd_prod.p_core_debug_timing_reporting ( v_time_start ); END IF; END // DELIMITER ; /* CALL partsltd_prod.p_core_split_key_value_pair_csv ( 'nipsnipsnipsnipsnipsnipsnipsnipsnips' , '1:100,2:200,3:300,4:400' -- a_string , 1 ); SELECT * FROM partsltd_prod.CORE_Split_key_value_pair_csv_Temp WHERE GUID = 'nipsnipsnipsnipsnipsnipsnipsnipsnips'; CALL partsltd_prod.p_core_clear_split_key_value_pair_csv_temp( 'nipsnipsnipsnipsnipsnipsnipsnipsnips' ); */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_core_clear_split_key_value_pair_csv; DELIMITER // CREATE PROCEDURE partsltd_prod.p_core_clear_split_key_value_pair_csv ( IN a_guid BINARY(36) ) BEGIN CALL partsltd_prod.p_core_validate_guid( a_guid ); START TRANSACTION; -- DROP TABLE IF EXISTS DELETE FROM partsltd_prod.CORE_Split_Key_Value_Pair_Csv_Temp WHERE GUID = a_guid ; COMMIT; END // DELIMITER ; /* CALL partsltd_prod.p_core_clear_split_key_value_pair_csv ( 'nips' ); */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_user_eval; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_calc_user; DELIMITER // CREATE PROCEDURE partsltd_prod.p_ph_calc_user ( IN a_guid BINARY(36) , IN a_ids_user TEXT , IN a_get_inactive_user BIT , IN a_ids_permission VARCHAR(4000) , IN a_debug BIT ) BEGIN DECLARE v_has_filter_permission BIT; DECLARE v_has_filter_user BIT; DECLARE v_id_permission INT; DECLARE v_time_start TIMESTAMP(6); DECLARE v_ids_row_delete VARCHAR(500); DECLARE v_code_type_error_bad_data VARCHAR(200); DECLARE v_id_type_error_bad_data INT; DECLARE v_code_error_permission VARCHAR(200); DECLARE v_id_permission_required INT; DECLARE v_priority_access_level_required INT; DECLARE v_priority_access_level_view INT; SET v_time_start := CURRENT_TIMESTAMP(6); SET v_code_type_error_bad_data := (SELECT code FROM partsltd_prod.CORE_Msg_Error_Type WHERE code = 'BAD_DATA'); SET v_id_type_error_bad_data := (SELECT id_type FROM partsltd_prod.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data); SET v_code_error_permission := (SELECT code FROM partsltd_prod.CORE_Msg_Error_Type WHERE id_type = 2); SET v_priority_access_level_view := (SELECT priority FROM partsltd_prod.PH_Access_Level WHERE code = 'VIEW' LIMIT 1); CALL partsltd_prod.p_core_validate_guid ( a_guid ); SET a_ids_user := TRIM(IFNULL(a_ids_user, '')); SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0); SET a_ids_permission := TRIM(IFNULL(a_ids_permission, '')); SET a_debug := IFNULL(a_debug, 0); IF a_debug = 1 THEN SELECT a_guid , a_ids_user , a_get_inactive_user , a_ids_permission , a_debug ; END IF; DROP TABLE IF EXISTS tmp_Calc_User; DROP TABLE IF EXISTS tmp_User_Calc_User; DROP TABLE IF EXISTS tmp_Split_Calc_User; CREATE TEMPORARY TABLE tmp_Calc_User ( id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL , id_user INT NULL , id_permission_required INT NOT NULL , priority_access_level_required INT NOT NULL , is_super_user BIT NULL , priority_access_level_user INT NULL , has_access BIT ); CREATE TEMPORARY TABLE tmp_User_Calc_User ( id_user INT NOT NULL , is_super_user BIT NOT NULL -- , id_access_level INT , priority_access_level INT NOT NULL ); CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT , id_type INT NULL , code VARCHAR(50) NOT NULL , msg VARCHAR(4000) NOT NULL ); CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Calc_User ( substring VARCHAR(4000) NOT NULL , as_int INT NULL ); DELETE FROM tmp_Split_Calc_User; SET v_has_filter_user = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END; SET a_ids_permission = REPLACE(a_ids_permission, '|', ','); SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END; -- SET v_id_access_level_view = (SELECT id_access_level FROM partsltd_prod.PH_Access_Level WHERE code = 'VIEW' LIMIT 1); -- Permission IDs IF NOT v_has_filter_permission THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , 'Permission ID required.' ; ELSE CALL partsltd_prod.p_core_split(a_guid, a_ids_permission, ',', a_debug); INSERT INTO tmp_Split_Calc_User ( substring , as_int ) SELECT substring , CONVERT(substring, DECIMAL(10,0)) AS as_int FROM partsltd_prod.CORE_Split_Temp WHERE GUID = a_guid AND NOT ISNULL(substring) AND substring != '' ; CALL partsltd_prod.p_core_clear_split( a_guid ); -- Invalid or inactive IF EXISTS ( SELECT PERM.id_permission FROM tmp_Split_Calc_User t_S LEFT JOIN partsltd_prod.PH_Permission PERM ON t_S.as_int = PERM.id_permission WHERE ISNULL(t_S.as_int) OR ISNULL(PERM.id_permission) OR PERM.active = 0 ) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) FROM tmp_Split_Calc_User t_S LEFT JOIN partsltd_prod.PH_Permission PERM ON t_S.as_int = PERM.id_permission WHERE ISNULL(t_S.as_int) OR ISNULL(PERM.id_permission) OR PERM.active = 0 ; ELSE SELECT PERM.id_permission , PERM.id_access_level_required INTO v_id_permission_required , v_priority_access_level_required FROM tmp_Split_Calc_User t_S LEFT JOIN partsltd_prod.PH_Permission PERM ON t_S.as_int = PERM.id_permission INNER JOIN partsltd_prod.PH_Access_Level AL ON PERM.id_access_level_required = AL.id_access_level ORDER BY AL.priority ASC LIMIT 1 ; IF ISNULL(v_id_permission_required) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , 'Valid Permission ID required.' ; END IF; END IF; END IF; DELETE FROM tmp_Split_Calc_User; -- Users CALL partsltd_prod.p_core_split(a_guid, a_ids_user, ',', a_debug); INSERT INTO tmp_Split_Calc_User ( substring , as_int ) SELECT substring , CONVERT(substring, DECIMAL(10,0)) AS as_int FROM partsltd_prod.CORE_Split_Temp WHERE GUID = a_guid AND NOT ISNULL(substring) AND substring != '' ; CALL partsltd_prod.p_core_clear_split( a_guid ); -- Invalid or inactive IF EXISTS (SELECT U.id_user FROM tmp_Split_Calc_User t_S LEFT JOIN partsltd_prod.PH_User U ON t_S.as_int = U.id_user WHERE ISNULL(t_S.as_int) OR ISNULL(U.id_user) OR (a_get_inactive_user = 0 AND U.active = 0)) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) FROM tmp_Split_Calc_User t_S LEFT JOIN partsltd_prod.PH_User U ON t_S.as_int = U.id_user WHERE ISNULL(t_S.as_int) OR ISNULL(U.id_user) OR ( a_get_inactive_user = 0 AND U.active = 0 ) ; ELSE IF NOT EXISTS (SELECT * FROM tmp_Split_Calc_User) THEN INSERT INTO tmp_Split_Calc_User (substring, as_int) VALUES ( '', NULL ); END IF; IF a_debug = 1 THEN SELECT * FROM tmp_Split_Calc_User; END IF; INSERT INTO tmp_User_Calc_User ( id_user , is_super_user , priority_access_level ) SELECT U.id_user , IFNULL(U.is_super_user, 0) AS is_super_user , IFNULL(MIN(AL_U.priority), v_priority_access_level_view) AS priority_access_level FROM tmp_Split_Calc_User t_S INNER JOIN partsltd_prod.PH_User U ON t_S.as_int = U.id_user LEFT JOIN partsltd_prod.PH_User_Role_Link URL ON U.id_user = URL.id_user AND URL.active LEFT JOIN partsltd_prod.PH_Role_Permission_Link RPL ON URL.id_role = RPL.id_role AND RPL.active LEFT JOIN partsltd_prod.PH_Access_Level AL_U ON RPL.id_access_level = AL_U.id_access_level AND AL_U.active GROUP BY U.id_user ; INSERT INTO tmp_Calc_User ( id_user , id_permission_required , priority_access_level_required , priority_access_level_user , is_super_user ) SELECT t_UCU.id_user , v_id_permission_required , v_priority_access_level_required , t_UCU.priority_access_level AS priority_access_level_user , t_UCU.is_super_user AS is_super_user FROM tmp_User_Calc_User t_UCU ; END IF; DELETE FROM tmp_Split_Calc_User; -- Calculated fields UPDATE tmp_Calc_User t_CU SET t_CU.has_access = ( (t_CU.is_super_user = 1) OR (t_CU.priority_access_level_user <= t_CU.priority_access_level_required) ) ; -- Export data to staging table IF NOT EXISTS (SELECT * FROM tmp_Msg_Error) THEN START TRANSACTION; INSERT INTO partsltd_prod.PH_Calc_User_Temp ( guid , id_user , id_permission_required , priority_access_level_required , priority_access_level_user , is_super_user , has_access ) SELECT a_guid , t_CU.id_user , t_CU.id_permission_required , t_CU.priority_access_level_required , t_CU.priority_access_level_user , t_CU.is_super_user , t_CU.has_access FROM tmp_Calc_User t_CU ; COMMIT; END IF; IF a_debug = 1 THEN SELECT * FROM tmp_Msg_Error; SELECT * FROM tmp_Calc_User; SELECT * FROM tmp_User_Calc_User; SELECT * FROM partsltd_prod.PH_Calc_User_Temp WHERE GUID = a_guid; CALL partsltd_prod.p_ph_clear_calc_user ( a_guid, a_debug ); END IF; -- Clean up DROP TABLE IF EXISTS tmp_Calc_User; DROP TABLE IF EXISTS tmp_User_Calc_User; DELETE FROM tmp_Split_Calc_User; IF a_debug = 1 THEN CALL partsltd_prod.p_debug_timing_reporting( v_time_start ); END IF; END // DELIMITER ; /* CALL partsltd_prod.p_ph_calc_user ( 'chips ' -- a_guid , 1 -- a_ids_user , 0 -- a_get_inactive_user , '2' -- a_ids_permission , '1' -- a_ids_access_level , 0 -- a_debug ); CALL partsltd_prod.p_ph_calc_user ( 'chips ' -- a_guid , 1 -- a_ids_user , 0 -- a_get_inactive_user , '2' -- a_ids_permission , '1' -- a_ids_access_level , 0 -- a_debug ); */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_clear_calc_user; DELIMITER // CREATE PROCEDURE partsltd_prod.p_ph_clear_calc_user ( IN a_guid BINARY(36) , IN a_debug BIT ) BEGIN DECLARE v_time_start TIMESTAMP(6); SET v_time_start := CURRENT_TIMESTAMP(6); CALL partsltd_prod.p_core_validate_guid ( a_guid ); START TRANSACTION; DELETE FROM partsltd_prod.PH_Calc_User_Temp WHERE GUID = a_guid ; COMMIT; IF a_debug = 1 THEN CALL partsltd_prod.p_debug_timing_reporting( v_time_start ); END IF; END // DELIMITER ; /* CALL partsltd_prod.p_ph_clear_calc_user ( 'chips ' -- a_guid , 1 -- debug ); SELECT * FROM partsltd_prod.PH_Calc_User_Temp WHERE GUID = 'chips ' ; */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_save_contact_form; DELIMITER // CREATE PROCEDURE partsltd_prod.p_ph_save_contact_form ( IN a_comment VARCHAR(500), IN a_guid BINARY(36), IN a_id_user INT, IN a_debug BIT ) BEGIN DECLARE v_code_type_error_bad_data VARCHAR(100); DECLARE v_id_type_error_bad_data INT; DECLARE v_id_permission_contact_form_admin INT; DECLARE v_id_permission_contact_form_new INT; DECLARE v_id_change_set INT; DECLARE v_time_start TIMESTAMP(6); DECLARE v_can_admin BIT; DECLARE v_can_create BIT; DECLARE exit handler for SQLEXCEPTION BEGIN GET DIAGNOSTICS CONDITION 1 @sqlstate = RETURNED_SQLSTATE , @errno = MYSQL_ERRNO , @text = MESSAGE_TEXT ; ROLLBACK; CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT , id_type INT NULL , code VARCHAR(50) NOT NULL , msg VARCHAR(4000) NOT NULL ); INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT MET.id_type , @errno , @text FROM partsltd_prod.CORE_Msg_Error_Type MET WHERE MET.code = 'MYSQL_ERROR' ; SELECT * FROM tmp_Msg_Error; DROP TABLE IF EXISTS tmp_Msg_Error ; END; SET v_time_start := CURRENT_TIMESTAMP(6); SET v_code_type_error_bad_data := 'BAD_DATA'; SET v_id_type_error_bad_data := (SELECT id_type FROM partsltd_prod.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1); SET v_id_permission_contact_form_admin := (SELECT id_permission FROM partsltd_prod.PH_Permission P WHERE P.code = 'CONTACT_FORM_ADMIN' LIMIT 1); SET v_id_permission_contact_form_new := (SELECT id_permission FROM partsltd_prod.PH_Permission P WHERE P.code = 'CONTACT_FORM_NEW' LIMIT 1); CALL partsltd_prod.p_core_validate_guid ( a_guid ); DROP TABLE IF EXISTS tmp_Contact_Form; CREATE TEMPORARY TABLE tmp_Contact_Form ( id_contact_form INT NOT NULL , email VARCHAR(255) NOT NULL , name_contact VARCHAR(255) NOT NULL , name_company VARCHAR(255) NOT NULL , message TEXT NOT NULL , receive_marketing_communications BIT NOT NULL , active BIT NOT NULL , name_error VARCHAR(255) , is_new BIT NOT NULL ); CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT , id_type INT NULL , code VARCHAR(50) NOT NULL , msg VARCHAR(4000) NOT NULL ); -- Get data from Temp table INSERT INTO tmp_Contact_Form ( id_contact_form , email , name_contact , name_company , message , receive_marketing_communications , active , is_new ) SELECT CF_T.id_contact_form AS id_contact_form , IFNULL(CF_T.email, CF.email) AS code , IFNULL(CF_T.name_contact, CF.name_contact) AS name_contact , IFNULL(CF_T.name_company, CF.name_company) AS name_company , IFNULL(CF_T.message, CF.message) AS message , COALESCE(CF_T.receive_marketing_communications, CF.receive_marketing_communications, 0) AS receive_marketing_communications , COALESCE(CF_T.active, CF.active, 1) AS active , CASE WHEN IFNULL(CF_T.id_contact_form, 0) < 1 THEN 1 ELSE 0 END AS is_new FROM partsltd_prod.PH_Contact_Form_Temp CF_T LEFT JOIN partsltd_prod.PH_Contact_Form CF ON CF_T.id_contact_form = CF.id_contact_form WHERE CF_T.guid = a_guid ; UPDATE tmp_Contact_Form t_CF SET name_error = COALESCE(t_CF.email, t_CF.name_company, t_CF.name_contact, t_CF.message, '(No Contact Form)') ; -- Validation -- Missing mandatory fields -- email IF EXISTS (SELECT * FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.email) LIMIT 1) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , CONCAT('The following Contact Form(s) do not have an Email: ', GROUP_CONCAT(t_CF.name_error SEPARATOR ', ')) AS msg FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.email) ; END IF; -- name_contact IF EXISTS (SELECT * FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.name_contact) LIMIT 1) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , CONCAT('The following Contact Form(s) do not have a Contact Name: ', GROUP_CONCAT(t_CF.name_error SEPARATOR ', ')) AS msg FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.name_contact) ; END IF; -- name_company IF EXISTS (SELECT * FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.name_company) LIMIT 1) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , CONCAT('The following Contact Form(s) do not have a Company Name: ', GROUP_CONCAT(t_CF.name_error SEPARATOR ', ')) AS msg FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.name) ; END IF; -- message IF EXISTS (SELECT * FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.message) LIMIT 1) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , CONCAT('The following Contact Form(s) do not have a Message: ', GROUP_CONCAT(t_CF.name_error SEPARATOR ', ')) AS msg FROM tmp_Contact_Form t_CF WHERE ISNULL(t_CF.message) ; END IF; -- Permissions IF a_debug = 1 THEN SELECT a_guid , a_id_user , FALSE -- a_get_inactive_user , v_id_permission_contact_form_admin , v_id_permission_contact_form_new , 0 -- a_debug ; END IF; CALL partsltd_prod.p_ph_calc_user( a_guid , a_id_user , FALSE -- a_get_inactive_user , v_id_permission_contact_form_admin , 0 -- a_debug ); SELECT IFNULL(CU_T.has_access, 0) INTO v_can_admin FROM partsltd_prod.PH_Calc_User_Temp CU_T WHERE CU_T.GUID = a_guid LIMIT 1 ; CALL partsltd_prod.p_ph_clear_calc_user( a_guid , 0 -- a_debug ); CALL partsltd_prod.p_ph_calc_user( a_guid , a_id_user , FALSE -- a_get_inactive_user , v_id_permission_contact_form_new , 0 -- a_debug ); SELECT IFNULL(CU_T.has_access, 0) INTO v_can_create FROM partsltd_prod.PH_Calc_User_Temp CU_T WHERE CU_T.GUID = a_guid LIMIT 1 ; CALL partsltd_prod.p_ph_clear_calc_user( a_guid , 0 -- a_debug ); IF (v_can_create = 0 AND EXISTS(SELECT * FROM tmp_Contact_Form WHERE is_new = 1)) THEN DELETE t_ME FROM tmp_Msg_Error t_ME WHERE t_ME.id_type <> v_id_type_error_no_permission ; INSERT INTO tmp_Msg_Error ( id_type , code , msg ) VALUES ( v_id_type_error_no_permission , v_code_type_error_no_permission , 'You do not have permission to create new Contact Forms.' ) ; END IF; IF (v_can_admin = 0 AND EXISTS(SELECT * FROM tmp_Contact_Form WHERE is_new = 0)) THEN DELETE t_ME FROM tmp_Msg_Error t_ME WHERE t_ME.id_type <> v_id_type_error_no_permission ; INSERT INTO tmp_Msg_Error ( id_type , code , msg ) VALUES ( v_id_type_error_no_permission , v_code_type_error_no_permission , 'You do not have permission to admin Contact Forms.' ) ; END IF; IF EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN IF a_debug = 1 THEN SELECT * from tmp_Contact_Form; END IF; DELETE FROM tmp_Contact_Form; END IF; IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN START TRANSACTION; INSERT INTO partsltd_prod.PH_Contact_Form_Change_Set ( comment , id_user_updated_last_by , updated_last_on ) VALUES ( a_comment , a_id_user , v_time_start ) ; SET v_id_change_set := LAST_INSERT_ID(); UPDATE partsltd_prod.PH_Contact_Form CF INNER JOIN tmp_Contact_Form t_CF ON CF.id_contact_form = t_CF.id_contact_form AND t_CF.is_new = 0 SET CF.email = t_CF.email , CF.name_contact = t_CF.name_contact , CF.name_company = t_CF.name_company , CF.message = t_CF.message , CF.receive_marketing_communications = t_CF.receive_marketing_communications , CF.active = t_CF.active , CF.id_change_set = v_id_change_set ; INSERT INTO partsltd_prod.PH_Contact_Form ( email , name_contact , name_company , message , receive_marketing_communications , active , id_user_created_by , created_on ) SELECT t_CF.email AS email , t_CF.name_contact AS name_contact , t_CF.name_company AS name_company , t_CF.message AS message , t_CF.receive_marketing_communications AS receive_marketing_communications , t_CF.active AS active , a_id_user AS created_by , v_time_start AS created_on FROM tmp_Contact_Form t_CF WHERE t_CF.is_new = 1 AND t_CF.active = 1 ; COMMIT; END IF; START TRANSACTION; DELETE FROM partsltd_prod.PH_Contact_Form_Temp WHERE GUID = a_guid ; COMMIT; -- Errors SELECT * FROM tmp_Msg_Error t_ME INNER JOIN partsltd_prod.CORE_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; IF a_debug = 1 THEN SELECT * from tmp_Contact_Form; END IF; DROP TEMPORARY TABLE tmp_Contact_Form; DROP TEMPORARY TABLE tmp_Msg_Error; IF a_debug = 1 THEN CALL partsltd_prod.p_core_debug_timing_reporting ( v_time_start ); END IF; END // DELIMITER ; /* select * -- COUNT(*) -- delete from partsltd_prod.PH_Contact_Form_Temp ; CALL partsltd_prod.p_ph_save_product_CFategory ( 'nipples' , (SELECT GUID FROM partsltd_prod.PH_Contact_Form_Temp ORDER BY id_temp DESC LIMIT 1) , 1 , 1 ); select * -- COUNT(*) -- delete from partsltd_prod.PH_Contact_Form_Temp ; */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_test_save_contact_form; DELIMITER // CREATE PROCEDURE partsltd_prod.p_ph_test_save_contact_form () BEGIN DECLARE v_guid BINARY(36); DECLARE v_time_start TIMESTAMP(6); SET v_time_start := CURRENT_TIMESTAMP(6); SET v_guid := 'nipple_ripple_chipple_spittle_pickle'; -- 123456789012345678901234567890123456 SELECT 'Start of Test'; SELECT * FROM partsltd_prod.PH_Contact_Form ; SELECT * FROM partsltd_prod.PH_Contact_Form_Temp ; START TRANSACTION; INSERT INTO partsltd_prod.PH_Contact_Form_Temp ( id_contact_form , email , name_contact , name_company , message , guid , active ) /* VALUES ( -1 -- id_contact_form , 'edward.middletonsmith@gmail.com' -- email , 'Teddy' -- name_contact , 'PARTS Ltd' -- name_company , 'Sa dude' -- message , v_guid ) */ VALUES ( -1 -- id_contact_form , 'edward.middletonsmith@gmail.com' -- email , 'Teddy' -- name_contact , 'PARTS Ltd' -- name_company , 'hegrodorf is good' -- message , v_guid , 1 -- active ) ; COMMIT; SELECT * FROM partsltd_prod.PH_Contact_Form_Temp -- WHERE GUID = v_guid ; CALL partsltd_prod.p_ph_save_contact_form ( 'Test save Contact Form' -- comment , v_guid -- guid , 3 -- 1 -- id_user , 1 -- debug ); SELECT * FROM partsltd_prod.PH_Contact_Form ; SELECT * FROM partsltd_prod.PH_Contact_Form_Temp ; CALL partsltd_prod.p_debug_timing_reporting ( v_time_start ); END // DELIMITER ; /* SELECT 'Before Test'; SELECT * FROM partsltd_prod.PH_Contact_Form ; SELECT * FROM partsltd_prod.PH_Contact_Form_Temp ; CALL partsltd_prod.p_ph_test_save_contact_form (); SELECT 'After Test'; SELECT * FROM partsltd_prod.PH_Contact_Form ; SELECT * FROM partsltd_prod.PH_Contact_Form_Temp ; DELETE FROM partsltd_prod.PH_Contact_Form_Temp; DROP TABLE IF EXISTS tmp_Msg_Error; */ USE partsltd_prod; DROP PROCEDURE IF EXISTS partsltd_prod.p_ph_get_many_contact_form; DELIMITER // CREATE PROCEDURE partsltd_prod.p_ph_get_many_contact_form ( IN a_id_user INT , IN a_get_all_contact_form BIT , IN a_get_inactive_contact_form BIT , IN a_ids_contact_form VARCHAR(500) , IN a_debug BIT ) BEGIN DECLARE v_has_filter_contact_form BIT; DECLARE v_guid BINARY(36); DECLARE v_id_permission_contact_form_view INT; DECLARE v_id_minimum INT; DECLARE v_time_start TIMESTAMP(6); DECLARE v_can_view BIT; SET v_time_start := CURRENT_TIMESTAMP(6); SET v_guid := UUID(); SET v_id_permission_contact_form_view := (SELECT id_permission FROM partsltd_prod.PH_Permission WHERE code = 'CONTACT_FORM_ADMIN' LIMIT 1); SET a_id_user := IFNULL(a_id_user, 0); SET a_get_all_contact_form := IFNULL(a_get_all_contact_form, 0); SET a_get_inactive_contact_form := IFNULL(a_get_inactive_contact_form, 0); SET a_ids_contact_form := TRIM(IFNULL(a_ids_contact_form, '')); SET a_debug := IFNULL(a_debug, 0); IF a_debug = 1 THEN SELECT a_id_user , a_get_all_contact_form , a_get_inactive_contact_form , a_ids_contact_form , a_debug ; END IF; DROP TEMPORARY TABLE IF EXISTS tmp_Split; DROP TEMPORARY TABLE IF EXISTS tmp_Contact_Form; CREATE TEMPORARY TABLE tmp_Contact_Form ( id_contact_form INT NOT NULL ); CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT , id_type INT NULL , code VARCHAR(50) NOT NULL , msg VARCHAR(4000) NOT NULL ); CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split ( substring VARCHAR(4000) NOT NULL , as_int INT NULL ); DELETE FROM tmp_Split; CALL partsltd_prod.p_core_validate_guid ( v_guid ); SET v_has_filter_contact_form = CASE WHEN a_ids_contact_form = '' THEN 0 ELSE 1 END; -- Contact Forms IF v_has_filter_contact_form = 1 THEN CALL partsltd_prod.p_split(v_guid, a_ids_contact_form, ',', a_debug); INSERT INTO tmp_Split ( substring , as_int ) SELECT substring , CONVERT(substring, DECIMAL(10,0)) AS as_int FROM partsltd_prod.CORE_Split_Temp WHERE GUID = v_guid AND NOT ISNULL(substring) AND substring != '' ; CALL partsltd_prod.p_clear_split_temp( v_guid ); END IF; IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN IF EXISTS ( SELECT * FROM tmp_Split t_S LEFT JOIN partsltd_prod.PH_Contact_Form CF ON t_S.as_int = CF.id_contact_form WHERE ISNULL(t_S.as_int) OR ISNULL(CF.id_contact_form) OR ( CF.active = 0 AND a_get_inactive_contact_form = 0 ) ) THEN INSERT INTO tmp_Msg_Error ( id_type , code , msg ) SELECT v_id_type_error_bad_data , v_code_type_error_bad_data , CONCAT('Invalid or inactive Contact Form IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) FROM tmp_Split t_S LEFT JOIN partsltd_prod.PH_Contact_Form CF ON t_S.as_int = CF.id_contact_form WHERE ISNULL(t_S.as_int) OR ISNULL(CF.id_contact_form) OR ( CF.active = 0 AND a_get_inactive_contact_form = 0 ) ; ELSE INSERT INTO tmp_Contact_Form ( id_contact_form ) SELECT CF.id_contact_form FROM tmp_Split t_S RIGHT JOIN partsltd_prod.PH_Contact_Form CF ON t_S.as_int = CF.id_contact_form WHERE ( a_get_all_contact_form = 1 OR ( v_has_filter_contact_form = 1 AND NOT ISNULL(t_S.as_int) ) ) AND ( a_get_inactive_contact_form = 1 OR CF.active = 1 ) ; END IF; END IF; DELETE FROM tmp_Split; -- Permissions IF a_debug = 1 THEN SELECT v_guid , a_id_user , FALSE -- a_get_inactive_user , v_id_permission_contact_form_view , 0 -- a_debug ; END IF; CALL partsltd_prod.p_ph_calc_user( v_guid , a_id_user , FALSE -- a_get_inactive_user , v_id_permission_contact_form_view , 0 -- a_debug ); SELECT IFNULL(CU_T.has_access, 0) INTO v_can_view FROM partsltd_prod.PH_Calc_User_Temp CU_T WHERE CU_T.GUID = v_guid LIMIT 1 ; IF (v_can_view = 0) THEN DELETE t_ME FROM tmp_Msg_Error t_ME WHERE t_ME.id_type <> v_id_type_error_no_permission ; INSERT INTO tmp_Msg_Error ( id_type , code , msg ) VALUES ( v_id_type_error_no_permission , v_code_type_error_no_permission , 'You do not have permission to view Contact Forms.' ) ; END IF; CALL partsltd_prod.p_ph_clear_calc_user( v_guid , 0 -- a_debug ); IF v_can_view = 0 THEN IF a_debug = 1 THEN SELECT * FROM tmp_Contact_Form; END IF; DELETE FROM tmp_Contact_Form; END IF; -- Outputs -- Contact Forms SELECT t_CF.id_contact_form , CF.email , CF.name_contact , CF.name_company , CF.message , CF.active , v_can_view FROM tmp_Contact_Form t_CF INNER JOIN partsltd_prod.PH_Contact_Form CF ON t_CF.id_contact_form = CF.id_contact_form GROUP BY t_CF.id_contact_form ORDER BY CF.created_on DESC ; -- Errors SELECT * FROM tmp_Msg_Error t_ME INNER JOIN partsltd_prod.CORE_Msg_Error_Type MET ON t_ME.id_type = MET.id_type ; IF a_debug = 1 AND v_can_view = 1 THEN SELECT * FROM tmp_Contact_Form; END IF; DROP TEMPORARY TABLE IF EXISTS tmp_Split; DROP TEMPORARY TABLE IF EXISTS tmp_Contact_Form; IF a_debug = 1 THEN CALL partsltd_prod.p_core_debug_timing_reporting ( v_time_start ); END IF; END // DELIMITER ; /* CALL partsltd_prod.p_ph_get_many_contact_form ( 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user , 1 -- a_get_all_contact_form , 0 -- a_get_inactive_contact_form , '' -- a_ids_contact_form , 0 -- a_debug ); */ USE partsltd_prod; -- Error Message Types INSERT INTO partsltd_prod.CORE_Msg_Error_Type ( code , name , description ) VALUES ( 'BAD_DATA' , 'Invalid data' , 'Rubbish data' ) , ( 'NO_PERMISSION' , 'No permission' , 'Not authorised' ) , ( 'MYSQL_ERROR' , 'MySQL error' , 'MySQL execution error.' ) , ( 'WARNING' , 'Warning' , 'Non-breaking error.' ) ; -- Access Levels INSERT INTO partsltd_prod.PH_Access_Level ( display_order , code , name , priority ) VALUES ( 1 , 'VIEW' , 'View' , 3 ) , ( 2 , 'EDIT' , 'Edit' , 2 ) , ( 3 , 'ADMIN' , 'Admin' , 1 ) ; -- Permission Groups INSERT INTO partsltd_prod.PH_Permission_Group ( display_order , code , name ) VALUES ( 0 , 'CONTACT_FORM' , 'Contact Form' ) , ( 1 , 'USER' , 'Admin User' ) ; -- Permissions INSERT INTO partsltd_prod.PH_Permission ( display_order , code , name , id_permission_group , id_access_level_required ) VALUES ( 1 , 'CONTACT_FORM_NEW' , 'New Contact Form' , 1 , 3 ) , ( 1 , 'CONTACT_FORM_ADMIN' , 'Admin Contact Form' , 1 , 3 ) , ( 1 , 'CONTACT_FORM_CREATE' , 'Create Contact Form' , 1 , 1 ) ; -- Users INSERT INTO partsltd_prod.PH_User ( id_user_auth0 , firstname , surname , email , is_super_user , active ) VALUES ( 'auth0|6582b95c895d09a70ba10fef' -- id_user_auth0 , 'Teddy' -- firstname , 'Middleton-Smith' -- surname , 'edward.middletonsmith@gmail.com' -- email , 1 -- is_super_user , 1 -- active ) , ( 'auth0|672659014296b7f94a9bab45' -- id_user_auth0 , 'Tierney' -- firstname , 'Gullen' -- surname , 'tierneybailey13@gmail.com' -- email , 1 -- is_super_user , 1 -- active ) , ( NULL -- id_user_auth0 , 'Contact Form Bot' -- firstname , 'Bot' -- surname , 'teddy@partsltd.co.uk' -- email , 0 -- is_super_user , 1 -- active ) ; -- Roles INSERT INTO partsltd_prod.PH_Role ( display_order , code , name , id_user_created_by ) VALUES ( 1 , 'DIRECTOR' , 'Director' , 1 ) , ( 2 , 'USER' , 'User' , 1 ) ; -- Role Permission link INSERT INTO partsltd_prod.PH_Role_Permission_Link ( id_role , id_permission , id_access_level , id_user_created_by ) VALUES ( 1 , 1 , 3 , 1 ) , ( 1 , 2 , 3 , 1 ) , ( 1 , 3 , 3 , 1 ) , ( 2 , 1 , 1 , 1 ) , ( 2 , 2 , 1 , 1 ) , ( 2 , 3 , 1 , 1 ) ; -- User Role link INSERT INTO partsltd_prod.PH_User_Role_Link ( id_user , id_role , id_user_created_by ) VALUES ( 1 , 1 , 1 ) , ( 2 , 2 , 1 ) , ( 3 , 2 , 1 ) ; INSERT INTO partsltd_prod.PH_Contact_Form ( email , name_contact , name_company , message , id_user_created_by ) VALUES ( 'edward.middleton-smith@gmail.com' , 'Teddy Middleton-Smith' , 'PARTS Ltd' , 'Hello, I would like to enquire about your services.' , 1 ) ; -- Error Message type SELECT * FROM partsltd_prod.CORE_Msg_Error_Type; -- User Change Sets SELECT * FROM partsltd_prod.PH_User_Change_Set; -- Access Levels SELECT * FROM partsltd_prod.PH_Access_Level; -- Permission Groups SELECT * FROM partsltd_prod.PH_Permission_Group; -- Permissions SELECT * FROM partsltd_prod.PH_Permission; -- Users SELECT * FROM partsltd_prod.PH_User; SELECT * FROM partsltd_prod.PH_User_Audit; -- Roles SELECT * FROM partsltd_prod.PH_Role; SELECT * FROM partsltd_prod.PH_Role_Audit; -- Role Permission link SELECT * FROM partsltd_prod.PH_Role_Permission_Link; SELECT * FROM partsltd_prod.PH_Role_Permission_Link_Audit; -- User Role link SELECT * FROM partsltd_prod.PH_User_Role_Link; SELECT * FROM partsltd_prod.PH_User_Role_Link_Audit; -- Contact Form Change Sets SELECT * FROM partsltd_prod.PH_Contact_Form_Change_Set; -- Contact Forms SELECT * FROM partsltd_prod.PH_Contact_Form; SELECT * FROM partsltd_prod.PH_Contact_Form_Audit; SELECT * FROM partsltd_prod.PH_Contact_Form_Temp;