Feat: Architecture redesign for Assessments, Commands, Modalities, Training Techniques, Reinforcement Schedules, Distractions, and Assessment Responses.

This commit is contained in:
2025-09-06 12:13:16 +01:00
parent 12f5fc994f
commit 2da465935d
158 changed files with 14781 additions and 3477 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -44,21 +44,29 @@ DROP TABLE IF EXISTS fetchmetrics.DOG_Response_Quality_Metric_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Response_Quality_Metric_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Response_Quality_Metric;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Technique_Link_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Technique_Link;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link;
DROP TABLE IF EXISTS fetchmetrics.DOG_Bribe_User_Link_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Bribe_User_Link_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Bribe_User_Link;
DROP TABLE IF EXISTS fetchmetrics.DOG_Training_Technique_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Training_Technique_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Training_Technique;
DROP TABLE IF EXISTS fetchmetrics.DOG_Bribe_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Bribe_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Bribe;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Link_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Link_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Link;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction;
DROP TABLE IF EXISTS fetchmetrics.DOG_Reinforcement_Schedule_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Reinforcement_Schedule_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Reinforcement_Schedule;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction_Intensity_Level_User_Link_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Distraction_Intensity_Level_User_Link_Audit;
@@ -80,6 +88,10 @@ DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Type_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Type_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Type;
DROP TABLE IF EXISTS fetchmetrics.DOG_Lighting_Level_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Lighting_Level_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Lighting_Level;
@@ -128,10 +140,6 @@ DROP TABLE IF EXISTS fetchmetrics.DOG_Location_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Location_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Location;
DROP TABLE IF EXISTS fetchmetrics.DOG_Command_Modality_User_Link_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Command_Modality_User_Link_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Command_Modality_User_Link;
DROP TABLE IF EXISTS fetchmetrics.DOG_Command_Modality_Temp;
DROP TABLE IF EXISTS fetchmetrics.DOG_Command_Modality_Audit;
DROP TABLE IF EXISTS fetchmetrics.DOG_Command_Modality;

View File

@@ -0,0 +1,27 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Type'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Type (
id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, code VARCHAR(1000) NOT NULL
, name VARCHAR(1000) NOT NULL
, description VARCHAR(1000) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Assessment_Type_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES fetchmetrics.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Assessment_Type_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Type_Audit'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Type_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_assessment_type INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Type_Audit_id_assessment_type
FOREIGN KEY (id_assessment_type)
REFERENCES fetchmetrics.DOG_Assessment_Type(id_type)
, name_field VARCHAR(255) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Type_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,25 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Type_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Type_Temp'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Type_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(1000)
, name VARCHAR(1000)
, description VARCHAR(1000) NOT NULL
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
, guid BINARY(36)
);

View File

@@ -11,6 +11,16 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment (
id_assessment INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
/*
, id_assessment_group INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_assessment_group
FOREIGN KEY (id_assessment_group)
REFERENCES fetchmetrics.DOG_Assessment_Group(id_group)
*/
, id_assessment_type INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_assessment_type
FOREIGN KEY (id_assessment_type)
REFERENCES fetchmetrics.DOG_Assessment_Type(id_type)
, id_weather INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_weather
FOREIGN KEY (id_weather)
@@ -27,9 +37,12 @@ CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment (
, CONSTRAINT FK_DOG_Assessment_id_user_handler
FOREIGN KEY (id_user_handler)
REFERENCES fetchmetrics.DOG_User(id_user)
, name VARCHAR(1000) NOT NULL
, notes TEXT
, temperature_celcius DECIMAL(5, 2)
, difficulty_level DOUBLE
, start_on DATETIME
, end_on DATETIME
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT

View File

@@ -13,13 +13,18 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_assessment INT
-- , id_assessment_group INT
, id_assessment_type INT
, id_weather INT
, id_lighting_level INT
, id_location INT
, id_user_handler INT
, name VARCHAR(250)
, notes TEXT
, temperature_celcius DECIMAL(5, 2)
, difficulty_level DOUBLE
, start_on DATETIME
, end_on DATETIME
, active BIT
, does_meet_id_filters BIT

View File

@@ -0,0 +1,27 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Reinforcement_Schedule'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Reinforcement_Schedule (
id_reinforcement_schedule INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, code VARCHAR(250) NOT NULL
, name VARCHAR(250) NOT NULL
, description VARCHAR(1000) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Reinforcement_Schedule_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES fetchmetrics.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Reinforcement_Schedule_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Reinforcement_Schedule_Audit'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Reinforcement_Schedule_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_reinforcement_schedule INT NOT NULL
, CONSTRAINT FK_DOG_Reinforcement_Schedule_Audit_id_reinforcement_schedule
FOREIGN KEY (id_reinforcement_schedule)
REFERENCES fetchmetrics.DOG_Reinforcement_Schedule(id_reinforcement_schedule)
, name_field VARCHAR(255) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Reinforcement_Schedule_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,25 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_Reinforcement_Schedule_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Reinforcement_Schedule_Temp'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Reinforcement_Schedule_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_reinforcement_schedule INT
, code VARCHAR(250)
, name VARCHAR(250)
, description VARCHAR(1000) NOT NULL
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
, guid BINARY(36)
);

View File

@@ -5,28 +5,34 @@ SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Command_Modality_Link'
AND TABLE_NAME = 'DOG_Assessment_Command_Link'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link (
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, id_assessment INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_id_assessment
, CONSTRAINT FK_DOG_Assessment_Command_Link_id_assessment
FOREIGN KEY (id_assessment)
REFERENCES fetchmetrics.DOG_Assessment(id_assessment)
, id_command INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_id_command
, CONSTRAINT FK_DOG_Assessment_Command_Link_id_command
FOREIGN KEY (id_command)
REFERENCES fetchmetrics.DOG_Command(id_command)
/*
, id_command_modality INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_id_command_modality
, CONSTRAINT FK_DOG_Assessment_Command_Link_id_command_modality
FOREIGN KEY (id_command_modality)
REFERENCES fetchmetrics.DOG_Command_Modality(id_command_modality)
, id_bribe INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_id_bribe
, CONSTRAINT FK_DOG_Assessment_Command_Link_id_bribe
FOREIGN KEY (id_bribe)
REFERENCES fetchmetrics.DOG_Bribe(id_bribe)
*/
, id_reinforcement_schedule INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Link_id_reinforcement_schedule
FOREIGN KEY (id_reinforcement_schedule)
REFERENCES fetchmetrics.DOG_Reinforcement_Schedule(id_reinforcement_schedule)
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
@@ -36,11 +42,11 @@ CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link (
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_id_user_created_by
, CONSTRAINT FK_DOG_Assessment_Command_Link_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES fetchmetrics.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_id_change_set
, CONSTRAINT FK_DOG_Assessment_Command_Link_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Command_Link_Audit'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Link_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Link(id_link)
, name_field VARCHAR(255) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Link_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,31 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Link_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Command_Link_Temp'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_assessment INT
, id_command INT
, id_reinforcement_schedule INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
, guid BINARY(36)
);

View File

@@ -0,0 +1,27 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Training_Technique'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Training_Technique (
id_technique INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, code VARCHAR(1000) NOT NULL
, name VARCHAR(1000) NOT NULL
, description VARCHAR(1000) NOT NULL
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Training_Technique_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES fetchmetrics.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Training_Technique_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Training_Technique_Audit'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Training_Technique_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_training_technique INT NOT NULL
, CONSTRAINT FK_DOG_Training_Technique_Audit_id_training_technique
FOREIGN KEY (id_training_technique)
REFERENCES fetchmetrics.DOG_Training_Technique(id_technique)
, name_field VARCHAR(255) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Training_Technique_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,25 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_Training_Technique_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Training_Technique_Temp'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Training_Technique_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_technique INT
, code VARCHAR(1000)
, name VARCHAR(1000)
, description VARCHAR(1000) NOT NULL
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
, guid BINARY(36)
);

View File

@@ -0,0 +1,32 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Command_Technique_Link'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Technique_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, id_assessment_command_link INT NOT NULL
, CONSTRAINT FK_DOG_ACTL_id_assessment_command_link
FOREIGN KEY (id_assessment_command_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Link(id_link)
, id_training_technique INT NOT NULL
, CONSTRAINT FK_DOG_ACTL_id_training_technique
FOREIGN KEY (id_training_technique)
REFERENCES fetchmetrics.DOG_Training_Technique(id_technique)
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_ACTL_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES fetchmetrics.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_ACTL_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Command_Technique_Link_Audit'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Technique_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_ACTL_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Technique_Link(id_link)
, name_field VARCHAR(255) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_ACTL_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Command_Technique_Link_Temp'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_assessment_command_link INT
, id_training_technique INT
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
, guid BINARY(36)
);

View File

@@ -0,0 +1,32 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Command_Modality_Link'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link (
id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, id_assessment_command_link INT NOT NULL
, CONSTRAINT FK_DOG_ACML_id_assessment_command_link
FOREIGN KEY (id_assessment_command_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Link(id_link)
, id_command_modality INT NOT NULL
, CONSTRAINT FK_DOG_ACML_id_command_modality
FOREIGN KEY (id_command_modality)
REFERENCES fetchmetrics.DOG_Command_Modality(id_command_modality)
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_ACML_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES fetchmetrics.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_ACML_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -11,14 +11,14 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_link INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_Audit_id_link
, CONSTRAINT FK_DOG_ACML_Audit_id_link
FOREIGN KEY (id_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Modality_Link(id_link)
, name_field VARCHAR(255) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Command_Modality_Link_Audit_id_change_set
, CONSTRAINT FK_DOG_ACML_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -13,16 +13,8 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_link INT
, id_assessment INT
, id_command INT
, id_assessment_command_link INT
, id_command_modality INT
, id_bribe INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT

View File

@@ -13,10 +13,16 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Distraction (
id_distraction INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
/*
, id_assessment INT NOT NULL
, CONSTRAINT FK_DOG_Distraction_id_assessment
FOREIGN KEY (id_assessment)
REFERENCES fetchmetrics.DOG_Assessment(id_assessment)
*/
, id_assessment_command_link INT NOT NULL
, CONSTRAINT FK_DOG_Distraction_id_assessment_command_link
FOREIGN KEY (id_assessment_command_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Link(id_link)
, id_distraction_type INT NOT NULL
, CONSTRAINT FK_DOG_Distraction_id_distraction_type
FOREIGN KEY (id_distraction_type)

View File

@@ -13,7 +13,8 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Distraction_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_distraction INT
, id_assessment INT
-- , id_assessment INT
, id_assessment_command_link INT
, id_distraction_type INT
, id_intensity_level_emotional INT
, id_intensity_level_scent INT

View File

@@ -13,10 +13,10 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Response (
id_response INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, id_assessment_command_modality_link INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Response_id_assessment_command_modality_link
FOREIGN KEY (id_assessment_command_modality_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Modality_Link(id_link)
, id_assessment_command_link INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Response_id_assessment_command_link
FOREIGN KEY (id_assessment_command_link)
REFERENCES fetchmetrics.DOG_Assessment_Command_Link(id_link)
, id_response_quality_metric INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Response_id_response_quality_metric
FOREIGN KEY (id_response_quality_metric)

View File

@@ -13,7 +13,7 @@ WHERE
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Response_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_response INT
, id_assessment_command_modality_link INT
, id_assessment_command_link INT
, id_response_quality_metric INT
, id_obedience_level INT
, value_measured DOUBLE

View File

@@ -0,0 +1,50 @@
USE fetchmetrics;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Assessment_Type;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Assessment_Type;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_insert_DOG_Assessment_Type
BEFORE INSERT ON fetchmetrics.DOG_Assessment_Type
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_update_DOG_Assessment_Type
BEFORE UPDATE ON fetchmetrics.DOG_Assessment_Type
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 fetchmetrics.DOG_Assessment_Type_Audit (
id_type
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_type, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_type, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed description
SELECT NEW.id_type, 'description', OLD.description, NEW.description, NEW.id_change_set
WHERE NOT (OLD.description <=> NEW.description)
UNION
-- Changed active
SELECT NEW.id_type, '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 ;

View File

@@ -0,0 +1,88 @@
USE fetchmetrics;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Assessment;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Assessment;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_insert_DOG_Assessment
BEFORE INSERT ON fetchmetrics.DOG_Assessment
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_update_DOG_Assessment
BEFORE UPDATE ON fetchmetrics.DOG_Assessment
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 fetchmetrics.DOG_Assessment_Audit (
id_assessment
, name_field
, value_prev
, value_new
, id_change_set
)
/*
-- Changed id_assessment_group
SELECT NEW.id_assessment, 'id_assessment_group', CONVERT(OLD.id_assessment_group, CHAR), CONVERT(NEW.id_assessment_group, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment_group <=> NEW.id_assessment_group)
UNION
*/
-- Changed id_assessment_type
SELECT NEW.id_assessment, 'id_assessment_type', CONVERT(OLD.id_assessment_type, CHAR), CONVERT(NEW.id_assessment_type, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment_type <=> NEW.id_assessment_type)
UNION
-- Changed id_weather
SELECT NEW.id_assessment, 'id_weather', CONVERT(OLD.id_weather, CHAR), CONVERT(NEW.id_weather, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_weather <=> NEW.id_weather)
UNION
-- Changed id_lighting_level
SELECT NEW.id_assessment, 'id_lighting_level', CONVERT(OLD.id_lighting_level, CHAR), CONVERT(NEW.id_lighting_level, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_lighting_level <=> NEW.id_lighting_level)
UNION
-- Changed id_location
SELECT NEW.id_assessment, 'id_location', CONVERT(OLD.id_location, CHAR), CONVERT(NEW.id_location, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_location <=> NEW.id_location)
UNION
-- Changed id_user_handler
SELECT NEW.id_assessment, 'id_user_handler', CONVERT(OLD.id_user_handler, CHAR), CONVERT(NEW.id_user_handler, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_user_handler <=> NEW.id_user_handler)
UNION
-- Changed name
SELECT NEW.id_assessment, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed notes
SELECT NEW.id_assessment, 'notes', OLD.notes, NEW.notes, NEW.id_change_set
WHERE NOT (OLD.notes <=> NEW.notes)
UNION
-- Changed temperature_celcius
SELECT NEW.id_assessment, 'temperature_celcius', CONVERT(OLD.temperature_celcius, CHAR), CONVERT(NEW.temperature_celcius, CHAR), NEW.id_change_set
WHERE NOT (OLD.temperature_celcius <=> NEW.temperature_celcius)
UNION
-- Changed difficulty_level
SELECT NEW.id_assessment, 'difficulty_level', CONVERT(OLD.difficulty_level, CHAR), CONVERT(NEW.difficulty_level, CHAR), NEW.id_change_set
WHERE NOT (OLD.difficulty_level <=> NEW.difficulty_level)
UNION
-- Changed start_on
SELECT NEW.id_assessment, 'start_on', CONVERT(OLD.start_on, CHAR), CONVERT(NEW.start_on, CHAR), NEW.id_change_set
WHERE NOT (OLD.start_on <=> NEW.start_on)
UNION
-- Changed end_on
SELECT NEW.id_assessment, 'end_on', CONVERT(OLD.end_on, CHAR), CONVERT(NEW.end_on, CHAR), NEW.id_change_set
WHERE NOT (OLD.end_on <=> NEW.end_on)
UNION
-- Changed active
SELECT NEW.id_assessment, '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 ;

View File

@@ -0,0 +1,50 @@
USE fetchmetrics;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Reinforcement_Schedule;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Reinforcement_Schedule;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_insert_DOG_Reinforcement_Schedule
BEFORE INSERT ON fetchmetrics.DOG_Reinforcement_Schedule
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_update_DOG_Reinforcement_Schedule
BEFORE UPDATE ON fetchmetrics.DOG_Reinforcement_Schedule
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 fetchmetrics.DOG_Reinforcement_Schedule_Audit (
id_reinforcement_schedule
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_reinforcement_schedule, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_reinforcement_schedule, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed description
SELECT NEW.id_reinforcement_schedule, 'description', OLD.description, NEW.description, NEW.id_change_set
WHERE NOT (OLD.description <=> NEW.description)
UNION
-- Changed active
SELECT NEW.id_reinforcement_schedule, '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 ;

View File

@@ -1,12 +1,12 @@
USE fetchmetrics;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Assessment_Command_Modality_Link;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Assessment_Command_Modality_Link;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Assessment_Command_Link;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Assessment_Command_Link;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_insert_DOG_Assessment_Command_Modality_Link
BEFORE INSERT ON fetchmetrics.DOG_Assessment_Command_Modality_Link
CREATE TRIGGER fetchmetrics.before_insert_DOG_Assessment_Command_Link
BEFORE INSERT ON fetchmetrics.DOG_Assessment_Command_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
@@ -14,8 +14,8 @@ END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_update_DOG_Assessment_Command_Modality_Link
BEFORE UPDATE ON fetchmetrics.DOG_Assessment_Command_Modality_Link
CREATE TRIGGER fetchmetrics.before_update_DOG_Assessment_Command_Link
BEFORE UPDATE ON fetchmetrics.DOG_Assessment_Command_Link
FOR EACH ROW
BEGIN
IF OLD.id_change_set <=> NEW.id_change_set THEN
@@ -23,7 +23,7 @@ BEGIN
SET MESSAGE_TEXT = 'New change Set ID must be provided.';
END IF;
INSERT INTO fetchmetrics.DOG_Assessment_Command_Modality_Link_Audit (
INSERT INTO fetchmetrics.DOG_Assessment_Command_Link_Audit (
id_link
, name_field
, value_prev
@@ -37,6 +37,7 @@ BEGIN
-- Changed id_command
SELECT NEW.id_link, 'id_command', CONVERT(OLD.id_command, CHAR), CONVERT(NEW.id_command, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_command <=> NEW.id_command)
/*
UNION
-- Changed id_command_modality
SELECT NEW.id_link, 'id_command_modality', CONVERT(OLD.id_command_modality, CHAR), CONVERT(NEW.id_command_modality, CHAR), NEW.id_change_set
@@ -45,6 +46,11 @@ BEGIN
-- Changed id_bribe
SELECT NEW.id_link, 'id_bribe', CONVERT(OLD.id_bribe, CHAR), CONVERT(NEW.id_bribe, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_bribe <=> NEW.id_bribe)
*/
UNION
-- Changed id_reinforcement_schedule
SELECT NEW.id_link, 'id_reinforcement_schedule', CONVERT(OLD.id_reinforcement_schedule, CHAR), CONVERT(NEW.id_reinforcement_schedule, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_reinforcement_schedule <=> NEW.id_reinforcement_schedule)
UNION
-- Changed distance_from_handler_metres
SELECT NEW.id_link, 'distance_from_handler_metres', CONVERT(OLD.distance_from_handler_metres, CHAR), CONVERT(NEW.distance_from_handler_metres, CHAR), NEW.id_change_set

View File

@@ -0,0 +1,50 @@
USE fetchmetrics;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Training_Technique;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Training_Technique;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_insert_DOG_Training_Technique
BEFORE INSERT ON fetchmetrics.DOG_Training_Technique
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_update_DOG_Training_Technique
BEFORE UPDATE ON fetchmetrics.DOG_Training_Technique
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 fetchmetrics.DOG_Training_Technique_Audit (
id_training_technique
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed code
SELECT NEW.id_technique, 'code', OLD.code, NEW.code, NEW.id_change_set
WHERE NOT (OLD.code <=> NEW.code)
UNION
-- Changed name
SELECT NEW.id_technique, 'name', OLD.name, NEW.name, NEW.id_change_set
WHERE NOT (OLD.name <=> NEW.name)
UNION
-- Changed description
SELECT NEW.id_technique, 'description', OLD.description, NEW.description, NEW.id_change_set
WHERE NOT (OLD.description <=> NEW.description)
UNION
-- Changed active
SELECT NEW.id_technique, '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 ;

View File

@@ -0,0 +1,46 @@
USE fetchmetrics;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Assessment_Command_Technique_Link;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Assessment_Command_Technique_Link;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_insert_DOG_Assessment_Command_Technique_Link
BEFORE INSERT ON fetchmetrics.DOG_Assessment_Command_Technique_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_update_DOG_Assessment_Command_Technique_Link
BEFORE UPDATE ON fetchmetrics.DOG_Assessment_Command_Technique_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 fetchmetrics.DOG_Assessment_Command_Technique_Link_Audit (
id_link
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_assessment_command_link
SELECT NEW.id_link, 'id_assessment_command_link', CONVERT(OLD.id_assessment_command_link, CHAR), CONVERT(NEW.id_assessment_command_link, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment_command_link <=> NEW.id_assessment_command_link)
UNION
-- Changed id_training_technique
SELECT NEW.id_link, 'id_training_technique', CONVERT(OLD.id_training_technique, CHAR), CONVERT(NEW.id_training_technique, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_training_technique <=> NEW.id_training_technique)
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 ;

View File

@@ -0,0 +1,46 @@
USE fetchmetrics;
DROP TRIGGER IF EXISTS fetchmetrics.before_insert_DOG_Assessment_Command_Modality_Link;
DROP TRIGGER IF EXISTS fetchmetrics.before_update_DOG_Assessment_Command_Modality_Link;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_insert_DOG_Assessment_Command_Modality_Link
BEFORE INSERT ON fetchmetrics.DOG_Assessment_Command_Modality_Link
FOR EACH ROW
BEGIN
SET NEW.created_on := IFNULL(NEW.created_on, NOW());
END //
DELIMITER ;
DELIMITER //
CREATE TRIGGER fetchmetrics.before_update_DOG_Assessment_Command_Modality_Link
BEFORE UPDATE ON fetchmetrics.DOG_Assessment_Command_Modality_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 fetchmetrics.DOG_Assessment_Command_Modality_Link_Audit (
id_link
, name_field
, value_prev
, value_new
, id_change_set
)
-- Changed id_assessment_command_link
SELECT NEW.id_link, 'id_assessment_command_link', CONVERT(OLD.id_assessment_command_link, CHAR), CONVERT(NEW.id_assessment_command_link, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment_command_link <=> NEW.id_assessment_command_link)
UNION
-- Changed id_command_modality
SELECT NEW.id_link, 'id_command_modality', CONVERT(OLD.id_command_modality, CHAR), CONVERT(NEW.id_command_modality, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_command_modality <=> NEW.id_command_modality)
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 ;

View File

@@ -30,10 +30,16 @@ BEGIN
, value_new
, id_change_set
)
/*
-- Changed id_assessment
SELECT NEW.id_distraction, 'id_assessment', CONVERT(OLD.id_assessment, CHAR), CONVERT(NEW.id_assessment, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment <=> NEW.id_assessment)
UNION
*/
-- Changed id_assessment_command_link
SELECT NEW.id_distraction, 'id_assessment_command_link', CONVERT(OLD.id_assessment_command_link, CHAR), CONVERT(NEW.id_assessment_command_link, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment_command_link <=> NEW.id_assessment_command_link)
UNION
-- Changed id_distraction_type
SELECT NEW.id_distraction, 'id_distraction_type', CONVERT(OLD.id_distraction_type, CHAR), CONVERT(NEW.id_distraction_type, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_distraction_type <=> NEW.id_distraction_type)

View File

@@ -30,9 +30,9 @@ BEGIN
, value_new
, id_change_set
)
-- Changed id_assessment_command_modality_link
SELECT NEW.id_response, 'id_assessment_command_modality_link', CONVERT(OLD.id_assessment_command_modality_link, CHAR), CONVERT(NEW.id_assessment_command_modality_link, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment_command_modality_link <=> NEW.id_assessment_command_modality_link)
-- Changed id_assessment_command_link
SELECT NEW.id_response, 'id_assessment_command_link', CONVERT(OLD.id_assessment_command_link, CHAR), CONVERT(NEW.id_assessment_command_link, CHAR), NEW.id_change_set
WHERE NOT (OLD.id_assessment_command_link <=> NEW.id_assessment_command_link)
UNION
-- Changed id_response_quality_metric
SELECT NEW.id_response, 'id_response_quality_metric', CONVERT(OLD.id_response_quality_metric, CHAR), CONVERT(NEW.id_response_quality_metric, CHAR), NEW.id_change_set

View File

@@ -73,7 +73,7 @@ BEGIN
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_admin := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_ADMIN' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_admin := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'ADMIN' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
@@ -667,7 +667,6 @@ SET
WHERE C.hand_signal_default_description = ''
;
*/
@@ -740,3 +739,5 @@ ORDER BY CC.name, C.name
select COUNT(*)
from fetchmetrics.DOG_Command
;
*/

View File

@@ -72,7 +72,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );

View File

@@ -72,7 +72,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );

View File

@@ -72,7 +72,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );

View File

@@ -72,7 +72,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );

View File

@@ -0,0 +1,543 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_assessment_type;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment_type (
IN a_guid BINARY(36)
, IN a_id_user INT
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_has_filter_assessment_type_id BIT;
DECLARE v_has_filter_assessment_type_name BIT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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_Calc_Assessment_Type (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Calc_Assessment_Type (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Assessment_Type t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_Assessment_Type;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
SET a_id_user := IFNULL(a_id_user, 0);
SET a_get_all_assessment_type := IFNULL(a_get_all_assessment_type, 0);
SET a_get_inactive_assessment_type := IFNULL(a_get_inactive_assessment_type, 0);
SET a_ids_assessment_type := TRIM(IFNULL(a_ids_assessment_type, ''));
SET a_names_assessment_type := TRIM(IFNULL(a_names_assessment_type, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_id_user
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_show_errors
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Assessment_Type;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Assessment_Type;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Assessment_Type;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Type_Calc_Assessment_Type;
CREATE TEMPORARY TABLE tmp_Assessment_Type_Calc_Assessment_Type (
id_type INT NOT NULL
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Assessment_Type (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_Assessment_Type (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Id_Calc_Assessment_Type;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Name_Calc_Assessment_Type (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Name_Calc_Assessment_Type;
SET v_has_filter_assessment_type_id = CASE WHEN a_ids_assessment_type <> '' THEN 1 ELSE 0 END;
SET v_has_filter_assessment_type_name = CASE WHEN a_names_assessment_type <> '' THEN 1 ELSE 0 END;
-- Assessment_Types
IF v_has_filter_assessment_type_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_assessment_type, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Id_Calc_Assessment_Type (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF v_has_filter_assessment_type_name = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_names_assessment_type, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Name_Calc_Assessment_Type (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Assessment_Type t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split_Id_Calc_Assessment_Type t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPES ON t_SPLIT_ID.as_int = ASSESSMENT_TYPES.id_type
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ASSESSMENT_TYPES.id_type)
OR (
ASSESSMENT_TYPES.active = 0
AND a_get_inactive_assessment_type = 0
)
) THEN
INSERT INTO tmp_Msg_Error_Calc_Assessment_Type (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Assessment_Type IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT_ID.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Id_Calc_Assessment_Type t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPES ON t_SPLIT_ID.as_int = ASSESSMENT_TYPES.id_type
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ASSESSMENT_TYPES.id_type)
OR (
ASSESSMENT_TYPES.active = 0
AND a_get_inactive_assessment_type = 0
)
;
/* Don't error on names, hand signals, or notes not found
ELSEIF EXISTS ()
*/
ELSE
INSERT INTO tmp_Assessment_Type_Calc_Assessment_Type (
id_type
, does_meet_id_filters
, does_meet_non_id_filters
)
WITH
Assessment_Type_Id_Filter AS (
SELECT ASSESSMENT_TYPES.id_type
FROM tmp_Split_Id_Calc_Assessment_Type t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPES ON t_SPLIT_ID.as_int = ASSESSMENT_TYPES.id_type
)
, Assessment_Type_Name_Filter AS (
SELECT ASSESSMENT_TYPES.id_type
FROM tmp_Split_Name_Calc_Assessment_Type t_SPLIT_NAME
INNER JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPES ON ASSESSMENT_TYPES.name LIKE CONCAT('%', t_SPLIT_NAME.substring, '%')
WHERE NULLIF(t_SPLIT_NAME.substring, '') IS NOT NULL
)
, Assessment_Type_Filters AS (
SELECT
ASSESSMENT_TYPES_COMBINED.id_type
, MAX(ASSESSMENT_TYPES_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(ASSESSMENT_TYPES_COMBINED.does_meet_name_filter) AS does_meet_name_filter
FROM (
SELECT
ASSESSMENT_TYPES_ID_FILTER.id_type
, 1 AS does_meet_id_filter
, 0 AS does_meet_name_filter
FROM Assessment_Type_Id_Filter ASSESSMENT_TYPES_ID_FILTER
UNION
SELECT
ASSESSMENT_TYPES_NAME_FILTER.id_type
, 0 AS does_meet_id_filter
, 1 AS does_meet_name_filter
FROM Assessment_Type_Name_Filter ASSESSMENT_TYPES_NAME_FILTER
) ASSESSMENT_TYPES_COMBINED
GROUP BY ASSESSMENT_TYPES_COMBINED.id_type
)
SELECT
ASSESSMENT_TYPES.id_type
, CASE WHEN
v_has_filter_assessment_type_id = 0
OR IFNULL(ASSESSMENT_TYPES_FILTERS.does_meet_id_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_assessment_type_name = 0
)
OR IFNULL(ASSESSMENT_TYPES_FILTERS.does_meet_name_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPES
LEFT JOIN Assessment_Type_Filters ASSESSMENT_TYPES_FILTERS ON ASSESSMENT_TYPES.id_type = ASSESSMENT_TYPES_FILTERS.id_type
WHERE
(
a_get_all_assessment_type = 1
OR (
v_has_filter_assessment_type_id = 1
AND ASSESSMENT_TYPES_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_assessment_type_name = 1
AND ASSESSMENT_TYPES_FILTERS.does_meet_name_filter = 1
)
)
AND (
a_get_inactive_assessment_type = 1
OR ASSESSMENT_TYPES.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split_Id_Calc_Assessment_Type;
DELETE FROM tmp_Split_Name_Calc_Assessment_Type;
IF a_debug = 1 THEN
SELECT 'After get Assessment_Types ';
SELECT * FROM tmp_Assessment_Type_Calc_Assessment_Type;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Assessment_Type t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_ASSESSMENT_TYPES
FROM tmp_Assessment_Type_Calc_Assessment_Type t_ASSESSMENT_TYPES
WHERE
(
a_require_all_id_search_filters_met = 1
AND (
t_ASSESSMENT_TYPES.does_meet_id_filters = 0
)
)
OR (
a_require_all_non_id_search_filters_met = 1
AND (
t_ASSESSMENT_TYPES.does_meet_non_id_filters = 0
)
)
OR (
a_require_any_id_search_filters_met = 1
AND t_ASSESSMENT_TYPES.does_meet_id_filters = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_ASSESSMENT_TYPES.does_meet_non_id_filters = 0
)
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Assessment_Types';
SELECT * FROM tmp_Assessment_Type_Calc_Assessment_Type;
END IF;
-- Calculated fields
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error_Calc_Assessment_Type t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Calc_Assessment_Type (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view Dogs and Assessment_Types.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Assessment_Type_Calc_Assessment_Type;
SELECT * FROM tmp_Msg_Error_Calc_Assessment_Type;
END IF;
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Type t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Type_Calc_Assessment_Type;
END IF;
DELETE FROM tmp_Assessment_Type_Calc_Assessment_Type;
END IF;
IF a_debug = 1 THEN
SELECT 'After non-permitted data deletion';
END IF;
-- Outputs
START TRANSACTION;
-- Assessment_Types
INSERT INTO fetchmetrics.DOG_Assessment_Type_Temp (
guid
, id_type
, code
, name
, description
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
a_guid
, t_ASSESSMENT_TYPES.id_type
, ASSESSMENT_TYPES.code
, ASSESSMENT_TYPES.name
, ASSESSMENT_TYPES.description
, ASSESSMENT_TYPES.active
, t_ASSESSMENT_TYPES.does_meet_id_filters
, t_ASSESSMENT_TYPES.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPES
INNER JOIN tmp_Assessment_Type_Calc_Assessment_Type t_ASSESSMENT_TYPES ON ASSESSMENT_TYPES.id_type = t_ASSESSMENT_TYPES.id_type
ORDER BY ASSESSMENT_TYPES.name
;
COMMIT;
-- Errors
IF a_show_errors = 1 THEN
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Assessment_Type t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Type_Calc_Assessment_Type;
END IF;
CALL fetchmetrics.p_dog_clear_calc_dog ( a_guid, 0 );
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Assessment_Type;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Assessment_Type;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Assessment_Type;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Type_Calc_Assessment_Type;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_calc_assessment_type (
'gripe ' -- a_guid
, 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 0 -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT *
FROM fetchmetrics.DOG_Assessment_Type_Temp
;
CALL fetchmetrics.p_dog_clear_calc_assessment_type (
'gripe ' -- a_guid
, 1 -- debug
);
DELETE
FROM fetchmetrics.DOG_Assessment_Type_Temp
;
*/

View File

@@ -0,0 +1,45 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_assessment_type;
DROP PROCEDURE IF EXISTS fetchmetrics.p_assessment_type_clear_calc_assessment_type;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_assessment_type (
IN a_guid BINARY(36)
, IN a_debug BIT
)
BEGIN
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
START TRANSACTION;
DELETE ASSESSMENT_TYPES_T
FROM fetchmetrics.DOG_Assessment_Type_Temp ASSESSMENT_TYPES_T
WHERE ASSESSMENT_TYPES_T.GUID = a_guid
;
COMMIT;
IF a_debug = 1 THEN
CALL fetchmetrics.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_assessment_type (
'crips ' -- a_guid
, 1 -- debug
);
SELECT *
FROM fetchmetrics.DOG_Calc_User_Access_Temp
WHERE GUID = 'chips '
;
*/

View File

@@ -0,0 +1,379 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_get_many_assessment_type;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_type (
IN a_id_user INT
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_guid BINARY(36);
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
/*
SET a_get_all_assessment_type := IFNULL(a_get_all_assessment_type, 0);
SET a_get_inactive_assessment_type := IFNULL(a_get_inactive_assessment_type, 0);
SET a_ids_assessment_type := TRIM(IFNULL(a_ids_assessment_type, ''));
SET a_names_assessment_type := TRIM(IFNULL(a_names_assessment_type, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
*/
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_id_user
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_guid
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Type;
CREATE TEMPORARY TABLE tmp_Assessment_Type (
id_type INT NOT NULL
, code VARCHAR(250)
, name VARCHAR(250)
, description VARCHAR(1000)
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
IF a_debug = 1 THEN
SELECT
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
SELECT COUNT(*) AS Count_Errors FROM tmp_Msg_Error t_ERROR;
SELECT * FROM tmp_Msg_Error t_ERROR;
END IF;
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 Assessment_Types.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
v_guid
, 0 -- a_debug
);
-- Call Assessment_Type Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_assessment_type -- a_get_all_assessment_type
, a_get_inactive_assessment_type -- a_get_inactive_assessment_type
, a_ids_assessment_type -- a_ids_assessment_type
, a_names_assessment_type -- a_names_assessment_type
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_type (
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_assessment_type -- a_get_all_assessment_type
, a_get_inactive_assessment_type -- a_get_inactive_assessment_type
, a_ids_assessment_type -- a_ids_assessment_type
, a_names_assessment_type -- a_names_assessment_type
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Assessment_Type_Temp;
SELECT * FROM fetchmetrics.DOG_Assessment_Type_Temp;
END IF;
INSERT INTO tmp_Assessment_Type (
id_type
, code
, name
, description
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_TYPE_T.id_type
, ASSESSMENT_TYPE_T.code
, ASSESSMENT_TYPE_T.name
, ASSESSMENT_TYPE_T.description
, ASSESSMENT_TYPE_T.active
, ASSESSMENT_TYPE_T.does_meet_id_filters
, ASSESSMENT_TYPE_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Type_Temp ASSESSMENT_TYPE_T
WHERE ASSESSMENT_TYPE_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Assessment_Type;
SELECT * FROM tmp_Assessment_Type;
END IF;
END IF;
-- Filter outputs
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Type;
END IF;
DELETE FROM tmp_Assessment_Type;
END IF;
-- Outputs
-- Assessment_Types
SELECT
t_ASSESSMENT_TYPES.id_type
, t_ASSESSMENT_TYPES.code
, t_ASSESSMENT_TYPES.name
, t_ASSESSMENT_TYPES.description
, t_ASSESSMENT_TYPES.active
, t_ASSESSMENT_TYPES.does_meet_id_filters
, t_ASSESSMENT_TYPES.does_meet_non_id_filters
FROM tmp_Assessment_Type t_ASSESSMENT_TYPES
LEFT JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPES ON t_ASSESSMENT_TYPES.id_type = ASSESSMENT_TYPES.id_type
ORDER BY t_ASSESSMENT_TYPES.name
;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Type;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment_type(
v_guid -- a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Type;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_get_many_assessment_type (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
CALL fetchmetrics.p_dog_get_many_assessment_type (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, 'pat,point' -- a_names_assessment_type
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
*/

View File

@@ -13,6 +13,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment (
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -136,6 +140,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -178,6 +186,16 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Lighting_Level_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Weather_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Type_Calc_Assessment;
CREATE TEMPORARY TABLE tmp_Assessment_Type_Calc_Assessment (
id_type INT NOT NULL
, code VARCHAR(250)
, name VARCHAR(250)
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE tmp_Weather_Calc_Assessment (
id_weather INT NOT NULL
@@ -224,13 +242,16 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Calc_Assessment (
id_assessment INT NOT NULL
, id_assessment_type INT
, id_weather INT
, id_lighting_level INT
, id_location INT
, id_user_handler INT
, notes TEXT
, active BIT
, temperature_celcius DECIMAL(5, 2)
, start_on DATETIME
, end_on DATETIME
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
@@ -259,6 +280,66 @@ BEGIN
SET v_has_filter_assessment_temperature_min := NOT ISNULL(a_min_temperature_assessment);
SET v_has_filter_assessment_temperature_max := NOT ISNULL(a_max_temperature_assessment);
-- Call Calc Assessment_Type
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_assessment_type -- a_get_all_assessment_type
, a_get_inactive_assessment_type -- a_get_inactive_assessment_type
, a_ids_assessment_type -- a_ids_assessment_type
, a_names_assessment_type -- a_names_assessment_type
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_type (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_assessment_type -- a_get_all_assessment_type
, a_get_inactive_assessment_type -- a_get_inactive_assessment_type
, a_ids_assessment_type -- a_ids_assessment_type
, a_names_assessment_type -- a_names_assessment_type
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_Assessment_Type_Calc_Assessment (
id_type
, code
, name
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_TYPE_T.id_type
, ASSESSMENT_TYPE_T.code
, ASSESSMENT_TYPE_T.name
, ASSESSMENT_TYPE_T.active
, ASSESSMENT_TYPE_T.does_meet_id_filters
, ASSESSMENT_TYPE_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Type_Temp ASSESSMENT_TYPE_T
WHERE ASSESSMENT_TYPE_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Type_Calc_Assessment;
END IF;
END IF;
-- Call Calc Weather
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
@@ -604,113 +685,17 @@ BEGIN
ELSEIF EXISTS ()
*/
ELSE
IF a_debug = 1 THEN
SELECT 'Assessment Filters';
WITH
Assessment_Id_Filter AS (
SELECT ASSESSMENT.id_assessment
FROM tmp_Split_Id_Calc_Assessment t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_SPLIT_ID.as_int = ASSESSMENT.id_assessment
)
, Assessment_Notes_Filter AS (
SELECT ASSESSMENT.id_assessment
FROM tmp_Split_Notes_Calc_Assessment t_SPLIT_NOTES
INNER JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON ASSESSMENT.notes LIKE CONCAT('%', t_SPLIT_NOTES.substring, '%')
WHERE
t_SPLIT_NOTES.substring IS NOT NULL
AND t_SPLIT_NOTES.substring <> ''
)
, Assessment_Filters AS (
SELECT
ASSESSMENT_COMBINED.id_assessment
, MAX(ASSESSMENT_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(ASSESSMENT_COMBINED.does_meet_notes_filter) AS does_meet_notes_filter
FROM (
SELECT
ASSESSMENT_ID_FILTER.id_assessment
, 1 AS does_meet_id_filter
, 0 AS does_meet_notes_filter
FROM Assessment_Id_Filter ASSESSMENT_ID_FILTER
UNION
SELECT
ASSESSMENT_NOTES_FILTER.id_assessment
, 0 AS does_meet_id_filter
, 1 AS does_meet_notes_filter
FROM Assessment_Notes_Filter ASSESSMENT_NOTES_FILTER
) ASSESSMENT_COMBINED
GROUP BY ASSESSMENT_COMBINED.id_assessment
)
SELECT
ASSESSMENT.id_assessment
, ASSESSMENT.id_weather
, ASSESSMENT.id_lighting_level
, ASSESSMENT.id_location
, ASSESSMENT.id_user_handler
, ASSESSMENT.notes
, ASSESSMENT.temperature_celcius
, ASSESSMENT.active
, CASE WHEN
v_has_filter_assessment_id = 0
OR ASSESSMENT_FILTERS.does_meet_id_filter = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_assessment_notes = 0
AND v_has_filter_assessment_temperature_min = 0
AND v_has_filter_assessment_temperature_max = 0
)
OR ASSESSMENT_FILTERS.does_meet_notes_filter = 1
OR (
v_has_filter_assessment_temperature_min = 0
OR (
v_has_filter_assessment_temperature_min = 1
AND ASSESSMENT.temperature_celcius >= v_has_filter_assessment_temperature_min
)
)
OR (
v_has_filter_assessment_temperature_max = 0
OR (
v_has_filter_assessment_temperature_max = 1
AND ASSESSMENT.temperature_celcius <= v_has_filter_assessment_temperature_max
)
)
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment ASSESSMENT
LEFT JOIN Assessment_Filters ASSESSMENT_FILTERS ON ASSESSMENT.id_assessment = ASSESSMENT_FILTERS.id_assessment
WHERE
(
a_get_all_assessment = 1
OR (
v_has_filter_assessment_id = 1
AND ASSESSMENT_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_assessment_notes = 1
AND ASSESSMENT_FILTERS.does_meet_notes_filter = 1
)
OR (
v_has_filter_assessment_temperature_min = 1
AND ASSESSMENT.temperature_celcius >= v_has_filter_assessment_temperature_min
)
OR (
v_has_filter_assessment_temperature_max = 1
AND ASSESSMENT.temperature_celcius <= v_has_filter_assessment_temperature_max
)
)
AND (
a_get_inactive_assessment = 1
OR ASSESSMENT.active = 1
)
;
END IF;
INSERT INTO tmp_Assessment_Calc_Assessment (
id_assessment
, id_assessment_type
, id_weather
, id_lighting_level
, id_location
, id_user_handler
, notes
, temperature_celcius
, start_on
, end_on
, active
, does_meet_id_filters
, does_meet_non_id_filters
@@ -751,12 +736,15 @@ BEGIN
)
SELECT
ASSESSMENT.id_assessment
, ASSESSMENT.id_assessment_type
, ASSESSMENT.id_weather
, ASSESSMENT.id_lighting_level
, ASSESSMENT.id_location
, ASSESSMENT.id_user_handler
, ASSESSMENT.notes
, ASSESSMENT.temperature_celcius
, ASSESSMENT.start_on
, ASSESSMENT.end_on
, ASSESSMENT.active
, CASE WHEN
v_has_filter_assessment_id = 0
@@ -826,6 +814,7 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Assessment t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_ASSESSMENT
FROM tmp_Assessment_Calc_Assessment t_ASSESSMENT
LEFT JOIN tmp_Assessment_Type_Calc_Assessment t_ASSESSMENT_TYPE ON t_ASSESSMENT.id_assessment_type = t_ASSESSMENT_TYPE.id_type
LEFT JOIN tmp_Weather_Calc_Assessment t_WEATHER ON t_ASSESSMENT.id_weather = t_WEATHER.id_weather
LEFT JOIN tmp_Lighting_Level_Calc_Assessment t_LIGHTING_LEVEL ON t_ASSESSMENT.id_lighting_level = t_LIGHTING_LEVEL.id_lighting_level
LEFT JOIN tmp_Location_Calc_Assessment t_LOCATION ON t_ASSESSMENT.id_location = t_LOCATION.id_location
@@ -835,6 +824,7 @@ BEGIN
a_require_all_id_search_filters_met = 1
AND (
t_ASSESSMENT.does_meet_id_filters = 0
OR IFNULL(t_ASSESSMENT_TYPE.does_meet_id_filters, 1) = 0
OR IFNULL(t_WEATHER.does_meet_id_filters, 1) = 0
OR IFNULL(t_LIGHTING_LEVEL.does_meet_id_filters, 1) = 0
OR IFNULL(t_LOCATION.does_meet_id_filters, 1) = 0
@@ -845,6 +835,7 @@ BEGIN
a_require_all_non_id_search_filters_met = 1
AND (
t_ASSESSMENT.does_meet_non_id_filters = 0
OR IFNULL(t_ASSESSMENT_TYPE.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_WEATHER.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_LIGHTING_LEVEL.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_LOCATION.does_meet_non_id_filters, 1) = 0
@@ -854,6 +845,7 @@ BEGIN
OR (
a_require_any_id_search_filters_met = 1
AND t_ASSESSMENT.does_meet_id_filters = 0
AND IFNULL(t_ASSESSMENT_TYPE.does_meet_id_filters, 1) = 0
AND IFNULL(t_WEATHER.does_meet_id_filters, 1) = 0
AND IFNULL(t_LIGHTING_LEVEL.does_meet_id_filters, 1) = 0
AND IFNULL(t_LOCATION.does_meet_id_filters, 1) = 0
@@ -862,6 +854,7 @@ BEGIN
OR (
a_require_any_non_id_search_filters_met = 1
AND t_ASSESSMENT.does_meet_non_id_filters = 0
AND IFNULL(t_ASSESSMENT_TYPE.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_WEATHER.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_LIGHTING_LEVEL.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_LOCATION.does_meet_non_id_filters, 1) = 0
@@ -872,6 +865,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'After filter Assessments';
SELECT * FROM tmp_Assessment_Type_Calc_Assessment;
SELECT * FROM tmp_Weather_Calc_Assessment;
SELECT * FROM tmp_Lighting_Level_Calc_Assessment;
SELECT * FROM tmp_Location_Calc_Assessment;
@@ -957,6 +951,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Assessment_Type_Calc_Assessment;
SELECT * FROM tmp_Weather_Calc_Assessment;
SELECT * FROM tmp_Lighting_Level_Calc_Assessment;
SELECT * FROM tmp_Location_Calc_Assessment;
@@ -967,6 +962,7 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Type_Calc_Assessment;
SELECT * FROM tmp_Weather_Calc_Assessment;
SELECT * FROM tmp_Lighting_Level_Calc_Assessment;
SELECT * FROM tmp_Location_Calc_Assessment;
@@ -974,6 +970,7 @@ BEGIN
SELECT * FROM tmp_Assessment_Calc_Assessment;
END IF;
DELETE FROM tmp_Assessment_Type_Calc_Assessment;
DELETE FROM tmp_Assessment_Calc_Assessment;
DELETE FROM tmp_User_Handler_Calc_Assessment;
DELETE FROM tmp_Location_Calc_Assessment;
@@ -991,12 +988,15 @@ BEGIN
INSERT INTO fetchmetrics.DOG_Assessment_Temp (
guid
, id_assessment
, id_assessment_type
, id_weather
, id_lighting_level
, id_location
, id_user_handler
, notes
, temperature_celcius
, start_on
, end_on
, active
, does_meet_id_filters
@@ -1005,12 +1005,15 @@ BEGIN
SELECT
a_guid
, t_ASSESSMENT.id_assessment
, t_ASSESSMENT.id_assessment_type
, t_ASSESSMENT.id_weather
, t_ASSESSMENT.id_lighting_level
, t_ASSESSMENT.id_location
, t_ASSESSMENT.id_user_handler
, ASSESSMENT.notes
, ASSESSMENT.temperature_celcius
, ASSESSMENT.start_on
, ASSESSMENT.end_on
, ASSESSMENT.active
, t_ASSESSMENT.does_meet_id_filters
@@ -1046,11 +1049,14 @@ BEGIN
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Notes_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Image_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_User_Handler_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Location_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Lighting_Level_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Weather_Calc_Assessment;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Type_Calc_Assessment;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
@@ -1070,6 +1076,10 @@ CALL fetchmetrics.p_dog_calc_assessment (
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -1103,6 +1113,10 @@ CALL fetchmetrics.p_dog_calc_assessment (
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, 'pat,point' -- a_notes_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather

View File

@@ -12,6 +12,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment (
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -118,6 +122,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -157,6 +165,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment (
id_assessment INT NOT NULL
, id_assessment_type INT
, id_weather INT
, id_lighting_level INT
, id_location INT
@@ -164,6 +173,8 @@ BEGIN
, notes TEXT
, temperature_celcius DECIMAL(5, 2)
-- , difficulty_level FLOAT
, start_on DATETIME
, end_on DATETIME
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
@@ -266,6 +277,10 @@ BEGIN
, a_notes_assessment -- a_notes_assessment
, a_min_temperature_assessment -- a_min_temperature_assessment
, a_max_temperature_assessment -- a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather -- a_get_all_weather
, a_get_inactive_weather -- a_get_inactive_weather
, a_ids_weather
@@ -302,6 +317,10 @@ BEGIN
, a_notes_assessment -- a_notes_assessment
, a_min_temperature_assessment -- a_min_temperature_assessment
, a_max_temperature_assessment -- a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather -- a_get_all_weather
, a_get_inactive_weather -- a_get_inactive_weather
, a_ids_weather
@@ -335,6 +354,7 @@ BEGIN
INSERT INTO tmp_Assessment (
id_assessment
, id_assessment_type
, id_weather
, id_lighting_level
, id_location
@@ -342,12 +362,15 @@ BEGIN
, notes
, temperature_celcius
-- , difficulty_level
, start_on
, end_on
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_T.id_assessment
, ASSESSMENT_T.id_assessment_type
, ASSESSMENT_T.id_weather
, ASSESSMENT_T.id_lighting_level
, ASSESSMENT_T.id_location
@@ -355,6 +378,8 @@ BEGIN
, ASSESSMENT_T.notes
, ASSESSMENT_T.temperature_celcius
-- , ASSESSMENT_T.difficulty_level
, ASSESSMENT_T.start_on
, ASSESSMENT_T.end_on
, ASSESSMENT_T.active
, ASSESSMENT_T.does_meet_id_filters
@@ -383,6 +408,8 @@ BEGIN
-- Assessments
SELECT
t_ASSESSMENT.id_assessment
, t_ASSESSMENT.id_assessment_type
, ASSESSMENT_TYPE.name AS name_assessment_type
, t_ASSESSMENT.id_weather
, WEATHER.name AS name_weather
, t_ASSESSMENT.id_lighting_level
@@ -395,6 +422,8 @@ BEGIN
, t_ASSESSMENT.notes
, t_ASSESSMENT.temperature_celcius
-- , t_ASSESSMENT.difficulty_level
, t_ASSESSMENT.start_on
, t_ASSESSMENT.end_on
, t_ASSESSMENT.active
, t_ASSESSMENT.does_meet_id_filters
@@ -411,6 +440,7 @@ BEGIN
*/
FROM tmp_Assessment t_ASSESSMENT
INNER JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPE ON t_ASSESSMENT.id_assessment_type = ASSESSMENT_TYPE.id_type
LEFT JOIN fetchmetrics.DOG_Weather WEATHER ON t_ASSESSMENT.id_weather = WEATHER.id_weather
-- LEFT JOIN tmp_Weather t_WEATHER ON t_ASSESSMENT.id_weather = t_WEATHER.id_weather
LEFT JOIN fetchmetrics.DOG_Lighting_Level LIGHTING_LEVEL ON t_ASSESSMENT.id_lighting_level = LIGHTING_LEVEL.id_lighting_level
@@ -467,6 +497,10 @@ CALL fetchmetrics.p_dog_get_many_assessment (
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -501,6 +535,10 @@ CALL fetchmetrics.p_dog_get_many_assessment (
, 'pat,point' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather

View File

@@ -88,7 +88,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
@@ -98,6 +98,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment (
id_temp INT
, id_assessment_type INT
, id_assessment INT
, id_weather INT
, id_lighting_level INT
@@ -106,6 +107,8 @@ BEGIN
, notes TEXT
, temperature_celcius DECIMAL(5, 2)
, difficulty_level FLOAT
, start_on DATETIME
, end_on DATETIME
, active BIT
, is_new BIT
, name_error VARCHAR(250)
@@ -113,6 +116,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Copy (
id_temp INT
, id_assessment_type INT
, id_assessment INT
, id_weather INT
, id_lighting_level INT
@@ -121,6 +125,8 @@ BEGIN
, notes TEXT
, temperature_celcius DECIMAL(5, 2)
, difficulty_level FLOAT
, start_on DATETIME
, end_on DATETIME
, active BIT
, is_new BIT
, name_error VARCHAR(250)
@@ -138,6 +144,7 @@ BEGIN
INSERT INTO tmp_Assessment (
id_temp
, id_assessment
, id_assessment_type
, id_weather
, id_lighting_level
, id_location
@@ -145,12 +152,18 @@ BEGIN
, notes
, temperature_celcius
, difficulty_level
, start_on
, end_on
, active
, is_new
)
SELECT
ASSESSMENT_T.id_temp
, ASSESSMENT_T.id_assessment
, COALESCE(
ASSESSMENT_T.id_assessment_type
, ASSESSMENT.id_assessment_type
) AS id_assessment_type
, COALESCE(
ASSESSMENT_T.id_weather
, ASSESSMENT.id_weather
@@ -170,6 +183,8 @@ BEGIN
, ASSESSMENT_T.notes
, ASSESSMENT_T.temperature_celcius
, ASSESSMENT_T.difficulty_level
, ASSESSMENT_T.start_on
, ASSESSMENT_T.end_on
, COALESCE(ASSESSMENT_T.active, 1) AS active
, CASE WHEN COALESCE(ASSESSMENT_T.id_assessment, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Temp ASSESSMENT_T
@@ -212,6 +227,33 @@ BEGIN
-- Validation
-- Missing mandatory fields
-- id_assessment_type
IF EXISTS (
SELECT *
FROM tmp_Assessment t_ASSESSMENT
LEFT JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPE ON t_ASSESSMENT.id_assessment_type = ASSESSMENT_TYPE.id_type
WHERE
ISNULL(t_ASSESSMENT.id_assessment_type)
OR ISNULL(ASSESSMENT_TYPE.id_type)
OR ASSESSMENT_TYPE.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('The following Dog Assessment_Type Assessment(s) do not have a valid Assessment_Type: ', GROUP_CONCAT(t_ASSESSMENT.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment t_ASSESSMENT
LEFT JOIN fetchmetrics.DOG_Assessment_Type ASSESSMENT_TYPE ON t_ASSESSMENT.id_assessment_type = ASSESSMENT_TYPE.id_type
WHERE
ISNULL(t_ASSESSMENT.id_assessment_type)
OR ISNULL(ASSESSMENT_TYPE.id_type)
OR ASSESSMENT_TYPE.active = 0
;
END IF;
-- id_weather
IF EXISTS (
SELECT *
@@ -403,42 +445,51 @@ BEGIN
ON ASSESSMENT.id_assessment = t_ASSESSMENT.id_assessment
AND t_ASSESSMENT.is_new = 0
SET
ASSESSMENT.id_weather = t_ASSESSMENT.id_weather
ASSESSMENT.id_assessment_type = t_ASSESSMENT.id_assessment_type
, ASSESSMENT.id_weather = t_ASSESSMENT.id_weather
, ASSESSMENT.id_lighting_level = t_ASSESSMENT.id_lighting_level
, ASSESSMENT.id_location = t_ASSESSMENT.id_location
, ASSESSMENT.id_user_handler = t_ASSESSMENT.id_user_handler
, ASSESSMENT.temperature_celcius = t_ASSESSMENT.temperature_celcius
, ASSESSMENT.difficulty_level = t_ASSESSMENT.difficulty_level
, ASSESSMENT.notes = t_ASSESSMENT.notes
, ASSESSMENT.start_on = t_ASSESSMENT.start_on
, ASSESSMENT.end_on = t_ASSESSMENT.end_on
, ASSESSMENT.active = t_ASSESSMENT.active
, ASSESSMENT.id_change_set = v_id_change_set
;
INSERT INTO fetchmetrics.DOG_Assessment (
id_temp
, id_weather
, id_assessment_type
, id_weather
, id_lighting_level
, id_location
, id_user_handler
, temperature_celcius
, difficulty_level
, notes
, start_on
, end_on
, active
, id_user_created_by
, created_on
)
SELECT
t_ASSESSMENT.id_temp
, t_ASSESSMENT.id_weather AS id_weather
, t_ASSESSMENT.id_lighting_level AS id_lighting_level
, t_ASSESSMENT.id_location AS id_location
, t_ASSESSMENT.id_user_handler AS id_user_handler
, t_ASSESSMENT.temperature_celcius AS temperature_celcius
, t_ASSESSMENT.difficulty_level AS difficulty_level
, t_ASSESSMENT.notes AS notes
, t_ASSESSMENT.active AS active
, a_id_user AS created_by
, v_time_start AS created_on
, t_ASSESSMENT.id_assessment_type
, t_ASSESSMENT.id_weather
, t_ASSESSMENT.id_lighting_level
, t_ASSESSMENT.id_location
, t_ASSESSMENT.id_user_handler
, t_ASSESSMENT.temperature_celcius
, t_ASSESSMENT.difficulty_level
, t_ASSESSMENT.notes
, t_ASSESSMENT.start_on
, t_ASSESSMENT.end_on
, t_ASSESSMENT.active
, a_id_user
, v_time_start
FROM tmp_Assessment t_ASSESSMENT
WHERE
t_ASSESSMENT.is_new = 1

View File

@@ -0,0 +1,543 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_reinforcement_schedule;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_calc_reinforcement_schedule (
IN a_guid BINARY(36)
, IN a_id_user INT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_has_filter_reinforcement_schedule_id BIT;
DECLARE v_has_filter_reinforcement_schedule_name BIT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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_Calc_Reinforcement_Schedule (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Calc_Reinforcement_Schedule (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Reinforcement_Schedule t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_Reinforcement_Schedule;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
SET a_id_user := IFNULL(a_id_user, 0);
SET a_get_all_reinforcement_schedule := IFNULL(a_get_all_reinforcement_schedule, 0);
SET a_get_inactive_reinforcement_schedule := IFNULL(a_get_inactive_reinforcement_schedule, 0);
SET a_ids_reinforcement_schedule := TRIM(IFNULL(a_ids_reinforcement_schedule, ''));
SET a_names_reinforcement_schedule := TRIM(IFNULL(a_names_reinforcement_schedule, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_id_user
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_show_errors
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Reinforcement_Schedule;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Reinforcement_Schedule;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Reinforcement_Schedule;
DROP TEMPORARY TABLE IF EXISTS tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
CREATE TEMPORARY TABLE tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule (
id_reinforcement_schedule INT NOT NULL
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Reinforcement_Schedule (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_Reinforcement_Schedule (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Id_Calc_Reinforcement_Schedule;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Name_Calc_Reinforcement_Schedule (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Name_Calc_Reinforcement_Schedule;
SET v_has_filter_reinforcement_schedule_id = CASE WHEN a_ids_reinforcement_schedule <> '' THEN 1 ELSE 0 END;
SET v_has_filter_reinforcement_schedule_name = CASE WHEN a_names_reinforcement_schedule <> '' THEN 1 ELSE 0 END;
-- Reinforcement_Schedules
IF v_has_filter_reinforcement_schedule_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_reinforcement_schedule, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Id_Calc_Reinforcement_Schedule (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF v_has_filter_reinforcement_schedule_name = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_names_reinforcement_schedule, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Name_Calc_Reinforcement_Schedule (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Reinforcement_Schedule t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split_Id_Calc_Reinforcement_Schedule t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULES ON t_SPLIT_ID.as_int = REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(REINFORCEMENT_SCHEDULES.id_reinforcement_schedule)
OR (
REINFORCEMENT_SCHEDULES.active = 0
AND a_get_inactive_reinforcement_schedule = 0
)
) THEN
INSERT INTO tmp_Msg_Error_Calc_Reinforcement_Schedule (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Reinforcement_Schedule IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT_ID.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Id_Calc_Reinforcement_Schedule t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULES ON t_SPLIT_ID.as_int = REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(REINFORCEMENT_SCHEDULES.id_reinforcement_schedule)
OR (
REINFORCEMENT_SCHEDULES.active = 0
AND a_get_inactive_reinforcement_schedule = 0
)
;
/* Don't error on names, hand signals, or notes not found
ELSEIF EXISTS ()
*/
ELSE
INSERT INTO tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule (
id_reinforcement_schedule
, does_meet_id_filters
, does_meet_non_id_filters
)
WITH
Reinforcement_Schedule_Id_Filter AS (
SELECT REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
FROM tmp_Split_Id_Calc_Reinforcement_Schedule t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULES ON t_SPLIT_ID.as_int = REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
)
, Reinforcement_Schedule_Name_Filter AS (
SELECT REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
FROM tmp_Split_Name_Calc_Reinforcement_Schedule t_SPLIT_NAME
INNER JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULES ON REINFORCEMENT_SCHEDULES.name LIKE CONCAT('%', t_SPLIT_NAME.substring, '%')
WHERE NULLIF(t_SPLIT_NAME.substring, '') IS NOT NULL
)
, Reinforcement_Schedule_Filters AS (
SELECT
REINFORCEMENT_SCHEDULES_COMBINED.id_reinforcement_schedule
, MAX(REINFORCEMENT_SCHEDULES_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(REINFORCEMENT_SCHEDULES_COMBINED.does_meet_name_filter) AS does_meet_name_filter
FROM (
SELECT
REINFORCEMENT_SCHEDULES_ID_FILTER.id_reinforcement_schedule
, 1 AS does_meet_id_filter
, 0 AS does_meet_name_filter
FROM Reinforcement_Schedule_Id_Filter REINFORCEMENT_SCHEDULES_ID_FILTER
UNION
SELECT
REINFORCEMENT_SCHEDULES_NAME_FILTER.id_reinforcement_schedule
, 0 AS does_meet_id_filter
, 1 AS does_meet_name_filter
FROM Reinforcement_Schedule_Name_Filter REINFORCEMENT_SCHEDULES_NAME_FILTER
) REINFORCEMENT_SCHEDULES_COMBINED
GROUP BY REINFORCEMENT_SCHEDULES_COMBINED.id_reinforcement_schedule
)
SELECT
REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
, CASE WHEN
v_has_filter_reinforcement_schedule_id = 0
OR IFNULL(REINFORCEMENT_SCHEDULES_FILTERS.does_meet_id_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_reinforcement_schedule_name = 0
)
OR IFNULL(REINFORCEMENT_SCHEDULES_FILTERS.does_meet_name_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULES
LEFT JOIN Reinforcement_Schedule_Filters REINFORCEMENT_SCHEDULES_FILTERS ON REINFORCEMENT_SCHEDULES.id_reinforcement_schedule = REINFORCEMENT_SCHEDULES_FILTERS.id_reinforcement_schedule
WHERE
(
a_get_all_reinforcement_schedule = 1
OR (
v_has_filter_reinforcement_schedule_id = 1
AND REINFORCEMENT_SCHEDULES_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_reinforcement_schedule_name = 1
AND REINFORCEMENT_SCHEDULES_FILTERS.does_meet_name_filter = 1
)
)
AND (
a_get_inactive_reinforcement_schedule = 1
OR REINFORCEMENT_SCHEDULES.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split_Id_Calc_Reinforcement_Schedule;
DELETE FROM tmp_Split_Name_Calc_Reinforcement_Schedule;
IF a_debug = 1 THEN
SELECT 'After get Reinforcement_Schedules ';
SELECT * FROM tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Reinforcement_Schedule t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_REINFORCEMENT_SCHEDULES
FROM tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule t_REINFORCEMENT_SCHEDULES
WHERE
(
a_require_all_id_search_filters_met = 1
AND (
t_REINFORCEMENT_SCHEDULES.does_meet_id_filters = 0
)
)
OR (
a_require_all_non_id_search_filters_met = 1
AND (
t_REINFORCEMENT_SCHEDULES.does_meet_non_id_filters = 0
)
)
OR (
a_require_any_id_search_filters_met = 1
AND t_REINFORCEMENT_SCHEDULES.does_meet_id_filters = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_REINFORCEMENT_SCHEDULES.does_meet_non_id_filters = 0
)
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Reinforcement_Schedules';
SELECT * FROM tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
END IF;
-- Calculated fields
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error_Calc_Reinforcement_Schedule t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Calc_Reinforcement_Schedule (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view Dogs and Reinforcement_Schedules.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
SELECT * FROM tmp_Msg_Error_Calc_Reinforcement_Schedule;
END IF;
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Reinforcement_Schedule t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
END IF;
DELETE FROM tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
END IF;
IF a_debug = 1 THEN
SELECT 'After non-permitted data deletion';
END IF;
-- Outputs
START TRANSACTION;
-- Reinforcement_Schedules
INSERT INTO fetchmetrics.DOG_Reinforcement_Schedule_Temp (
guid
, id_reinforcement_schedule
, code
, name
, description
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
a_guid
, t_REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
, REINFORCEMENT_SCHEDULES.code
, REINFORCEMENT_SCHEDULES.name
, REINFORCEMENT_SCHEDULES.description
, REINFORCEMENT_SCHEDULES.active
, t_REINFORCEMENT_SCHEDULES.does_meet_id_filters
, t_REINFORCEMENT_SCHEDULES.does_meet_non_id_filters
FROM fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULES
INNER JOIN tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule t_REINFORCEMENT_SCHEDULES ON REINFORCEMENT_SCHEDULES.id_reinforcement_schedule = t_REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
ORDER BY REINFORCEMENT_SCHEDULES.name
;
COMMIT;
-- Errors
IF a_show_errors = 1 THEN
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Reinforcement_Schedule t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
END IF;
CALL fetchmetrics.p_dog_clear_calc_dog ( a_guid, 0 );
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Reinforcement_Schedule;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Reinforcement_Schedule;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Reinforcement_Schedule;
DROP TEMPORARY TABLE IF EXISTS tmp_Reinforcement_Schedule_Calc_Reinforcement_Schedule;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_calc_reinforcement_schedule (
'gripe ' -- a_guid
, 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 0 -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT *
FROM fetchmetrics.DOG_Reinforcement_Schedule_Temp
;
CALL fetchmetrics.p_dog_clear_calc_reinforcement_schedule (
'gripe ' -- a_guid
, 1 -- debug
);
DELETE
FROM fetchmetrics.DOG_Reinforcement_Schedule_Temp
;
*/

View File

@@ -0,0 +1,45 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_reinforcement_schedule;
DROP PROCEDURE IF EXISTS fetchmetrics.p_reinforcement_schedule_clear_calc_reinforcement_schedule;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_reinforcement_schedule (
IN a_guid BINARY(36)
, IN a_debug BIT
)
BEGIN
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
START TRANSACTION;
DELETE REINFORCEMENT_SCHEDULES_T
FROM fetchmetrics.DOG_Reinforcement_Schedule_Temp REINFORCEMENT_SCHEDULES_T
WHERE REINFORCEMENT_SCHEDULES_T.GUID = a_guid
;
COMMIT;
IF a_debug = 1 THEN
CALL fetchmetrics.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_reinforcement_schedule (
'crips ' -- a_guid
, 1 -- debug
);
SELECT *
FROM fetchmetrics.DOG_Calc_User_Access_Temp
WHERE GUID = 'chips '
;
*/

View File

@@ -0,0 +1,379 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_get_many_reinforcement_schedule;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_get_many_reinforcement_schedule (
IN a_id_user INT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_guid BINARY(36);
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
/*
SET a_get_all_reinforcement_schedule := IFNULL(a_get_all_reinforcement_schedule, 0);
SET a_get_inactive_reinforcement_schedule := IFNULL(a_get_inactive_reinforcement_schedule, 0);
SET a_ids_reinforcement_schedule := TRIM(IFNULL(a_ids_reinforcement_schedule, ''));
SET a_names_reinforcement_schedule := TRIM(IFNULL(a_names_reinforcement_schedule, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
*/
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_id_user
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_guid
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Reinforcement_Schedule;
CREATE TEMPORARY TABLE tmp_Reinforcement_Schedule (
id_reinforcement_schedule INT NOT NULL
, code VARCHAR(250)
, name VARCHAR(250)
, description VARCHAR(1000)
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
IF a_debug = 1 THEN
SELECT
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
SELECT COUNT(*) AS Count_Errors FROM tmp_Msg_Error t_ERROR;
SELECT * FROM tmp_Msg_Error t_ERROR;
END IF;
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 Reinforcement_Schedules.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
v_guid
, 0 -- a_debug
);
-- Call Reinforcement_Schedule Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_reinforcement_schedule -- a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule -- a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule -- a_ids_reinforcement_schedule
, a_names_reinforcement_schedule -- a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_reinforcement_schedule (
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_reinforcement_schedule -- a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule -- a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule -- a_ids_reinforcement_schedule
, a_names_reinforcement_schedule -- a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Reinforcement_Schedule_Temp;
SELECT * FROM fetchmetrics.DOG_Reinforcement_Schedule_Temp;
END IF;
INSERT INTO tmp_Reinforcement_Schedule (
id_reinforcement_schedule
, code
, name
, description
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
REINFORCEMENT_SCHEDULE_T.id_reinforcement_schedule
, REINFORCEMENT_SCHEDULE_T.code
, REINFORCEMENT_SCHEDULE_T.name
, REINFORCEMENT_SCHEDULE_T.description
, REINFORCEMENT_SCHEDULE_T.active
, REINFORCEMENT_SCHEDULE_T.does_meet_id_filters
, REINFORCEMENT_SCHEDULE_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Reinforcement_Schedule_Temp REINFORCEMENT_SCHEDULE_T
WHERE REINFORCEMENT_SCHEDULE_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Reinforcement_Schedule;
SELECT * FROM tmp_Reinforcement_Schedule;
END IF;
END IF;
-- Filter outputs
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Reinforcement_Schedule;
END IF;
DELETE FROM tmp_Reinforcement_Schedule;
END IF;
-- Outputs
-- Reinforcement_Schedules
SELECT
t_REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
, t_REINFORCEMENT_SCHEDULES.code
, t_REINFORCEMENT_SCHEDULES.name
, t_REINFORCEMENT_SCHEDULES.description
, t_REINFORCEMENT_SCHEDULES.active
, t_REINFORCEMENT_SCHEDULES.does_meet_id_filters
, t_REINFORCEMENT_SCHEDULES.does_meet_non_id_filters
FROM tmp_Reinforcement_Schedule t_REINFORCEMENT_SCHEDULES
LEFT JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULES ON t_REINFORCEMENT_SCHEDULES.id_reinforcement_schedule = REINFORCEMENT_SCHEDULES.id_reinforcement_schedule
ORDER BY t_REINFORCEMENT_SCHEDULES.name
;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Reinforcement_Schedule;
END IF;
CALL fetchmetrics.p_dog_clear_calc_reinforcement_schedule(
v_guid -- a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Reinforcement_Schedule;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_get_many_reinforcement_schedule (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
CALL fetchmetrics.p_dog_get_many_reinforcement_schedule (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, 'pat,point' -- a_names_reinforcement_schedule
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
*/

View File

@@ -1,10 +1,10 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_assessment_command_modality_link;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_assessment_command_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_assessment_command_modality_link (
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_assessment_command_link (
IN a_guid BINARY(36)
, IN a_debug BIT
)
@@ -16,9 +16,9 @@ BEGIN
START TRANSACTION;
DELETE ASSESSMENT_COMMAND_MODALITY_LINKS_T
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINKS_T
WHERE ASSESSMENT_COMMAND_MODALITY_LINKS_T.GUID = a_guid
DELETE ASSESSMENT_COMMAND_LINKS_T
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINKS_T
WHERE ASSESSMENT_COMMAND_LINKS_T.GUID = a_guid
;
COMMIT;
@@ -31,7 +31,7 @@ DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_assessment_command_modality_link (
CALL fetchmetrics.p_dog_clear_calc_assessment_command_link (
'crips ' -- a_guid
, 1 -- debug
);

View File

@@ -0,0 +1,650 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_get_many_assessment_command_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_command_link (
IN a_id_user INT
, IN a_get_all_link BIT
, IN a_get_inactive_link BIT
, IN a_ids_link TEXT
, IN a_min_distance_from_handler_metres_link FLOAT
, IN a_max_distance_from_handler_metres_link FLOAT
, IN a_value_is_in_sight_of_handler_link BIT
, IN a_value_is_in_scent_range_of_handler_link BIT
, IN a_value_is_in_hearing_range_of_handler_link BIT
, IN a_value_is_on_lead_link BIT
, IN a_min_trial_count_link FLOAT
, IN a_max_trial_count_link FLOAT
, IN a_get_all_assessment BIT
, IN a_get_inactive_assessment BIT
, IN a_ids_assessment TEXT
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
, IN a_names_weather TEXT
, IN a_get_all_lighting_level BIT
, IN a_get_inactive_lighting_level BIT
, IN a_ids_lighting_level TEXT
, IN a_names_lighting_level TEXT
, IN a_get_all_location BIT
, IN a_get_inactive_location BIT
, IN a_ids_location TEXT
, IN a_names_location TEXT
, IN a_get_all_user_handler BIT
, IN a_get_inactive_user_handler BIT
, IN a_ids_user_handler TEXT
-- , IN a_auth0_ids_user_handler TEXT
, IN a_names_user_handler TEXT
, IN a_emails_user_handler TEXT
, IN a_get_all_command_category BIT
, IN a_get_inactive_command_category BIT
, IN a_ids_command_category TEXT
, IN a_names_command_category TEXT
, IN a_get_all_command BIT
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_guid BINARY(36);
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
/*
Filters handled by Calc Stored Procedure
*/
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_id_user
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_min_distance_from_handler_metres_link
, a_max_distance_from_handler_metres_link
, a_value_is_in_sight_of_handler_link
, a_value_is_in_scent_range_of_handler_link
, a_value_is_in_hearing_range_of_handler_link
, a_value_is_on_lead_link
, a_min_trial_count_link
, a_max_trial_count_link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_guid
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link (
id_link INT NOT NULL
, id_assessment INT
, id_command INT
, id_reinforcement_schedule INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
IF a_debug = 1 THEN
SELECT
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
SELECT COUNT(*) AS Count_Errors FROM tmp_Msg_Error t_ERROR;
SELECT * FROM tmp_Msg_Error t_ERROR;
END IF;
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 Assessment_Command_Links.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
v_guid
, 0 -- a_debug
);
-- Call Assessment_Command_Link Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_min_distance_from_handler_metres_link
, a_max_distance_from_handler_metres_link
, a_value_is_in_sight_of_handler_link
, a_value_is_in_scent_range_of_handler_link
, a_value_is_in_hearing_range_of_handler_link
, a_value_is_on_lead_link
, a_min_trial_count_link
, a_max_trial_count_link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_command_link (
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_min_distance_from_handler_metres_link
, a_max_distance_from_handler_metres_link
, a_value_is_in_sight_of_handler_link
, a_value_is_in_scent_range_of_handler_link
, a_value_is_in_hearing_range_of_handler_link
, a_value_is_on_lead_link
, a_min_trial_count_link
, a_max_trial_count_link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
SELECT * FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
END IF;
INSERT INTO tmp_Assessment_Command_Link (
id_link
, id_assessment
, id_command
, id_reinforcement_schedule
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, trial_count
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.id_assessment
, ASSESSMENT_COMMAND_LINK_T.id_command
, ASSESSMENT_COMMAND_LINK_T.id_reinforcement_schedule
, ASSESSMENT_COMMAND_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_LINK_T.trial_count
, ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
WHERE ASSESSMENT_COMMAND_LINK_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Assessment_Command_Link;
SELECT * FROM tmp_Assessment_Command_Link;
END IF;
END IF;
-- Filter outputs
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Link;
END IF;
DELETE FROM tmp_Assessment_Command_Link;
END IF;
-- Outputs
-- Assessment_Command_Links
SELECT
t_ASSESSMENT_COMMAND_LINK.id_link
, t_ASSESSMENT_COMMAND_LINK.id_assessment
, ASSESSMENT.created_on AS created_on_assessment
, COMMAND.id_command_category
, COMMAND_CATEGORY.name AS name_command_category
, t_ASSESSMENT_COMMAND_LINK.id_command
, COMMAND.name AS name_command
, t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule
, REINFORCEMENT_SCHEDULE.name AS name_reinforcement_schedule
, t_ASSESSMENT_COMMAND_LINK.distance_from_handler_metres
, t_ASSESSMENT_COMMAND_LINK.is_in_sight_of_handler
, t_ASSESSMENT_COMMAND_LINK.is_in_scent_range_of_handler
, t_ASSESSMENT_COMMAND_LINK.is_in_hearing_range_of_handler
, t_ASSESSMENT_COMMAND_LINK.is_on_lead
, t_ASSESSMENT_COMMAND_LINK.trial_count
, t_ASSESSMENT_COMMAND_LINK.active
, t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters
, t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_LINK.id_link = ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_LINK.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_LINK.id_command = COMMAND.id_command
LEFT JOIN fetchmetrics.DOG_Command_Category COMMAND_CATEGORY ON COMMAND.id_command_category = COMMAND_CATEGORY.id_command_category
LEFT JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULE ON t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule = REINFORCEMENT_SCHEDULE.id_reinforcement_schedule
LIMIT 1000
;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Command_Link;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_link(
v_guid -- a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_get_many_assessment_command_link (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_link
, 0 -- a_get_inactive_link
, '' -- a_ids_link
, NULL -- a_min_distance_from_handler_metres_link
, NULL -- a_max_distance_from_handler_metres_link
, NULL -- a_value_is_in_sight_of_handler_link
, NULL -- a_value_is_in_scent_range_of_handler_link
, NULL -- a_value_is_in_hearing_range_of_handler_link
, NULL -- a_value_is_on_lead_link
, NULL -- a_min_trial_count_link
, NULL -- a_max_trial_count_link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
, '' -- a_names_weather
, 1 -- a_get_all_lighting_level
, 0 -- a_get_inactive_lighting_level
, '' -- a_ids_lighting_level
, '' -- a_names_lighting_level
, 1 -- a_get_all_location
, 0 -- a_get_inactive_location
, '' -- a_ids_location
, '' -- a_names_location
, 1 -- a_get_all_user_handler
, 0 -- a_get_inactive_user_handler
, '' -- a_ids_user_handler
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
, '' -- a_names_command_category
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
*/

View File

@@ -0,0 +1,619 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_save_assessment_command_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_save_assessment_command_link (
IN a_comment VARCHAR(500),
IN a_guid BINARY(36),
IN a_id_user INT,
IN a_debug BIT
)
BEGIN
DECLARE v_can_admin BIT;
DECLARE v_can_create BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_id_access_level_edit INT;
DECLARE v_id_change_set INT;
DECLARE v_id_permission_dog_new INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_time_start TIMESTAMP(6);
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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
START TRANSACTION;
INSERT INTO fetchmetrics.DOG_Msg_Error_Temp (
id_type
, code
, msg
, guid
)
SELECT
t_ERROR.id_type
, t_ERROR.code
, t_ERROR.msg
, a_guid
FROM tmp_Msg_Error t_ERROR
;
COMMIT;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET SESSION group_concat_max_len=15000;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Assessment_Command_Link_Copy;
DROP TABLE IF EXISTS tmp_Assessment_Command_Link;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link (
id_temp INT
, id_link INT
, id_assessment INT
, id_command INT
, id_reinforcement_schedule INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, is_new BIT
, name_error VARCHAR(250)
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Copy (
id_temp INT
, id_link INT
, id_assessment INT
, id_command INT
, id_reinforcement_schedule INT
, distance_from_handler_metres INT
, is_in_sight_of_handler INT
, is_in_scent_range_of_handler INT
, is_in_hearing_range_of_handler INT
, is_on_lead FLOAT
, trial_count TEXT
, active BIT
, is_new BIT
, name_error VARCHAR(250)
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
-- Get data from Temp table
INSERT INTO tmp_Assessment_Command_Link (
id_temp
, id_link
, id_assessment
, id_command
, id_reinforcement_schedule
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
-- , trial_count
, active
, is_new
)
SELECT
ASSESSMENT_COMMAND_LINK_T.id_temp
, ASSESSMENT_COMMAND_LINK_T.id_link
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.id_assessment
, ASSESSMENT_COMMAND_LINK.id_assessment
) AS id_assessment
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.id_command
, ASSESSMENT_COMMAND_LINK.id_command
) AS id_command
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.id_reinforcement_schedule
, ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule
) AS id_reinforcement_schedule
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_LINK.distance_from_handler_metres
, 1
) AS distance_from_handler_metres
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_LINK.is_in_sight_of_handler
, 1
) AS is_in_sight_of_handler
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_LINK.is_in_scent_range_of_handler
, 1
) AS is_in_scent_range_of_handler
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_LINK.is_in_hearing_range_of_handler
, 1
) AS is_in_hearing_range_of_handler
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_LINK.is_on_lead
, 0
) AS is_on_lead
/*
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.trial_count
, ASSESSMENT_COMMAND_LINK.trial_count
) AS trial_count
*/
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_LINK.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_COMMAND_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON ASSESSMENT_COMMAND_LINK_T.id_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE ASSESSMENT_COMMAND_LINK_T.guid = a_guid
;
IF a_debug = 1 THEN
SELECT 'Assessment_Command_Link_Temp records';
SELECT * FROM tmp_Assessment_Command_Link;
SELECT COUNT(*) FROM tmp_Assessment_Command_Link;
END IF;
-- Error names
UPDATE tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_LINK.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_LINK.id_command = COMMAND.id_command
LEFT JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULE ON t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule = REINFORCEMENT_SCHEDULE.id_reinforcement_schedule
SET t_ASSESSMENT_COMMAND_LINK.name_error = CONCAT(
COALESCE(CONVERT(ASSESSMENT.created_on, CHAR), '(No Assessment)')
, ' - '
, COALESCE(COMMAND.name, '(No Command)')
, ' - '
, COALESCE(REINFORCEMENT_SCHEDULE.name, '(No Command Modality)')
)
;
IF a_debug = 1 THEN
SELECT 'After set name_error';
SELECT * FROM tmp_Assessment_Command_Link;
SELECT COUNT(*) FROM tmp_Assessment_Command_Link;
END IF;
-- Validation
-- Missing mandatory fields
-- id_assessment
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_LINK.id_assessment = ASSESSMENT.id_assessment
WHERE
ISNULL(t_ASSESSMENT_COMMAND_LINK.id_assessment)
OR ISNULL(ASSESSMENT.id_assessment)
OR ASSESSMENT.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('The following Dog Assessment Command Link(s) do not have a valid Assessment: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_LINK.id_assessment = ASSESSMENT.id_assessment
WHERE
ISNULL(t_ASSESSMENT_COMMAND_LINK.id_assessment)
OR ISNULL(ASSESSMENT.id_assessment)
OR ASSESSMENT.active = 0
;
END IF;
-- id_command
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_LINK.id_command = COMMAND.id_command
WHERE
ISNULL(t_ASSESSMENT_COMMAND_LINK.id_command)
OR ISNULL(COMMAND.id_command)
OR COMMAND.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('The following Dog Assessment Command Link(s) do not have a valid Command: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_LINK.id_command = COMMAND.id_command
WHERE
ISNULL(t_ASSESSMENT_COMMAND_LINK.id_command)
OR ISNULL(COMMAND.id_command)
OR COMMAND.active = 0
;
END IF;
-- id_reinforcement_schedule
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULE ON t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule = REINFORCEMENT_SCHEDULE.id_reinforcement_schedule
WHERE
ISNULL(t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule)
OR ISNULL(REINFORCEMENT_SCHEDULE.id_reinforcement_schedule)
OR REINFORCEMENT_SCHEDULE.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('The following Dog Assessment Command Link(s) do not have a valid Command Modality: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
LEFT JOIN fetchmetrics.DOG_Reinforcement_Schedule REINFORCEMENT_SCHEDULE ON t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule = REINFORCEMENT_SCHEDULE.id_reinforcement_schedule
WHERE
ISNULL(t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule)
OR ISNULL(REINFORCEMENT_SCHEDULE.id_reinforcement_schedule)
OR REINFORCEMENT_SCHEDULE.active = 0
;
END IF;
-- distance_from_handler_metres
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
WHERE IFNULL(t_ASSESSMENT_COMMAND_LINK.distance_from_handler_metres, -1) < 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('The following Assessment_Command_Link(s) do not have a valid Distance From Handler: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
WHERE IFNULL(t_ASSESSMENT_COMMAND_LINK.distance_from_handler_metres, -1) < 0
;
END IF;
-- Permissions
-- Can Create
CALL fetchmetrics.p_dog_calc_user_access(
a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_new -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CU_T.has_access, 0)
INTO
v_can_create
FROM fetchmetrics.DOG_Calc_User_Access_Temp CU_T
WHERE CU_T.GUID = a_guid
LIMIT 1
;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF v_can_create = 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 edit Assessment_Command_Links.'
)
;
END IF;
IF EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * from tmp_Assessment_Command_Link;
END IF;
DELETE FROM tmp_Assessment_Command_Link;
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
START TRANSACTION;
INSERT INTO fetchmetrics.DOG_Dog_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 fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK
INNER JOIN tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
ON ASSESSMENT_COMMAND_LINK.id_link = t_ASSESSMENT_COMMAND_LINK.id_link
AND t_ASSESSMENT_COMMAND_LINK.is_new = 0
SET
ASSESSMENT_COMMAND_LINK.id_assessment = t_ASSESSMENT_COMMAND_LINK.id_assessment
, ASSESSMENT_COMMAND_LINK.id_command = t_ASSESSMENT_COMMAND_LINK.id_command
, ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule = t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule
, ASSESSMENT_COMMAND_LINK.distance_from_handler_metres = t_ASSESSMENT_COMMAND_LINK.distance_from_handler_metres
, ASSESSMENT_COMMAND_LINK.is_in_sight_of_handler = t_ASSESSMENT_COMMAND_LINK.is_in_sight_of_handler
, ASSESSMENT_COMMAND_LINK.is_in_scent_range_of_handler = t_ASSESSMENT_COMMAND_LINK.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_LINK.is_in_hearing_range_of_handler = t_ASSESSMENT_COMMAND_LINK.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_LINK.is_on_lead = t_ASSESSMENT_COMMAND_LINK.is_on_lead
-- , ASSESSMENT_COMMAND_LINK.trial_count = t_ASSESSMENT_COMMAND_LINK.trial_count
, ASSESSMENT_COMMAND_LINK.active = t_ASSESSMENT_COMMAND_LINK.active
, ASSESSMENT_COMMAND_LINK.id_change_set = v_id_change_set
;
INSERT INTO fetchmetrics.DOG_Assessment_Command_Link (
id_temp
, id_assessment
, id_command
, id_reinforcement_schedule
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
-- , trial_count
, active
, id_user_created_by
, created_on
)
SELECT
t_ASSESSMENT_COMMAND_LINK.id_temp
, t_ASSESSMENT_COMMAND_LINK.id_assessment AS id_assessment
, t_ASSESSMENT_COMMAND_LINK.id_command AS id_command
, t_ASSESSMENT_COMMAND_LINK.id_reinforcement_schedule AS id_reinforcement_schedule
, t_ASSESSMENT_COMMAND_LINK.distance_from_handler_metres AS distance_from_handler_metres
, t_ASSESSMENT_COMMAND_LINK.is_in_sight_of_handler AS is_in_sight_of_handler
, t_ASSESSMENT_COMMAND_LINK.is_in_scent_range_of_handler AS is_in_scent_range_of_handler
, t_ASSESSMENT_COMMAND_LINK.is_in_hearing_range_of_handler AS is_in_hearing_range_of_handler
, t_ASSESSMENT_COMMAND_LINK.is_on_lead AS is_on_lead
-- , t_ASSESSMENT_COMMAND_LINK.trial_count AS trial_count
, t_ASSESSMENT_COMMAND_LINK.active AS active
, a_id_user AS created_by
, v_time_start AS created_on
FROM tmp_Assessment_Command_Link t_ASSESSMENT_COMMAND_LINK
WHERE
t_ASSESSMENT_COMMAND_LINK.is_new = 1
AND t_ASSESSMENT_COMMAND_LINK.active = 1
;
INSERT INTO fetchmetrics.DOG_Msg_Error_Temp (
id_type
, code
, msg
, guid
)
SELECT
t_ERROR.id_type
, t_ERROR.code
, t_ERROR.msg
, a_guid
FROM tmp_Msg_Error t_ERROR
;
COMMIT;
END IF;
START TRANSACTION;
DELETE FROM fetchmetrics.DOG_Assessment_Command_Link_Temp
WHERE GUID = a_guid
;
COMMIT;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Link;
END IF;
DROP TEMPORARY TABLE tmp_Assessment_Command_Link;
DROP TEMPORARY TABLE tmp_Msg_Error;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
'ripplesipplenippletippledipplykipple'
DELETE FROM fetchmetrics.DOG_Assessment_Command_Link WHERE id_link > 740;
* /
delete
from fetchmetrics.DOG_Assessment_Command_Link_Audit
where id_link > 768
;
delete
from fetchmetrics.DOG_Assessment_Command_Link
where id_link > 768
;
delete
from fetchmetrics.DOG_Assessment_Command_Link_Temp
;
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Link_Temp
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Link_Temp
;
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Link
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Link
;
INSERT INTO fetchmetrics.DOG_Assessment_Command_Link_Temp (
id_link
, id_assessment
, id_command
, id_reinforcement_schedule
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, active
, guid
)
VALUES (
-1 -- id_link
, 1 -- id_assessment
, 1 -- id_command
, 1 -- id_reinforcement_schedule
, 15 -- distance_from_handler_metres
, 1 -- is_in_sight_of_handler
, 0 -- is_in_scent_range_of_handler
, 0 -- is_in_hearing_range_of_handler
, 0 -- is_on_lead
-- , NULL -- trial_count
, 1 -- active
, 'ripplesipplenippletippledipplykipple'
);
CALL fetchmetrics.p_dog_save_assessment_command_link (
'nipples'
, 'ripplesipplenippletippledipplykipple'
, 1
, 1
);
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Link_Temp
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Link_Temp
;
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Link
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Link
;
*/

View File

@@ -0,0 +1,543 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_training_technique;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_calc_training_technique (
IN a_guid BINARY(36)
, IN a_id_user INT
, IN a_get_all_training_technique BIT
, IN a_get_inactive_training_technique BIT
, IN a_ids_training_technique TEXT
, IN a_names_training_technique TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_has_filter_training_technique_id BIT;
DECLARE v_has_filter_training_technique_name BIT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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_Calc_Training_Technique (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Calc_Training_Technique (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Training_Technique t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_Training_Technique;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
SET a_id_user := IFNULL(a_id_user, 0);
SET a_get_all_training_technique := IFNULL(a_get_all_training_technique, 0);
SET a_get_inactive_training_technique := IFNULL(a_get_inactive_training_technique, 0);
SET a_ids_training_technique := TRIM(IFNULL(a_ids_training_technique, ''));
SET a_names_training_technique := TRIM(IFNULL(a_names_training_technique, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_id_user
, a_get_all_training_technique
, a_get_inactive_training_technique
, a_ids_training_technique
, a_names_training_technique
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_show_errors
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Training_Technique;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Training_Technique;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Training_Technique;
DROP TEMPORARY TABLE IF EXISTS tmp_Training_Technique_Calc_Training_Technique;
CREATE TEMPORARY TABLE tmp_Training_Technique_Calc_Training_Technique (
id_technique INT NOT NULL
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Training_Technique (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_Training_Technique (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Id_Calc_Training_Technique;
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Name_Calc_Training_Technique (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Name_Calc_Training_Technique;
SET v_has_filter_training_technique_id = CASE WHEN a_ids_training_technique <> '' THEN 1 ELSE 0 END;
SET v_has_filter_training_technique_name = CASE WHEN a_names_training_technique <> '' THEN 1 ELSE 0 END;
-- Training_Techniques
IF v_has_filter_training_technique_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_training_technique, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Id_Calc_Training_Technique (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF v_has_filter_training_technique_name = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_names_training_technique, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Name_Calc_Training_Technique (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Training_Technique t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split_Id_Calc_Training_Technique t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUES ON t_SPLIT_ID.as_int = TRAINING_TECHNIQUES.id_technique
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(TRAINING_TECHNIQUES.id_technique)
OR (
TRAINING_TECHNIQUES.active = 0
AND a_get_inactive_training_technique = 0
)
) THEN
INSERT INTO tmp_Msg_Error_Calc_Training_Technique (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Training_Technique IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT_ID.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Id_Calc_Training_Technique t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUES ON t_SPLIT_ID.as_int = TRAINING_TECHNIQUES.id_technique
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(TRAINING_TECHNIQUES.id_technique)
OR (
TRAINING_TECHNIQUES.active = 0
AND a_get_inactive_training_technique = 0
)
;
/* Don't error on names, hand signals, or notes not found
ELSEIF EXISTS ()
*/
ELSE
INSERT INTO tmp_Training_Technique_Calc_Training_Technique (
id_technique
, does_meet_id_filters
, does_meet_non_id_filters
)
WITH
Training_Technique_Id_Filter AS (
SELECT TRAINING_TECHNIQUES.id_technique
FROM tmp_Split_Id_Calc_Training_Technique t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUES ON t_SPLIT_ID.as_int = TRAINING_TECHNIQUES.id_technique
)
, Training_Technique_Name_Filter AS (
SELECT TRAINING_TECHNIQUES.id_technique
FROM tmp_Split_Name_Calc_Training_Technique t_SPLIT_NAME
INNER JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUES ON TRAINING_TECHNIQUES.name LIKE CONCAT('%', t_SPLIT_NAME.substring, '%')
WHERE NULLIF(t_SPLIT_NAME.substring, '') IS NOT NULL
)
, Training_Technique_Filters AS (
SELECT
TRAINING_TECHNIQUES_COMBINED.id_technique
, MAX(TRAINING_TECHNIQUES_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(TRAINING_TECHNIQUES_COMBINED.does_meet_name_filter) AS does_meet_name_filter
FROM (
SELECT
TRAINING_TECHNIQUES_ID_FILTER.id_technique
, 1 AS does_meet_id_filter
, 0 AS does_meet_name_filter
FROM Training_Technique_Id_Filter TRAINING_TECHNIQUES_ID_FILTER
UNION
SELECT
TRAINING_TECHNIQUES_NAME_FILTER.id_technique
, 0 AS does_meet_id_filter
, 1 AS does_meet_name_filter
FROM Training_Technique_Name_Filter TRAINING_TECHNIQUES_NAME_FILTER
) TRAINING_TECHNIQUES_COMBINED
GROUP BY TRAINING_TECHNIQUES_COMBINED.id_technique
)
SELECT
TRAINING_TECHNIQUES.id_technique
, CASE WHEN
v_has_filter_training_technique_id = 0
OR IFNULL(TRAINING_TECHNIQUES_FILTERS.does_meet_id_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_training_technique_name = 0
)
OR IFNULL(TRAINING_TECHNIQUES_FILTERS.does_meet_name_filter, 0) = 1
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUES
LEFT JOIN Training_Technique_Filters TRAINING_TECHNIQUES_FILTERS ON TRAINING_TECHNIQUES.id_technique = TRAINING_TECHNIQUES_FILTERS.id_technique
WHERE
(
a_get_all_training_technique = 1
OR (
v_has_filter_training_technique_id = 1
AND TRAINING_TECHNIQUES_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_training_technique_name = 1
AND TRAINING_TECHNIQUES_FILTERS.does_meet_name_filter = 1
)
)
AND (
a_get_inactive_training_technique = 1
OR TRAINING_TECHNIQUES.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split_Id_Calc_Training_Technique;
DELETE FROM tmp_Split_Name_Calc_Training_Technique;
IF a_debug = 1 THEN
SELECT 'After get Training_Techniques ';
SELECT * FROM tmp_Training_Technique_Calc_Training_Technique;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Training_Technique t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_TRAINING_TECHNIQUES
FROM tmp_Training_Technique_Calc_Training_Technique t_TRAINING_TECHNIQUES
WHERE
(
a_require_all_id_search_filters_met = 1
AND (
t_TRAINING_TECHNIQUES.does_meet_id_filters = 0
)
)
OR (
a_require_all_non_id_search_filters_met = 1
AND (
t_TRAINING_TECHNIQUES.does_meet_non_id_filters = 0
)
)
OR (
a_require_any_id_search_filters_met = 1
AND t_TRAINING_TECHNIQUES.does_meet_id_filters = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_TRAINING_TECHNIQUES.does_meet_non_id_filters = 0
)
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Training_Techniques';
SELECT * FROM tmp_Training_Technique_Calc_Training_Technique;
END IF;
-- Calculated fields
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error_Calc_Training_Technique t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Calc_Training_Technique (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view Dogs and Training_Techniques.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Training_Technique_Calc_Training_Technique;
SELECT * FROM tmp_Msg_Error_Calc_Training_Technique;
END IF;
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Training_Technique t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Training_Technique_Calc_Training_Technique;
END IF;
DELETE FROM tmp_Training_Technique_Calc_Training_Technique;
END IF;
IF a_debug = 1 THEN
SELECT 'After non-permitted data deletion';
END IF;
-- Outputs
START TRANSACTION;
-- Training_Techniques
INSERT INTO fetchmetrics.DOG_Training_Technique_Temp (
guid
, id_technique
, code
, name
, description
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
a_guid
, t_TRAINING_TECHNIQUES.id_technique
, TRAINING_TECHNIQUES.code
, TRAINING_TECHNIQUES.name
, TRAINING_TECHNIQUES.description
, TRAINING_TECHNIQUES.active
, t_TRAINING_TECHNIQUES.does_meet_id_filters
, t_TRAINING_TECHNIQUES.does_meet_non_id_filters
FROM fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUES
INNER JOIN tmp_Training_Technique_Calc_Training_Technique t_TRAINING_TECHNIQUES ON TRAINING_TECHNIQUES.id_technique = t_TRAINING_TECHNIQUES.id_technique
ORDER BY TRAINING_TECHNIQUES.name
;
COMMIT;
-- Errors
IF a_show_errors = 1 THEN
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_Training_Technique t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Training_Technique_Calc_Training_Technique;
END IF;
CALL fetchmetrics.p_dog_clear_calc_dog ( a_guid, 0 );
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Name_Calc_Training_Technique;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Training_Technique;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Training_Technique;
DROP TEMPORARY TABLE IF EXISTS tmp_Training_Technique_Calc_Training_Technique;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_calc_training_technique (
'gripe ' -- a_guid
, 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_training_technique
, 0 -- a_get_inactive_training_technique
, '' -- a_ids_training_technique
, '' -- a_names_training_technique
, 0 -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT *
FROM fetchmetrics.DOG_Training_Technique_Temp
;
CALL fetchmetrics.p_dog_clear_calc_training_technique (
'gripe ' -- a_guid
, 1 -- debug
);
DELETE
FROM fetchmetrics.DOG_Training_Technique_Temp
;
*/

View File

@@ -0,0 +1,45 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_training_technique;
DROP PROCEDURE IF EXISTS fetchmetrics.p_training_technique_clear_calc_training_technique;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_training_technique (
IN a_guid BINARY(36)
, IN a_debug BIT
)
BEGIN
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
START TRANSACTION;
DELETE TRAINING_TECHNIQUES_T
FROM fetchmetrics.DOG_Training_Technique_Temp TRAINING_TECHNIQUES_T
WHERE TRAINING_TECHNIQUES_T.GUID = a_guid
;
COMMIT;
IF a_debug = 1 THEN
CALL fetchmetrics.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_training_technique (
'crips ' -- a_guid
, 1 -- debug
);
SELECT *
FROM fetchmetrics.DOG_Calc_User_Access_Temp
WHERE GUID = 'chips '
;
*/

View File

@@ -0,0 +1,379 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_get_many_training_technique;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_get_many_training_technique (
IN a_id_user INT
, IN a_get_all_training_technique BIT
, IN a_get_inactive_training_technique BIT
, IN a_ids_training_technique TEXT
, IN a_names_training_technique TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_guid BINARY(36);
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
/*
SET a_get_all_training_technique := IFNULL(a_get_all_training_technique, 0);
SET a_get_inactive_training_technique := IFNULL(a_get_inactive_training_technique, 0);
SET a_ids_training_technique := TRIM(IFNULL(a_ids_training_technique, ''));
SET a_names_training_technique := TRIM(IFNULL(a_names_training_technique, ''));
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
*/
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_id_user
, a_get_all_training_technique
, a_get_inactive_training_technique
, a_ids_training_technique
, a_names_training_technique
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_guid
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Training_Technique;
CREATE TEMPORARY TABLE tmp_Training_Technique (
id_technique INT NOT NULL
, code VARCHAR(250)
, name VARCHAR(250)
, description VARCHAR(1000)
, active BIT
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
IF a_debug = 1 THEN
SELECT
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
SELECT COUNT(*) AS Count_Errors FROM tmp_Msg_Error t_ERROR;
SELECT * FROM tmp_Msg_Error t_ERROR;
END IF;
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 Training_Techniques.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
v_guid
, 0 -- a_debug
);
-- Call Training_Technique Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_training_technique -- a_get_all_training_technique
, a_get_inactive_training_technique -- a_get_inactive_training_technique
, a_ids_training_technique -- a_ids_training_technique
, a_names_training_technique -- a_names_training_technique
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_training_technique (
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_training_technique -- a_get_all_training_technique
, a_get_inactive_training_technique -- a_get_inactive_training_technique
, a_ids_training_technique -- a_ids_training_technique
, a_names_training_technique -- a_names_training_technique
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Training_Technique_Temp;
SELECT * FROM fetchmetrics.DOG_Training_Technique_Temp;
END IF;
INSERT INTO tmp_Training_Technique (
id_technique
, code
, name
, description
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
TRAINING_TECHNIQUE_T.id_technique
, TRAINING_TECHNIQUE_T.code
, TRAINING_TECHNIQUE_T.name
, TRAINING_TECHNIQUE_T.description
, TRAINING_TECHNIQUE_T.active
, TRAINING_TECHNIQUE_T.does_meet_id_filters
, TRAINING_TECHNIQUE_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Training_Technique_Temp TRAINING_TECHNIQUE_T
WHERE TRAINING_TECHNIQUE_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Training_Technique;
SELECT * FROM tmp_Training_Technique;
END IF;
END IF;
-- Filter outputs
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Training_Technique;
END IF;
DELETE FROM tmp_Training_Technique;
END IF;
-- Outputs
-- Training_Techniques
SELECT
t_TRAINING_TECHNIQUES.id_technique
, t_TRAINING_TECHNIQUES.code
, t_TRAINING_TECHNIQUES.name
, t_TRAINING_TECHNIQUES.description
, t_TRAINING_TECHNIQUES.active
, t_TRAINING_TECHNIQUES.does_meet_id_filters
, t_TRAINING_TECHNIQUES.does_meet_non_id_filters
FROM tmp_Training_Technique t_TRAINING_TECHNIQUES
LEFT JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUES ON t_TRAINING_TECHNIQUES.id_technique = TRAINING_TECHNIQUES.id_technique
ORDER BY t_TRAINING_TECHNIQUES.name
;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Training_Technique;
END IF;
CALL fetchmetrics.p_dog_clear_calc_training_technique(
v_guid -- a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Training_Technique;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_get_many_training_technique (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_training_technique
, 0 -- a_get_inactive_training_technique
, '' -- a_ids_training_technique
, '' -- a_names_training_technique
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
CALL fetchmetrics.p_dog_get_many_training_technique (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_training_technique
, 0 -- a_get_inactive_training_technique
, '' -- a_ids_training_technique
, 'pat,point' -- a_names_training_technique
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
*/

View File

@@ -0,0 +1,988 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_assessment_command_technique_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment_command_technique_link (
IN a_guid BINARY(36)
, IN a_id_user INT
, IN a_get_all_link BIT
, IN a_get_inactive_link BIT
, IN a_ids_link TEXT
, IN a_get_all_AC_Link BIT
, IN a_get_inactive_AC_Link BIT
, IN a_ids_AC_Link TEXT
, IN a_min_distance_from_handler_metres_AC_Link FLOAT
, IN a_max_distance_from_handler_metres_AC_Link FLOAT
, IN a_value_is_in_sight_of_handler_AC_Link BIT
, IN a_value_is_in_scent_range_of_handler_AC_Link BIT
, IN a_value_is_in_hearing_range_of_handler_AC_Link BIT
, IN a_value_is_on_lead_AC_Link BIT
, IN a_min_trial_count_AC_Link FLOAT
, IN a_max_trial_count_AC_Link FLOAT
, IN a_get_all_assessment BIT
, IN a_get_inactive_assessment BIT
, IN a_ids_assessment TEXT
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
, IN a_names_weather TEXT
, IN a_get_all_lighting_level BIT
, IN a_get_inactive_lighting_level BIT
, IN a_ids_lighting_level TEXT
, IN a_names_lighting_level TEXT
, IN a_get_all_location BIT
, IN a_get_inactive_location BIT
, IN a_ids_location TEXT
, IN a_names_location TEXT
, IN a_get_all_user_handler BIT
, IN a_get_inactive_user_handler BIT
, IN a_ids_user_handler TEXT
-- , IN a_auth0_ids_user_handler TEXT
, IN a_names_user_handler TEXT
, IN a_emails_user_handler TEXT
, IN a_get_all_command_category BIT
, IN a_get_inactive_command_category BIT
, IN a_ids_command_category TEXT
, IN a_names_command_category TEXT
, IN a_get_all_command BIT
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_get_all_training_technique BIT
, IN a_get_inactive_training_technique BIT
, IN a_ids_training_technique TEXT
, IN a_names_training_technique TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_has_filter_assessment_command_technique_link_id BIT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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_Calc_ACT_Link (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Calc_ACT_Link (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_ACT_Link;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
SET a_id_user := IFNULL(a_id_user, 0);
SET a_get_all_link := IFNULL(a_get_all_link, 0);
SET a_get_inactive_link := IFNULL(a_get_inactive_link, 0);
SET a_ids_link := TRIM(IFNULL(a_ids_link, ''));
/*
*/
-- Foreign key filters corected in their Calc Stored Procedures
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_training_technique
, a_get_inactive_training_technique
, a_ids_training_technique
, a_names_training_technique
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_show_errors
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Training_Technique_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_ACT_Link;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Calc_ACT_Link (
id_link INT NOT NULL
, id_assessment INT
, id_command INT
, id_reinforcement_schedule INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE tmp_Training_Technique_Calc_ACT_Link (
id_technique INT NOT NULL
, code VARCHAR(250)
, name VARCHAR(250)
, description VARCHAR(1000)
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Technique_Link_Calc_ACT_Link (
id_link INT NOT NULL
, id_assessment_command_link INT
, id_training_technique INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_ACT_Link (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_ACT_Link (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Id_Calc_ACT_Link;
SET v_has_filter_assessment_command_technique_link_id := CASE WHEN a_ids_link <> '' THEN 1 ELSE 0 END;
-- Call Assessment_Command_Link Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_command_link (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
SELECT * FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
END IF;
INSERT INTO tmp_Assessment_Command_Link_Calc_ACT_Link (
id_link
, id_assessment
, id_command
, id_reinforcement_schedule
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, trial_count
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.id_assessment
, ASSESSMENT_COMMAND_LINK_T.id_command
, ASSESSMENT_COMMAND_LINK_T.id_reinforcement_schedule
, ASSESSMENT_COMMAND_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_LINK_T.trial_count
, ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
WHERE ASSESSMENT_COMMAND_LINK_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Assessment_Command_Link_Calc_ACT_Link;
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACT_Link;
END IF;
END IF;
-- Call Calc Training Technique
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_training_technique -- a_get_all_training_technique
, a_get_inactive_training_technique -- a_get_inactive_training_technique
, a_ids_training_technique -- a_ids_training_technique
, a_names_training_technique -- a_names_training_technique
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_training_technique (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_training_technique -- a_get_all_training_technique
, a_get_inactive_training_technique -- a_get_inactive_training_technique
, a_ids_training_technique -- a_ids_training_technique
, a_names_training_technique -- a_names_training_technique
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_Training_Technique_Calc_ACT_Link (
id_technique
, code
, name
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
TRAINING_TECHNIQUE_T.id_technique
, TRAINING_TECHNIQUE_T.code
, TRAINING_TECHNIQUE_T.name
, TRAINING_TECHNIQUE_T.active
, TRAINING_TECHNIQUE_T.does_meet_id_filters
, TRAINING_TECHNIQUE_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Training_Technique_Temp TRAINING_TECHNIQUE_T
WHERE TRAINING_TECHNIQUE_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Training_Technique_Calc_ACT_Link;
END IF;
END IF;
-- Assessment Command Technique Links
IF v_has_filter_assessment_command_technique_link_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_link, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Id_Calc_ACT_Link (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split_Id_Calc_ACT_Link t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK ON t_SPLIT_ID.as_int = ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link)
OR (
ASSESSMENT_COMMAND_TECHNIQUE_LINK.active = 0
AND a_get_inactive_link = 0
)
) THEN
INSERT INTO tmp_Msg_Error_Calc_ACT_Link (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Assessment_Command_Technique_Link IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT_ID.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Id_Calc_ACT_Link t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK ON t_SPLIT_ID.as_int = ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link)
OR (
ASSESSMENT_COMMAND_TECHNIQUE_LINK.active = 0
AND a_get_inactive_link = 0
)
;
/* Don't error on notes not found
ELSEIF EXISTS ()
*/
ELSE
INSERT INTO tmp_Assessment_Command_Technique_Link_Calc_ACT_Link (
id_link
, id_assessment_command_link
, id_training_technique
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
WITH
Assessment_Command_Technique_Link_Id_Filter AS (
SELECT ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
FROM tmp_Split_Id_Calc_ACT_Link t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK ON t_SPLIT_ID.as_int = ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
)
, Assessment_Command_Technique_Link_Filters AS (
SELECT
ASSESSMENT_COMMAND_TECHNIQUE_LINK_COMBINED.id_link
, MAX(ASSESSMENT_COMMAND_TECHNIQUE_LINK_COMBINED.does_meet_id_filter) AS does_meet_id_filter
FROM (
SELECT
ASSESSMENT_COMMAND_TECHNIQUE_LINK_ID_FILTER.id_link
, 1 AS does_meet_id_filter
FROM Assessment_Command_Technique_Link_Id_Filter ASSESSMENT_COMMAND_TECHNIQUE_LINK_ID_FILTER
) ASSESSMENT_COMMAND_TECHNIQUE_LINK_COMBINED
GROUP BY ASSESSMENT_COMMAND_TECHNIQUE_LINK_COMBINED.id_link
)
SELECT
ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.active
, CASE WHEN
v_has_filter_assessment_command_technique_link_id = 0
OR ASSESSMENT_COMMAND_TECHNIQUE_LINK_FILTERS.does_meet_id_filter = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, 1 AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN Assessment_Command_Technique_Link_Filters ASSESSMENT_COMMAND_TECHNIQUE_LINK_FILTERS ON ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link = ASSESSMENT_COMMAND_TECHNIQUE_LINK_FILTERS.id_link
WHERE
(
a_get_all_link = 1
OR (
v_has_filter_assessment_command_technique_link_id = 1
AND ASSESSMENT_COMMAND_TECHNIQUE_LINK_FILTERS.does_meet_id_filter = 1
)
)
AND (
a_get_inactive_link = 1
OR ASSESSMENT_COMMAND_TECHNIQUE_LINK.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split_Id_Calc_ACT_Link;
IF a_debug = 1 THEN
SELECT 'After get Assessment_Command_Technique_Links';
SELECT * FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN tmp_Assessment_Command_Link_Calc_ACT_Link t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN tmp_Training_Technique_Calc_ACT_Link t_TRAINING_TECHNIQUE ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique = t_TRAINING_TECHNIQUE.id_technique
WHERE
(
a_require_all_id_search_filters_met = 1
AND (
t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
OR IFNULL(t_TRAINING_TECHNIQUE.does_meet_id_filters, 1) = 0
)
)
OR (
a_require_all_non_id_search_filters_met = 1
AND (
t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_non_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_TRAINING_TECHNIQUE.does_meet_non_id_filters, 1) = 0
)
)
OR (
a_require_any_id_search_filters_met = 1
AND t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
AND IFNULL(t_TRAINING_TECHNIQUE.does_meet_id_filters, 1) = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_non_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_TRAINING_TECHNIQUE.does_meet_non_id_filters, 1) = 0
)
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Assessment_Command_Technique_Links';
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACT_Link;
SELECT * FROM tmp_Training_Technique_Calc_ACT_Link;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
END IF;
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error_Calc_ACT_Link t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Calc_ACT_Link (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view Dogs.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACT_Link;
SELECT * FROM tmp_Training_Technique_Calc_ACT_Link;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
END IF;
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACT_Link;
SELECT * FROM tmp_Training_Technique_Calc_ACT_Link;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
END IF;
DELETE FROM tmp_Assessment_Command_Link_Calc_ACT_Link;
DELETE FROM tmp_Training_Technique_Calc_ACT_Link;
DELETE FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
END IF;
IF a_debug = 1 THEN
SELECT 'After non-permitted data deletion';
END IF;
-- Outputs
/*
IF (
NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1)
AND EXISTS (SELECT * FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link)
) THEN
*/
START TRANSACTION;
-- Assessment_Command_Technique_Links
INSERT INTO fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp (
guid
, id_link
, id_assessment_command_link
, id_training_technique
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
a_guid
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.active
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_id_filters
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK
INNER JOIN tmp_Assessment_Command_Technique_Link_Calc_ACT_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK ON ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
;
COMMIT;
-- END IF;
-- Errors
IF a_show_errors = 1 THEN
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_ACT_Link t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Calc_ACT_Link;
SELECT * FROM tmp_Command_Category_Calc_ACT_Link;
SELECT * FROM tmp_Command_Calc_ACT_Link;
SELECT * FROM tmp_Training_Technique_Calc_ACT_Link;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_link (
a_guid
, 0 -- a_debug
);
CALL fetchmetrics.p_dog_clear_calc_training_technique (
a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Technique_Link_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Training_Technique_Calc_ACT_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_ACT_Link;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_calc_assessment_command_technique_link (
'slappery ' -- a_guid
, 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_link
, 0 -- a_get_inactive_link
, '' -- a_ids_link
, 1 -- a_get_all_AC_link
, 0 -- a_get_inactive_AC_link
, '' -- a_ids_AC_link
, NULL -- a_min_distance_from_handler_metres_AC_Link
, NULL -- a_max_distance_from_handler_metres_AC_Link
, NULL -- a_value_is_in_sight_of_handler_AC_Link
, NULL -- a_value_is_in_scent_range_of_handler_AC_Link
, NULL -- a_value_is_in_hearing_range_of_handler_AC_Link
, NULL -- a_value_is_on_lead_AC_Link
, NULL -- a_min_trial_count_AC_Link
, NULL -- a_max_trial_count_AC_Link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
, '' -- a_names_weather
, 1 -- a_get_all_lighting_level
, 0 -- a_get_inactive_lighting_level
, '' -- a_ids_lighting_level
, '' -- a_names_lighting_level
, 1 -- a_get_all_location
, 0 -- a_get_inactive_location
, '' -- a_ids_location
, '' -- a_names_location
, 1 -- a_get_all_user_handler
, 0 -- a_get_inactive_user_handler
, '' -- a_ids_user_handler
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
, '' -- a_names_command_category
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_get_all_training_technique
, 0 -- a_get_inactive_training_technique
, '' -- a_ids_training_technique
, '' -- a_names_training_technique
, 0 -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT *
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp
;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_technique_link (
'slappery ' -- a_guid
, 1 -- debug
);
-- DELETE FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp;
*/

View File

@@ -0,0 +1,44 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_assessment_command_technique_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_assessment_command_technique_link (
IN a_guid BINARY(36)
, IN a_debug BIT
)
BEGIN
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
START TRANSACTION;
DELETE ASSESSMENT_COMMAND_TECHNIQUE_LINKS_T
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp ASSESSMENT_COMMAND_TECHNIQUE_LINKS_T
WHERE ASSESSMENT_COMMAND_TECHNIQUE_LINKS_T.GUID = a_guid
;
COMMIT;
IF a_debug = 1 THEN
CALL fetchmetrics.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_assessment_command_technique_link (
'crips ' -- a_guid
, 1 -- debug
);
SELECT *
FROM fetchmetrics.DOG_Calc_User_Access_Temp
WHERE GUID = 'chips '
;
*/

View File

@@ -0,0 +1,663 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_get_many_assessment_command_technique_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_command_technique_link (
IN a_id_user INT
, IN a_get_all_link BIT
, IN a_get_inactive_link BIT
, IN a_ids_link TEXT
, IN a_get_all_AC_Link BIT
, IN a_get_inactive_AC_Link BIT
, IN a_ids_AC_Link TEXT
, IN a_min_distance_from_handler_metres_AC_Link FLOAT
, IN a_max_distance_from_handler_metres_AC_Link FLOAT
, IN a_value_is_in_sight_of_handler_AC_Link BIT
, IN a_value_is_in_scent_range_of_handler_AC_Link BIT
, IN a_value_is_in_hearing_range_of_handler_AC_Link BIT
, IN a_value_is_on_lead_AC_Link BIT
, IN a_min_trial_count_AC_Link FLOAT
, IN a_max_trial_count_AC_Link FLOAT
, IN a_get_all_assessment BIT
, IN a_get_inactive_assessment BIT
, IN a_ids_assessment TEXT
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
, IN a_names_weather TEXT
, IN a_get_all_lighting_level BIT
, IN a_get_inactive_lighting_level BIT
, IN a_ids_lighting_level TEXT
, IN a_names_lighting_level TEXT
, IN a_get_all_location BIT
, IN a_get_inactive_location BIT
, IN a_ids_location TEXT
, IN a_names_location TEXT
, IN a_get_all_user_handler BIT
, IN a_get_inactive_user_handler BIT
, IN a_ids_user_handler TEXT
-- , IN a_auth0_ids_user_handler TEXT
, IN a_names_user_handler TEXT
, IN a_emails_user_handler TEXT
, IN a_get_all_command_category BIT
, IN a_get_inactive_command_category BIT
, IN a_ids_command_category TEXT
, IN a_names_command_category TEXT
, IN a_get_all_command BIT
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_get_all_training_technique BIT
, IN a_get_inactive_training_technique BIT
, IN a_ids_training_technique TEXT
, IN a_names_training_technique TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_guid BINARY(36);
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_guid := UUID();
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
SET a_id_user := IFNULL(a_id_user, 0);
/*
Filters handled by Calc Stored Procedure
*/
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_id_user
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_training_technique
, a_get_inactive_training_technique
, a_ids_training_technique
, a_names_training_technique
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_guid
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Technique_Link;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Technique_Link (
id_link INT NOT NULL
, id_assessment_command_link INT
, id_training_technique INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
-- Permissions
IF a_debug = 1 THEN
SELECT
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
v_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = v_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
SELECT COUNT(*) AS Count_Errors FROM tmp_Msg_Error t_ERROR;
SELECT * FROM tmp_Msg_Error t_ERROR;
END IF;
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 Assessment_Command_Technique_Links.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
v_guid
, 0 -- a_debug
);
-- Call Assessment_Command_Technique_Link Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_training_technique
, a_get_inactive_training_technique
, a_ids_training_technique
, a_names_training_technique
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_command_technique_link (
v_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_training_technique
, a_get_inactive_training_technique
, a_ids_training_technique
, a_names_training_technique
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp;
SELECT * FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp;
END IF;
INSERT INTO tmp_Assessment_Command_Technique_Link (
id_link
, id_assessment_command_link
, id_training_technique
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_assessment_command_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_training_technique
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.active
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp ASSESSMENT_COMMAND_TECHNIQUE_LINK_T
WHERE ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.GUID = v_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Assessment_Command_Technique_Link;
SELECT * FROM tmp_Assessment_Command_Technique_Link;
END IF;
END IF;
-- Filter outputs
IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Technique_Link;
END IF;
DELETE FROM tmp_Assessment_Command_Technique_Link;
END IF;
-- Outputs
-- Assessment_Command_Technique_Links
SELECT
t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique
, TRAINING_TECHNIQUE.name AS name_training_technique
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.active
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_id_filters
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.does_meet_non_id_filters
FROM tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUE ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique = TRAINING_TECHNIQUE.id_technique
LIMIT 1000
;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Command_Technique_Link;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_technique_link (
v_guid -- a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Technique_Link;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_get_many_assessment_command_technique_link (
1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_link
, 0 -- a_get_inactive_link
, '' -- a_ids_link
, 1 -- a_get_all_AC_link
, 0 -- a_get_inactive_AC_link
, '' -- a_ids_AC_link
, NULL -- a_min_distance_from_handler_metres_AC_Link
, NULL -- a_max_distance_from_handler_metres_AC_Link
, NULL -- a_value_is_in_sight_of_handler_AC_Link
, NULL -- a_value_is_in_scent_range_of_handler_AC_Link
, NULL -- a_value_is_in_hearing_range_of_handler_AC_Link
, NULL -- a_value_is_on_lead_AC_Link
, NULL -- a_min_trial_count_AC_Link
, NULL -- a_max_trial_count_AC_Link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
, '' -- a_names_weather
, 1 -- a_get_all_lighting_level
, 0 -- a_get_inactive_lighting_level
, '' -- a_ids_lighting_level
, '' -- a_names_lighting_level
, 1 -- a_get_all_location
, 0 -- a_get_inactive_location
, '' -- a_ids_location
, '' -- a_names_location
, 1 -- a_get_all_user_handler
, 0 -- a_get_inactive_user_handler
, '' -- a_ids_user_handler
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
, '' -- a_names_command_category
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_get_all_training_technique
, 0 -- a_get_inactive_training_technique
, '' -- a_ids_training_technique
, '' -- a_names_training_technique
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 1 -- a_require_any_non_id_search_filters_met
, 1 -- a_debug
);
*/

View File

@@ -0,0 +1,480 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_save_assessment_command_technique_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_save_assessment_command_technique_link (
IN a_comment VARCHAR(500),
IN a_guid BINARY(36),
IN a_id_user INT,
IN a_debug BIT
)
BEGIN
DECLARE v_can_admin BIT;
DECLARE v_can_create BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_id_access_level_edit INT;
DECLARE v_id_change_set INT;
DECLARE v_id_permission_dog_new INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_time_start TIMESTAMP(6);
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 (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
START TRANSACTION;
INSERT INTO fetchmetrics.DOG_Msg_Error_Temp (
id_type
, code
, msg
, guid
)
SELECT
t_ERROR.id_type
, t_ERROR.code
, t_ERROR.msg
, a_guid
FROM tmp_Msg_Error t_ERROR
;
COMMIT;
DROP TABLE IF EXISTS tmp_Msg_Error;
END;
SET SESSION group_concat_max_len=15000;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Assessment_Command_Technique_Link_Copy;
DROP TABLE IF EXISTS tmp_Assessment_Command_Technique_Link;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Technique_Link (
id_temp INT
, id_link INT
, id_assessment_command_link INT
, id_training_technique INT
, active BIT
, is_new BIT
, name_error VARCHAR(250)
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Technique_Link_Copy (
id_temp INT
, id_link INT
, id_assessment_command_link INT
, id_training_technique INT
, active BIT
, is_new BIT
, name_error VARCHAR(250)
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
-- Get data from Temp table
INSERT INTO tmp_Assessment_Command_Technique_Link (
id_temp
, id_link
, id_assessment_command_link
, id_training_technique
, active
, is_new
)
SELECT
ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_temp
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link
, COALESCE(
ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_assessment_command_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
) AS id_assessment_command_link
, COALESCE(
ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_training_technique
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique
) AS id_training_technique
, COALESCE(
ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.active
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp ASSESSMENT_COMMAND_TECHNIQUE_LINK_T
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK ON ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link = ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
WHERE ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.guid = a_guid
;
IF a_debug = 1 THEN
SELECT 'Assessment_Command_Technique_Link_Temp records';
SELECT * FROM tmp_Assessment_Command_Technique_Link;
SELECT COUNT(*) FROM tmp_Assessment_Command_Technique_Link;
END IF;
-- Error names
UPDATE tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUE ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique = TRAINING_TECHNIQUE.id_technique
SET t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.name_error = CONCAT(
COALESCE(ASSESSMENT_COMMAND_LINK.id_link, '(No Assessment Command Link)')
, ' - '
, COALESCE(TRAINING_TECHNIQUE.name, '(No Training Technique)')
)
;
IF a_debug = 1 THEN
SELECT 'After set name_error';
SELECT * FROM tmp_Assessment_Command_Technique_Link;
SELECT COUNT(*) FROM tmp_Assessment_Command_Technique_Link;
END IF;
-- Validation
-- Missing mandatory fields
-- id_assessment_command_link
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.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('The following Dog Assessment Command Link(s) do not have a valid Assessment: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.active = 0
;
END IF;
-- id_training_technique
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUE ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique = TRAINING_TECHNIQUE.id_technique
WHERE
ISNULL(t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique)
OR ISNULL(TRAINING_TECHNIQUE.id_technique)
OR TRAINING_TECHNIQUE.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('The following Dog Assessment Command Link(s) do not have a valid Command Modality: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
LEFT JOIN fetchmetrics.DOG_Training_Technique TRAINING_TECHNIQUE ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique = TRAINING_TECHNIQUE.id_technique
WHERE
ISNULL(t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique)
OR ISNULL(TRAINING_TECHNIQUE.id_technique)
OR TRAINING_TECHNIQUE.active = 0
;
END IF;
-- Permissions
-- Can Create
CALL fetchmetrics.p_dog_calc_user_access(
a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_new -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CU_T.has_access, 0)
INTO
v_can_create
FROM fetchmetrics.DOG_Calc_User_Access_Temp CU_T
WHERE CU_T.GUID = a_guid
LIMIT 1
;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF v_can_create = 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 edit Assessment_Command_Technique_Links.'
)
;
END IF;
IF EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * from tmp_Assessment_Command_Technique_Link;
END IF;
DELETE FROM tmp_Assessment_Command_Technique_Link;
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
START TRANSACTION;
INSERT INTO fetchmetrics.DOG_Dog_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 fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK
INNER JOIN tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
ON ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
AND t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.is_new = 0
SET
ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.active = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.active
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_change_set = v_id_change_set
;
INSERT INTO fetchmetrics.DOG_Assessment_Command_Technique_Link (
id_temp
, id_assessment_command_link
, id_training_technique
, active
, id_user_created_by
, created_on
)
SELECT
t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_temp
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_training_technique
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.active
, a_id_user AS id_user_created_by
, v_time_start AS created_on
FROM tmp_Assessment_Command_Technique_Link t_ASSESSMENT_COMMAND_TECHNIQUE_LINK
WHERE
t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.is_new = 1
AND t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.active = 1
;
INSERT INTO fetchmetrics.DOG_Msg_Error_Temp (
id_type
, code
, msg
, guid
)
SELECT
t_ERROR.id_type
, t_ERROR.code
, t_ERROR.msg
, a_guid
FROM tmp_Msg_Error t_ERROR
;
COMMIT;
END IF;
START TRANSACTION;
DELETE FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp
WHERE GUID = a_guid
;
COMMIT;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Technique_Link;
END IF;
DROP TEMPORARY TABLE tmp_Assessment_Command_Technique_Link;
DROP TEMPORARY TABLE tmp_Msg_Error;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
'ripplesipplenippletippledipplykipple'
DELETE FROM fetchmetrics.DOG_Assessment_Command_Technique_Link WHERE id_link > 740;
* /
delete
from fetchmetrics.DOG_Assessment_Command_Technique_Link_Audit
where id_link > 768
;
delete
from fetchmetrics.DOG_Assessment_Command_Technique_Link
where id_link > 768
;
delete
from fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp
;
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp
;
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Technique_Link
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Technique_Link
;
INSERT INTO fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp (
id_link
, id_assessment_command_link
, id_training_technique
, active
, guid
)
VALUES (
-1 -- id_link
, 1 -- id_assessment_command_link
, 1 -- id_training_technique
, 1 -- active
, 'ripplesipplenippletippledipplykipple'
);
CALL fetchmetrics.p_dog_save_assessment_command_technique_link (
'nipples'
, 'ripplesipplenippletippledipplykipple'
, 1
, 1
);
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp
;
select
*
-- COUNT(*)
-- delete
from fetchmetrics.DOG_Assessment_Command_Technique_Link
;
select COUNT(*)
from fetchmetrics.DOG_Assessment_Command_Technique_Link
;
*/

View File

@@ -0,0 +1,988 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_calc_assessment_command_modality_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment_command_modality_link (
IN a_guid BINARY(36)
, IN a_id_user INT
, IN a_get_all_link BIT
, IN a_get_inactive_link BIT
, IN a_ids_link TEXT
, IN a_get_all_AC_Link BIT
, IN a_get_inactive_AC_Link BIT
, IN a_ids_AC_Link TEXT
, IN a_min_distance_from_handler_metres_AC_Link FLOAT
, IN a_max_distance_from_handler_metres_AC_Link FLOAT
, IN a_value_is_in_sight_of_handler_AC_Link BIT
, IN a_value_is_in_scent_range_of_handler_AC_Link BIT
, IN a_value_is_in_hearing_range_of_handler_AC_Link BIT
, IN a_value_is_on_lead_AC_Link BIT
, IN a_min_trial_count_AC_Link FLOAT
, IN a_max_trial_count_AC_Link FLOAT
, IN a_get_all_assessment BIT
, IN a_get_inactive_assessment BIT
, IN a_ids_assessment TEXT
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
, IN a_names_weather TEXT
, IN a_get_all_lighting_level BIT
, IN a_get_inactive_lighting_level BIT
, IN a_ids_lighting_level TEXT
, IN a_names_lighting_level TEXT
, IN a_get_all_location BIT
, IN a_get_inactive_location BIT
, IN a_ids_location TEXT
, IN a_names_location TEXT
, IN a_get_all_user_handler BIT
, IN a_get_inactive_user_handler BIT
, IN a_ids_user_handler TEXT
-- , IN a_auth0_ids_user_handler TEXT
, IN a_names_user_handler TEXT
, IN a_emails_user_handler TEXT
, IN a_get_all_command_category BIT
, IN a_get_inactive_command_category BIT
, IN a_ids_command_category TEXT
, IN a_names_command_category TEXT
, IN a_get_all_command BIT
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_get_all_command_modality BIT
, IN a_get_inactive_command_modality BIT
, IN a_ids_command_modality TEXT
, IN a_names_command_modality TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
, IN a_require_any_non_id_search_filters_met BIT
, IN a_show_errors BIT
, IN a_debug BIT
)
BEGIN
DECLARE v_can_view BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_code_type_error_no_permission VARCHAR(100);
DECLARE v_has_filter_assessment_command_modality_link_id BIT;
DECLARE v_id_access_level_view INT;
DECLARE v_id_minimum INT;
DECLARE v_id_permission_dog_view INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_id_type_error_no_permission INT;
DECLARE v_time_start TIMESTAMP(6);
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_Calc_ACM_Link (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Calc_ACM_Link (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Calc_ACM_Link;
END;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_code_type_error_no_permission := 'NO_PERMISSION';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1);
SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1);
SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
SET a_id_user := IFNULL(a_id_user, 0);
SET a_get_all_link := IFNULL(a_get_all_link, 0);
SET a_get_inactive_link := IFNULL(a_get_inactive_link, 0);
SET a_ids_link := TRIM(IFNULL(a_ids_link, ''));
/*
*/
-- Foreign key filters corected in their Calc Stored Procedures
SET a_require_all_id_search_filters_met := IFNULL(a_require_all_id_search_filters_met, 1);
SET a_require_any_id_search_filters_met := IFNULL(a_require_any_id_search_filters_met, 1);
SET a_require_all_non_id_search_filters_met := IFNULL(a_require_all_non_id_search_filters_met, 0);
SET a_require_any_non_id_search_filters_met := IFNULL(a_require_any_non_id_search_filters_met, 1);
SET a_show_errors := IFNULL(a_show_errors, 0);
SET a_debug := IFNULL(a_debug, 0);
IF a_debug = 1 THEN
SELECT
a_guid
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met
, a_show_errors
, a_debug
;
SELECT
v_id_type_error_bad_data
, v_id_type_error_no_permission
, v_id_permission_dog_view
, v_time_start
;
END IF;
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Command_Modality_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_ACM_Link;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Calc_ACM_Link (
id_link INT NOT NULL
, id_assessment INT
, id_command INT
, id_reinforcement_schedule INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE tmp_Command_Modality_Calc_ACM_Link (
id_command_modality INT NOT NULL
, code VARCHAR(250)
, name VARCHAR(250)
, description VARCHAR(1000)
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Calc_ACM_Link (
id_link INT NOT NULL
, id_assessment_command_link INT
, id_command_modality INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_ACM_Link (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250) NOT NULL
, msg TEXT NOT NULL
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_ACM_Link (
substring VARCHAR(4000) NOT NULL
, as_int INT
);
DELETE FROM tmp_Split_Id_Calc_ACM_Link;
SET v_has_filter_assessment_command_modality_link_id := CASE WHEN a_ids_link <> '' THEN 1 ELSE 0 END;
-- Call Assessment_Command_Link Calc
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_command_link (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
, a_get_inactive_lighting_level
, a_ids_lighting_level
, a_names_lighting_level
, a_get_all_location
, a_get_inactive_location
, a_ids_location
, a_names_location
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
SELECT * FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
END IF;
INSERT INTO tmp_Assessment_Command_Link_Calc_ACM_Link (
id_link
, id_assessment
, id_command
, id_reinforcement_schedule
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, trial_count
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.id_assessment
, ASSESSMENT_COMMAND_LINK_T.id_command
, ASSESSMENT_COMMAND_LINK_T.id_reinforcement_schedule
, ASSESSMENT_COMMAND_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_LINK_T.trial_count
, ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
WHERE ASSESSMENT_COMMAND_LINK_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT COUNT(*) FROM tmp_Assessment_Command_Link_Calc_ACM_Link;
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACM_Link;
END IF;
END IF;
-- Call Calc Command Modality
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_command_modality -- a_get_all_command_modality
, a_get_inactive_command_modality -- a_get_inactive_command_modality
, a_ids_command_modality -- a_ids_command_modality
, a_names_command_modality -- a_names_command_modality
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_command_modality (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_command_modality -- a_get_all_command_modality
, a_get_inactive_command_modality -- a_get_inactive_command_modality
, a_ids_command_modality -- a_ids_command_modality
, a_names_command_modality -- a_names_command_modality
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_Command_Modality_Calc_ACM_Link (
id_command_modality
, code
, name
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
COMMAND_MODALITY_T.id_command_modality
, COMMAND_MODALITY_T.code
, COMMAND_MODALITY_T.name
, COMMAND_MODALITY_T.active
, COMMAND_MODALITY_T.does_meet_id_filters
, COMMAND_MODALITY_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Command_Modality_Temp COMMAND_MODALITY_T
WHERE COMMAND_MODALITY_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Command_Modality_Calc_ACM_Link;
END IF;
END IF;
-- Assessment Command Modality Links
IF v_has_filter_assessment_command_modality_link_id = 1 THEN
CALL fetchmetrics.p_core_split(a_guid, a_ids_link, ',', a_debug);
SET sql_mode = '';
INSERT INTO tmp_Split_Id_Calc_ACM_Link (
substring
, as_int
)
SELECT
SPLIT_T.substring
, CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int
FROM fetchmetrics.CORE_Split_Temp SPLIT_T
WHERE
SPLIT_T.GUID = a_guid
AND IFNULL(SPLIT_T.substring, '') <> ''
;
CALL fetchmetrics.p_core_clear_split( a_guid );
END IF;
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF EXISTS (
SELECT *
FROM tmp_Split_Id_Calc_ACM_Link t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_SPLIT_ID.as_int = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ASSESSMENT_COMMAND_MODALITY_LINK.id_link)
OR (
ASSESSMENT_COMMAND_MODALITY_LINK.active = 0
AND a_get_inactive_link = 0
)
) THEN
INSERT INTO tmp_Msg_Error_Calc_ACM_Link (
id_type
, code
, msg
)
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('Invalid or inactive Assessment_Command_Modality_Link IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT_ID.substring SEPARATOR ', '), 'NULL'))
FROM tmp_Split_Id_Calc_ACM_Link t_SPLIT_ID
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_SPLIT_ID.as_int = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
WHERE
ISNULL(t_SPLIT_ID.as_int)
OR ISNULL(ASSESSMENT_COMMAND_MODALITY_LINK.id_link)
OR (
ASSESSMENT_COMMAND_MODALITY_LINK.active = 0
AND a_get_inactive_link = 0
)
;
/* Don't error on notes not found
ELSEIF EXISTS ()
*/
ELSE
INSERT INTO tmp_Assessment_Command_Modality_Link_Calc_ACM_Link (
id_link
, id_assessment_command_link
, id_command_modality
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
WITH
Assessment_Command_Modality_Link_Id_Filter AS (
SELECT ASSESSMENT_COMMAND_MODALITY_LINK.id_link
FROM tmp_Split_Id_Calc_ACM_Link t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_SPLIT_ID.as_int = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
)
, Assessment_Command_Modality_Link_Filters AS (
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK_COMBINED.id_link
, MAX(ASSESSMENT_COMMAND_MODALITY_LINK_COMBINED.does_meet_id_filter) AS does_meet_id_filter
FROM (
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK_ID_FILTER.id_link
, 1 AS does_meet_id_filter
FROM Assessment_Command_Modality_Link_Id_Filter ASSESSMENT_COMMAND_MODALITY_LINK_ID_FILTER
) ASSESSMENT_COMMAND_MODALITY_LINK_COMBINED
GROUP BY ASSESSMENT_COMMAND_MODALITY_LINK_COMBINED.id_link
)
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
, ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality
, ASSESSMENT_COMMAND_MODALITY_LINK.active
, CASE WHEN
v_has_filter_assessment_command_modality_link_id = 0
OR ASSESSMENT_COMMAND_MODALITY_LINK_FILTERS.does_meet_id_filter = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, 1 AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN Assessment_Command_Modality_Link_Filters ASSESSMENT_COMMAND_MODALITY_LINK_FILTERS ON ASSESSMENT_COMMAND_MODALITY_LINK.id_link = ASSESSMENT_COMMAND_MODALITY_LINK_FILTERS.id_link
WHERE
(
a_get_all_link = 1
OR (
v_has_filter_assessment_command_modality_link_id = 1
AND ASSESSMENT_COMMAND_MODALITY_LINK_FILTERS.does_meet_id_filter = 1
)
)
AND (
a_get_inactive_link = 1
OR ASSESSMENT_COMMAND_MODALITY_LINK.active = 1
)
;
END IF;
END IF;
DELETE FROM tmp_Split_Id_Calc_ACM_Link;
IF a_debug = 1 THEN
SELECT 'After get Assessment_Command_Modality_Links';
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
END IF;
-- Filter records
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_ASSESSMENT_COMMAND_MODALITY_LINK
FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN tmp_Assessment_Command_Link_Calc_ACM_Link t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN tmp_Command_Modality_Calc_ACM_Link t_COMMAND_MODALITY ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality = t_COMMAND_MODALITY.id_command_modality
WHERE
(
a_require_all_id_search_filters_met = 1
AND (
t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
OR IFNULL(t_COMMAND_MODALITY.does_meet_id_filters, 1) = 0
)
)
OR (
a_require_all_non_id_search_filters_met = 1
AND (
t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_COMMAND_MODALITY.does_meet_non_id_filters, 1) = 0
)
)
OR (
a_require_any_id_search_filters_met = 1
AND t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
AND IFNULL(t_COMMAND_MODALITY.does_meet_id_filters, 1) = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_COMMAND_MODALITY.does_meet_non_id_filters, 1) = 0
)
;
END IF;
IF a_debug = 1 THEN
SELECT 'After filter Assessment_Command_Modality_Links';
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACM_Link;
SELECT * FROM tmp_Command_Modality_Calc_ACM_Link;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
END IF;
-- Permissions
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_user_access(
a_guid -- a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_view -- ids_permission
, v_id_access_level_view -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CALC_USER_T.has_access, 0)
INTO
v_can_view
FROM fetchmetrics.DOG_Calc_User_Access_Temp CALC_USER_T
WHERE CALC_USER_T.GUID = a_guid
LIMIT 1
;
IF a_debug = 1 THEN
SELECT v_can_view;
END IF;
IF (v_can_view = 0) THEN
DELETE t_ME
FROM tmp_Msg_Error_Calc_ACM_Link t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Calc_ACM_Link (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to view Dogs.'
)
;
END IF;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACM_Link;
SELECT * FROM tmp_Command_Modality_Calc_ACM_Link;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
END IF;
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Link_Calc_ACM_Link;
SELECT * FROM tmp_Command_Modality_Calc_ACM_Link;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
END IF;
DELETE FROM tmp_Assessment_Command_Link_Calc_ACM_Link;
DELETE FROM tmp_Command_Modality_Calc_ACM_Link;
DELETE FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
END IF;
IF a_debug = 1 THEN
SELECT 'After non-permitted data deletion';
END IF;
-- Outputs
/*
IF (
NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1)
AND EXISTS (SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link)
) THEN
*/
START TRANSACTION;
-- Assessment_Command_Modality_Links
INSERT INTO fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp (
guid
, id_link
, id_assessment_command_link
, id_command_modality
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
a_guid
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality
, t_ASSESSMENT_COMMAND_MODALITY_LINK.active
, t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters
, t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK
INNER JOIN tmp_Assessment_Command_Modality_Link_Calc_ACM_Link t_ASSESSMENT_COMMAND_MODALITY_LINK ON ASSESSMENT_COMMAND_MODALITY_LINK.id_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
;
COMMIT;
-- END IF;
-- Errors
IF a_show_errors = 1 THEN
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Calc_ACM_Link t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Calc_ACM_Link;
SELECT * FROM tmp_Command_Category_Calc_ACM_Link;
SELECT * FROM tmp_Command_Calc_ACM_Link;
SELECT * FROM tmp_Command_Modality_Calc_ACM_Link;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_link (
a_guid
, 0 -- a_debug
);
CALL fetchmetrics.p_dog_clear_calc_command_modality (
a_guid
, 0 -- a_debug
);
DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Command_Modality_Calc_ACM_Link;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_ACM_Link;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_calc_assessment_command_modality_link (
'slappery ' -- a_guid
, 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user
, 1 -- a_get_all_link
, 0 -- a_get_inactive_link
, '' -- a_ids_link
, 1 -- a_get_all_AC_link
, 0 -- a_get_inactive_AC_link
, '' -- a_ids_AC_link
, NULL -- a_min_distance_from_handler_metres_AC_Link
, NULL -- a_max_distance_from_handler_metres_AC_Link
, NULL -- a_value_is_in_sight_of_handler_AC_Link
, NULL -- a_value_is_in_scent_range_of_handler_AC_Link
, NULL -- a_value_is_in_hearing_range_of_handler_AC_Link
, NULL -- a_value_is_on_lead_AC_Link
, NULL -- a_min_trial_count_AC_Link
, NULL -- a_max_trial_count_AC_Link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
, '' -- a_names_weather
, 1 -- a_get_all_lighting_level
, 0 -- a_get_inactive_lighting_level
, '' -- a_ids_lighting_level
, '' -- a_names_lighting_level
, 1 -- a_get_all_location
, 0 -- a_get_inactive_location
, '' -- a_ids_location
, '' -- a_names_location
, 1 -- a_get_all_user_handler
, 0 -- a_get_inactive_user_handler
, '' -- a_ids_user_handler
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
, '' -- a_names_command_category
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_get_all_command_modality
, 0 -- a_get_inactive_command_modality
, '' -- a_ids_command_modality
, '' -- a_names_command_modality
, 0 -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT *
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp
;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_modality_link (
'slappery ' -- a_guid
, 1 -- debug
);
-- DELETE FROM fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp;
*/

View File

@@ -0,0 +1,44 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_clear_calc_assessment_command_technique_link;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_clear_calc_assessment_command_technique_link (
IN a_guid BINARY(36)
, IN a_debug BIT
)
BEGIN
DECLARE v_time_start TIMESTAMP(6);
SET v_time_start := CURRENT_TIMESTAMP(6);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
START TRANSACTION;
DELETE ASSESSMENT_COMMAND_TECHNIQUE_LINKS_T
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp ASSESSMENT_COMMAND_TECHNIQUE_LINKS_T
WHERE ASSESSMENT_COMMAND_TECHNIQUE_LINKS_T.GUID = a_guid
;
COMMIT;
IF a_debug = 1 THEN
CALL fetchmetrics.p_debug_timing_reporting( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_clear_calc_assessment_command_technique_link (
'crips ' -- a_guid
, 1 -- debug
);
SELECT *
FROM fetchmetrics.DOG_Calc_User_Access_Temp
WHERE GUID = 'chips '
;
*/

View File

@@ -9,14 +9,18 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_command_modality_link (
, IN a_get_all_link BIT
, IN a_get_inactive_link BIT
, IN a_ids_link TEXT
, IN a_min_distance_from_handler_metres_link FLOAT
, IN a_max_distance_from_handler_metres_link FLOAT
, IN a_value_is_in_sight_of_handler_link BIT
, IN a_value_is_in_scent_range_of_handler_link BIT
, IN a_value_is_in_hearing_range_of_handler_link BIT
, IN a_value_is_on_lead_link BIT
, IN a_min_trial_count_link FLOAT
, IN a_max_trial_count_link FLOAT
, IN a_get_all_AC_Link BIT
, IN a_get_inactive_AC_Link BIT
, IN a_ids_AC_Link TEXT
, IN a_min_distance_from_handler_metres_AC_Link FLOAT
, IN a_max_distance_from_handler_metres_AC_Link FLOAT
, IN a_value_is_in_sight_of_handler_AC_Link BIT
, IN a_value_is_in_scent_range_of_handler_AC_Link BIT
, IN a_value_is_in_hearing_range_of_handler_AC_Link BIT
, IN a_value_is_on_lead_AC_Link BIT
, IN a_min_trial_count_AC_Link FLOAT
, IN a_max_trial_count_AC_Link FLOAT
, IN a_get_all_assessment BIT
, IN a_get_inactive_assessment BIT
@@ -24,6 +28,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_command_modality_link (
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -54,16 +62,16 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_command_modality_link (
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_get_all_command_modality BIT
, IN a_get_inactive_command_modality BIT
, IN a_ids_command_modality TEXT
, IN a_names_command_modality TEXT
, IN a_get_all_bribe BIT
, IN a_get_inactive_bribe BIT
, IN a_ids_bribe TEXT
, IN a_names_bribe TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
@@ -150,14 +158,18 @@ BEGIN
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_min_distance_from_handler_metres_link
, a_max_distance_from_handler_metres_link
, a_value_is_in_sight_of_handler_link
, a_value_is_in_scent_range_of_handler_link
, a_value_is_in_hearing_range_of_handler_link
, a_value_is_on_lead_link
, a_min_trial_count_link
, a_max_trial_count_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
@@ -165,6 +177,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -195,15 +211,15 @@ BEGIN
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
@@ -226,16 +242,8 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link (
id_link INT NOT NULL
, id_assessment INT
, id_command INT
, id_assessment_command_link INT
, id_command_modality INT
, id_bribe INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
@@ -335,14 +343,18 @@ BEGIN
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_min_distance_from_handler_metres_link
, a_max_distance_from_handler_metres_link
, a_value_is_in_sight_of_handler_link
, a_value_is_in_scent_range_of_handler_link
, a_value_is_in_hearing_range_of_handler_link
, a_value_is_on_lead_link
, a_min_trial_count_link
, a_max_trial_count_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
@@ -350,6 +362,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -380,15 +396,15 @@ BEGIN
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
@@ -405,14 +421,18 @@ BEGIN
, a_get_all_link
, a_get_inactive_link
, a_ids_link
, a_min_distance_from_handler_metres_link
, a_max_distance_from_handler_metres_link
, a_value_is_in_sight_of_handler_link
, a_value_is_in_scent_range_of_handler_link
, a_value_is_in_hearing_range_of_handler_link
, a_value_is_on_lead_link
, a_min_trial_count_link
, a_max_trial_count_link
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
@@ -420,6 +440,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -450,15 +474,15 @@ BEGIN
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
@@ -475,32 +499,16 @@ BEGIN
INSERT INTO tmp_Assessment_Command_Modality_Link (
id_link
, id_assessment
, id_command
, id_assessment_command_link
, id_command_modality
, id_bribe
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, trial_count
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment_command_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command_modality
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_bribe
, ASSESSMENT_COMMAND_MODALITY_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_MODALITY_LINK_T.trial_count
, ASSESSMENT_COMMAND_MODALITY_LINK_T.active
, ASSESSMENT_COMMAND_MODALITY_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_MODALITY_LINK_T.does_meet_non_id_filters
@@ -528,33 +536,15 @@ BEGIN
-- Assessment_Command_Modality_Links
SELECT
t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
, ASSESSMENT.created_on AS created_on_assessment
, COMMAND.id_command_category
, COMMAND_CATEGORY.name AS name_command_category
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command
, COMMAND.name AS name_command
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality
, COMMAND_MODALITY.name AS name_command_modality
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe
, BRIBE.name AS name_bribe
, t_ASSESSMENT_COMMAND_MODALITY_LINK.distance_from_handler_metres
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_sight_of_handler
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_scent_range_of_handler
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_hearing_range_of_handler
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_on_lead
, t_ASSESSMENT_COMMAND_MODALITY_LINK.trial_count
, t_ASSESSMENT_COMMAND_MODALITY_LINK.active
, t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters
, t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command = COMMAND.id_command
LEFT JOIN fetchmetrics.DOG_Command_Category COMMAND_CATEGORY ON COMMAND.id_command_category = COMMAND_CATEGORY.id_command_category
LEFT JOIN fetchmetrics.DOG_Command_Modality COMMAND_MODALITY ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality = COMMAND_MODALITY.id_command_modality
LEFT JOIN fetchmetrics.DOG_Bribe BRIBE ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe = BRIBE.id_bribe
LIMIT 1000
;
@@ -599,14 +589,18 @@ CALL fetchmetrics.p_dog_get_many_assessment_command_modality_link (
, 1 -- a_get_all_link
, 0 -- a_get_inactive_link
, '' -- a_ids_link
, NULL -- a_min_distance_from_handler_metres_link
, NULL -- a_max_distance_from_handler_metres_link
, NULL -- a_value_is_in_sight_of_handler_link
, NULL -- a_value_is_in_scent_range_of_handler_link
, NULL -- a_value_is_in_hearing_range_of_handler_link
, NULL -- a_value_is_on_lead_link
, NULL -- a_min_trial_count_link
, NULL -- a_max_trial_count_link
, 1 -- a_get_all_AC_link
, 0 -- a_get_inactive_AC_link
, '' -- a_ids_AC_link
, NULL -- a_min_distance_from_handler_metres_AC_Link
, NULL -- a_max_distance_from_handler_metres_AC_Link
, NULL -- a_value_is_in_sight_of_handler_AC_Link
, NULL -- a_value_is_in_scent_range_of_handler_AC_Link
, NULL -- a_value_is_in_hearing_range_of_handler_AC_Link
, NULL -- a_value_is_on_lead_AC_Link
, NULL -- a_min_trial_count_AC_Link
, NULL -- a_max_trial_count_AC_Link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
@@ -614,6 +608,10 @@ CALL fetchmetrics.p_dog_get_many_assessment_command_modality_link (
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -645,15 +643,15 @@ CALL fetchmetrics.p_dog_get_many_assessment_command_modality_link (
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_get_all_command_modality
, 0 -- a_get_inactive_command_modality
, '' -- a_ids_command_modality
, '' -- a_names_command_modality
, 1 -- a_get_all_bribe
, 0 -- a_get_inactive_bribe
, '' -- a_ids_bribe
, '' -- a_names_bribe
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met

View File

@@ -88,7 +88,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
@@ -99,16 +99,8 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link (
id_temp INT
, id_link INT
, id_assessment INT
, id_command INT
, id_assessment_command_link INT
, id_command_modality INT
, id_bribe INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, is_new BIT
, name_error VARCHAR(250)
@@ -117,16 +109,8 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Copy (
id_temp INT
, id_link INT
, id_assessment INT
, id_command INT
, id_assessment_command_link INT
, id_command_modality INT
, id_bribe INT
, distance_from_handler_metres INT
, is_in_sight_of_handler INT
, is_in_scent_range_of_handler INT
, is_in_hearing_range_of_handler INT
, is_on_lead FLOAT
, trial_count TEXT
, active BIT
, is_new BIT
, name_error VARCHAR(250)
@@ -144,16 +128,8 @@ BEGIN
INSERT INTO tmp_Assessment_Command_Modality_Link (
id_temp
, id_link
, id_assessment
, id_command
, id_assessment_command_link
, id_command_modality
, id_bribe
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
-- , trial_count
, active
, is_new
)
@@ -161,52 +137,13 @@ BEGIN
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment
, ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
) AS id_assessment
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command
, ASSESSMENT_COMMAND_MODALITY_LINK.id_command
) AS id_command
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment_command_link
, ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
) AS id_assessment_command_link
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command_modality
, ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality
) AS id_command_modality
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_bribe
, ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe
) AS id_bribe
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_MODALITY_LINK.distance_from_handler_metres
, 1
) AS distance_from_handler_metres
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK.is_in_sight_of_handler
, 1
) AS is_in_sight_of_handler
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK.is_in_scent_range_of_handler
, 1
) AS is_in_scent_range_of_handler
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK.is_in_hearing_range_of_handler
, 1
) AS is_in_hearing_range_of_handler
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_MODALITY_LINK.is_on_lead
, 0
) AS is_on_lead
/*
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.trial_count
, ASSESSMENT_COMMAND_MODALITY_LINK.trial_count
) AS trial_count
*/
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.active
, ASSESSMENT_COMMAND_MODALITY_LINK.active
@@ -226,18 +163,12 @@ BEGIN
-- Error names
UPDATE tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command = COMMAND.id_command
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Command_Modality COMMAND_MODALITY ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality = COMMAND_MODALITY.id_command_modality
LEFT JOIN fetchmetrics.DOG_Bribe BRIBE ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe = BRIBE.id_bribe
SET t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error = CONCAT(
COALESCE(CONVERT(ASSESSMENT.created_on, CHAR), '(No Assessment)')
, ' - '
, COALESCE(COMMAND.name, '(No Command)')
COALESCE(ASSESSMENT_COMMAND_LINK.id_link, '(No Assessment Command Link)')
, ' - '
, COALESCE(COMMAND_MODALITY.name, '(No Command Modality)')
, ' - '
, COALESCE(BRIBE.name, '(No Bribe)')
)
;
@@ -250,15 +181,15 @@ BEGIN
-- Validation
-- Missing mandatory fields
-- id_assessment
-- id_assessment_command_link
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment)
OR ISNULL(ASSESSMENT.id_assessment)
OR ASSESSMENT.active = 0
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.active = 0
) THEN
INSERT INTO tmp_Msg_Error (
id_type
@@ -268,40 +199,13 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following Dog Assessment Command Modality Link(s) do not have a valid Assessment: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error SEPARATOR ', ')) AS msg
, CONCAT('The following Dog Assessment Command Link(s) do not have a valid Assessment: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment)
OR ISNULL(ASSESSMENT.id_assessment)
OR ASSESSMENT.active = 0
;
END IF;
-- id_command
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command = COMMAND.id_command
WHERE
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command)
OR ISNULL(COMMAND.id_command)
OR COMMAND.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('The following Dog Assessment Command Modality Link(s) do not have a valid Command: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Command COMMAND ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command = COMMAND.id_command
WHERE
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command)
OR ISNULL(COMMAND.id_command)
OR COMMAND.active = 0
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.active = 0
;
END IF;
-- id_command_modality
@@ -322,7 +226,7 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following Dog Assessment Command Modality Link(s) do not have a valid Command Modality: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error SEPARATOR ', ')) AS msg
, CONCAT('The following Dog Assessment Command Link(s) do not have a valid Command Modality: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Command_Modality COMMAND_MODALITY ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality = COMMAND_MODALITY.id_command_modality
WHERE
@@ -331,52 +235,6 @@ BEGIN
OR COMMAND_MODALITY.active = 0
;
END IF;
-- id_bribe
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Bribe BRIBE ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe = BRIBE.id_bribe
WHERE
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe)
OR ISNULL(BRIBE.id_bribe)
OR BRIBE.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('The following Dog Assessment Command Modality Link(s) do not have a valid Bribe: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
LEFT JOIN fetchmetrics.DOG_Bribe BRIBE ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe = BRIBE.id_bribe
WHERE
ISNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe)
OR ISNULL(BRIBE.id_bribe)
OR BRIBE.active = 0
;
END IF;
-- distance_from_handler_metres
IF EXISTS (
SELECT *
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
WHERE IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.distance_from_handler_metres, -1) < 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('The following Assessment_Command_Modality_Link(s) do not have a valid Distance From Handler: ', GROUP_CONCAT(t_ASSESSMENT_COMMAND_MODALITY_LINK.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
WHERE IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.distance_from_handler_metres, -1) < 0
;
END IF;
-- Permissions
-- Can Create
@@ -460,50 +318,26 @@ BEGIN
ON ASSESSMENT_COMMAND_MODALITY_LINK.id_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
AND t_ASSESSMENT_COMMAND_MODALITY_LINK.is_new = 0
SET
ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
, ASSESSMENT_COMMAND_MODALITY_LINK.id_command = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command
ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
, ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality
, ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe
, ASSESSMENT_COMMAND_MODALITY_LINK.distance_from_handler_metres = t_ASSESSMENT_COMMAND_MODALITY_LINK.distance_from_handler_metres
, ASSESSMENT_COMMAND_MODALITY_LINK.is_in_sight_of_handler = t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_sight_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK.is_in_scent_range_of_handler = t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK.is_in_hearing_range_of_handler = t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK.is_on_lead = t_ASSESSMENT_COMMAND_MODALITY_LINK.is_on_lead
-- , ASSESSMENT_COMMAND_MODALITY_LINK.trial_count = t_ASSESSMENT_COMMAND_MODALITY_LINK.trial_count
, ASSESSMENT_COMMAND_MODALITY_LINK.active = t_ASSESSMENT_COMMAND_MODALITY_LINK.active
, ASSESSMENT_COMMAND_MODALITY_LINK.id_change_set = v_id_change_set
;
INSERT INTO fetchmetrics.DOG_Assessment_Command_Modality_Link (
id_temp
, id_assessment
, id_command
, id_assessment_command_link
, id_command_modality
, id_bribe
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
-- , trial_count
, active
, id_user_created_by
, created_on
)
SELECT
t_ASSESSMENT_COMMAND_MODALITY_LINK.id_temp
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment AS id_assessment
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command AS id_command
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality AS id_command_modality
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_bribe AS id_bribe
, t_ASSESSMENT_COMMAND_MODALITY_LINK.distance_from_handler_metres AS distance_from_handler_metres
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_sight_of_handler AS is_in_sight_of_handler
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_scent_range_of_handler AS is_in_scent_range_of_handler
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_in_hearing_range_of_handler AS is_in_hearing_range_of_handler
, t_ASSESSMENT_COMMAND_MODALITY_LINK.is_on_lead AS is_on_lead
-- , t_ASSESSMENT_COMMAND_MODALITY_LINK.trial_count AS trial_count
, t_ASSESSMENT_COMMAND_MODALITY_LINK.active AS active
, a_id_user AS created_by
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_command_modality
, t_ASSESSMENT_COMMAND_MODALITY_LINK.active
, a_id_user AS id_user_created_by
, v_time_start AS created_on
FROM tmp_Assessment_Command_Modality_Link t_ASSESSMENT_COMMAND_MODALITY_LINK
WHERE
@@ -603,30 +437,15 @@ from fetchmetrics.DOG_Assessment_Command_Modality_Link
INSERT INTO fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp (
id_link
, id_assessment
, id_command
, id_assessment_command_link
, id_command_modality
, id_bribe
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, active
, guid
)
VALUES (
-1 -- id_link
, 1 -- id_assessment
, 1 -- id_command
, 1 -- id_assessment_command_link
, 1 -- id_command_modality
, 1 -- id_bribe
, 15 -- distance_from_handler_metres
, 1 -- is_in_sight_of_handler
, 0 -- is_in_scent_range_of_handler
, 0 -- is_in_hearing_range_of_handler
, 0 -- is_on_lead
-- , NULL -- trial_count
, 1 -- active
, 'ripplesipplenippletippledipplykipple'
);

View File

@@ -39,12 +39,29 @@ CREATE PROCEDURE fetchmetrics.p_dog_calc_distraction (
, IN a_get_inactive_intensity_level_touch BIT
, IN a_ids_intensity_level_touch TEXT
, IN a_names_intensity_level_touch TEXT
, IN a_get_all_AC_Link BIT
, IN a_get_inactive_AC_Link BIT
, IN a_ids_AC_Link TEXT
, IN a_min_distance_from_handler_metres_AC_Link FLOAT
, IN a_max_distance_from_handler_metres_AC_Link FLOAT
, IN a_value_is_in_sight_of_handler_AC_Link BIT
, IN a_value_is_in_scent_range_of_handler_AC_Link BIT
, IN a_value_is_in_hearing_range_of_handler_AC_Link BIT
, IN a_value_is_on_lead_AC_Link BIT
, IN a_min_trial_count_AC_Link FLOAT
, IN a_max_trial_count_AC_Link FLOAT
, IN a_get_all_assessment BIT
, IN a_get_inactive_assessment BIT
, IN a_ids_assessment TEXT
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -63,6 +80,23 @@ CREATE PROCEDURE fetchmetrics.p_dog_calc_distraction (
-- , IN a_auth0_ids_user_handler TEXT
, IN a_names_user_handler TEXT
, IN a_emails_user_handler TEXT
, IN a_get_all_command_category BIT
, IN a_get_inactive_command_category BIT
, IN a_ids_command_category TEXT
, IN a_names_command_category TEXT
, IN a_get_all_command BIT
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
@@ -200,12 +234,29 @@ BEGIN
, a_get_inactive_intensity_level_touch
, a_ids_intensity_level_touch
, a_names_intensity_level_touch
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -224,6 +275,23 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
@@ -250,15 +318,19 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Scent_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Emotional_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Distraction_Type_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_Distraction;
CREATE TEMPORARY TABLE tmp_Assessment_Calc_Distraction (
id_assessment INT NOT NULL
, id_weather INT
, id_lighting_level INT
, id_location INT
, id_user_handler INT
, notes TEXT
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Calc_Distraction (
id_link INT NOT NULL
, id_assessment INT
, id_command INT
, id_reinforcement_schedule INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, temperature_celcius DECIMAL(5, 2)
, does_meet_id_filters BIT NOT NULL
@@ -321,7 +393,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Distraction_Calc_Distraction (
id_distraction INT NOT NULL
, id_assessment INT
, id_assessment_command_link INT
, id_distraction_type INT
, id_intensity_level_emotional INT
, id_intensity_level_scent INT
@@ -363,20 +435,36 @@ BEGIN
SET v_has_filter_distraction_proximity_metres_min := NOT ISNULL(a_min_proximity_metres_distraction);
SET v_has_filter_distraction_proximity_metres_max := NOT ISNULL(a_max_proximity_metres_distraction);
-- Call Calc Assessment
-- Call Calc Assessment Command Link
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Distraction t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_assessment -- a_get_all_assessment
, a_get_inactive_assessment -- a_get_inactive_assessment
, a_ids_assessment -- a_ids_assessment
, a_notes_assessment -- a_notes_assessment
, a_min_temperature_assessment -- a_min_temperature_assessment
, a_max_temperature_assessment -- a_max_temperature_assessment
, a_get_all_weather -- a_get_all_weather
, a_get_inactive_weather -- a_get_inactive_weather
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
@@ -390,29 +478,62 @@ BEGIN
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment (
CALL fetchmetrics.p_dog_calc_assessment_command_link (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_assessment -- a_get_all_assessment
, a_get_inactive_assessment -- a_get_inactive_assessment
, a_ids_assessment -- a_ids_assessment
, a_notes_assessment -- a_notes_assessment
, a_min_temperature_assessment -- a_min_temperature_assessment
, a_max_temperature_assessment -- a_max_temperature_assessment
, a_get_all_weather -- a_get_all_weather
, a_get_inactive_weather -- a_get_inactive_weather
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
, a_names_weather
, a_get_all_lighting_level
@@ -426,47 +547,75 @@ BEGIN
, a_get_all_user_handler
, a_get_inactive_user_handler
, a_ids_user_handler
-- , a_auth0_ids
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, a_require_any_id_search_filters_met -- a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, a_require_any_non_id_search_filters_met -- a_require_any_non_id_search_filters_met
, 0 -- a_show_errors
, 0 -- a_debug
);
INSERT INTO tmp_Assessment_Calc_Distraction (
id_assessment
, id_weather
, id_lighting_level
, id_location
, id_user_handler
, notes
, temperature_celcius
IF a_debug = 1 THEN
SELECT COUNT(*) FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
SELECT * FROM fetchmetrics.DOG_Assessment_Command_Link_Temp;
END IF;
INSERT INTO tmp_Assessment_Command_Link_Calc_Distraction (
id_link
, id_assessment
, id_command
, id_reinforcement_schedule
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, trial_count
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_T.id_assessment
, ASSESSMENT_T.id_weather
, ASSESSMENT_T.id_lighting_level
, ASSESSMENT_T.id_location
, ASSESSMENT_T.id_user_handler
, ASSESSMENT_T.notes
, ASSESSMENT_T.temperature_celcius
, ASSESSMENT_T.active
, ASSESSMENT_T.does_meet_id_filters
, ASSESSMENT_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Temp ASSESSMENT_T
WHERE ASSESSMENT_T.GUID = a_guid
ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.id_assessment
, ASSESSMENT_COMMAND_LINK_T.id_command
, ASSESSMENT_COMMAND_LINK_T.id_reinforcement_schedule
, ASSESSMENT_COMMAND_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_LINK_T.trial_count
, ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
WHERE ASSESSMENT_COMMAND_LINK_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Calc_Distraction;
SELECT COUNT(*) FROM tmp_Assessment_Command_Link_Calc_Distraction;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Distraction;
END IF;
END IF;
@@ -994,134 +1143,9 @@ BEGIN
ELSEIF EXISTS ()
*/
ELSE
IF a_debug = 1 THEN
SELECT 'Distraction Filters';
WITH
Distraction_Id_Filter AS (
SELECT DISTRACTION.id_distraction
FROM tmp_Split_Id_Calc_Distraction t_SPLIT_ID
INNER JOIN fetchmetrics.DOG_Distraction DISTRACTION ON t_SPLIT_ID.as_int = DISTRACTION.id_distraction
)
, Distraction_Notes_Filter AS (
SELECT DISTRACTION.id_distraction
FROM tmp_Split_Notes_Calc_Distraction t_SPLIT_NOTES
INNER JOIN fetchmetrics.DOG_Distraction DISTRACTION ON DISTRACTION.notes LIKE CONCAT('%', t_SPLIT_NOTES.substring, '%')
WHERE NULLIF(t_SPLIT_NOTES.substring, '') IS NOT NULL
)
, Distraction_Filters AS (
SELECT
DISTRACTION_COMBINED.id_distraction
, MAX(DISTRACTION_COMBINED.does_meet_id_filter) AS does_meet_id_filter
, MAX(DISTRACTION_COMBINED.does_meet_notes_filter) AS does_meet_notes_filter
FROM (
SELECT
DISTRACTION_ID_FILTER.id_distraction
, 1 AS does_meet_id_filter
, 0 AS does_meet_notes_filter
FROM Distraction_Id_Filter DISTRACTION_ID_FILTER
UNION
SELECT
DISTRACTION_NOTES_FILTER.id_distraction
, 0 AS does_meet_id_filter
, 1 AS does_meet_notes_filter
FROM Distraction_Notes_Filter DISTRACTION_NOTES_FILTER
) DISTRACTION_COMBINED
GROUP BY DISTRACTION_COMBINED.id_distraction
)
SELECT
DISTRACTION.id_distraction
, DISTRACTION.id_assessment
, DISTRACTION.id_distraction_type
, DISTRACTION.id_intensity_level_emotional
, DISTRACTION.id_intensity_level_scent
, DISTRACTION.id_intensity_level_sight
, DISTRACTION.id_intensity_level_sound
, DISTRACTION.id_intensity_level_touch
, DISTRACTION.quantity
, DISTRACTION.proximity_metres
, DISTRACTION.notes
, DISTRACTION.active
, CASE WHEN
v_has_filter_distraction_id = 0
OR DISTRACTION_FILTERS.does_meet_id_filter = 1
THEN 1 ELSE 0 END AS does_meet_id_filters
, CASE WHEN
(
v_has_filter_distraction_notes = 0
AND v_has_filter_distraction_quantity_min = 0
AND v_has_filter_distraction_quantity_max = 0
AND v_has_filter_distraction_proximity_metres_min = 0
AND v_has_filter_distraction_proximity_metres_max = 0
)
OR DISTRACTION_FILTERS.does_meet_notes_filter = 1
OR (
v_has_filter_distraction_quantity_min = 0
OR (
v_has_filter_distraction_quantity_min = 1
AND DISTRACTION.quantity >= v_has_filter_distraction_quantity_min
)
)
OR (
v_has_filter_distraction_quantity_max = 0
OR (
v_has_filter_distraction_quantity_max = 1
AND DISTRACTION.quantity <= v_has_filter_distraction_quantity_max
)
)
OR (
v_has_filter_distraction_proximity_metres_min = 0
OR (
v_has_filter_distraction_proximity_metres_min = 1
AND DISTRACTION.proximity_metres >= v_has_filter_distraction_proximity_metres_min
)
)
OR (
v_has_filter_distraction_proximity_metres_max = 0
OR (
v_has_filter_distraction_proximity_metres_max = 1
AND DISTRACTION.proximity_metres <= v_has_filter_distraction_proximity_metres_max
)
)
THEN 1 ELSE 0 END AS does_meet_non_id_filters
FROM fetchmetrics.DOG_Distraction DISTRACTION
LEFT JOIN Distraction_Filters DISTRACTION_FILTERS ON DISTRACTION.id_distraction = DISTRACTION_FILTERS.id_distraction
WHERE
(
a_get_all_distraction = 1
OR (
v_has_filter_distraction_id = 1
AND DISTRACTION_FILTERS.does_meet_id_filter = 1
)
OR (
v_has_filter_distraction_notes = 1
AND DISTRACTION_FILTERS.does_meet_notes_filter = 1
)
OR (
v_has_filter_distraction_quantity_min = 1
AND DISTRACTION.quantity >= v_has_filter_distraction_quantity_min
)
OR (
v_has_filter_distraction_quantity_max = 1
AND DISTRACTION.quantity <= v_has_filter_distraction_quantity_max
)
OR (
v_has_filter_distraction_proximity_metres_min = 1
AND DISTRACTION.proximity_metres >= v_has_filter_distraction_proximity_metres_min
)
OR (
v_has_filter_distraction_proximity_metres_max = 1
AND DISTRACTION.proximity_metres <= v_has_filter_distraction_proximity_metres_max
)
)
AND (
a_get_inactive_distraction = 1
OR DISTRACTION.active = 1
)
;
END IF;
INSERT INTO tmp_Distraction_Calc_Distraction (
id_distraction
, id_assessment
, id_assessment_command_link
, id_distraction_type
, id_intensity_level_emotional
, id_intensity_level_scent
@@ -1171,7 +1195,7 @@ BEGIN
)
SELECT
DISTRACTION.id_distraction
, DISTRACTION.id_assessment
, DISTRACTION.id_assessment_command_link
, DISTRACTION.id_distraction_type
, DISTRACTION.id_intensity_level_emotional
, DISTRACTION.id_intensity_level_scent
@@ -1274,7 +1298,7 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Distraction t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_DISTRACTION
FROM tmp_Distraction_Calc_Distraction t_DISTRACTION
LEFT JOIN tmp_Assessment_Calc_Distraction t_ASSESSMENT ON t_DISTRACTION.id_assessment = t_ASSESSMENT.id_assessment
LEFT JOIN tmp_Assessment_Command_Link_Calc_Distraction t_ASSESSMENT_COMMAND_LINK ON t_DISTRACTION.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN tmp_Distraction_Type_Calc_Distraction t_DISTRACTION_TYPE ON t_DISTRACTION.id_distraction_type = t_DISTRACTION_TYPE.id_type
LEFT JOIN tmp_Intensity_Level_Emotional_Calc_Distraction t_INTENSITY_LEVEL_EMOTIONAL ON t_DISTRACTION.id_intensity_level_emotional = t_INTENSITY_LEVEL_EMOTIONAL.id_intensity_level
LEFT JOIN tmp_Intensity_Level_Scent_Calc_Distraction t_INTENSITY_LEVEL_SCENT ON t_DISTRACTION.id_intensity_level_scent = t_INTENSITY_LEVEL_SCENT.id_intensity_level
@@ -1286,7 +1310,7 @@ BEGIN
a_require_all_id_search_filters_met = 1
AND (
t_DISTRACTION.does_meet_id_filters = 0
OR IFNULL(t_ASSESSMENT.does_meet_id_filters, 1) = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
OR IFNULL(t_DISTRACTION_TYPE.does_meet_id_filters, 1) = 0
OR IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_id_filters, 1) = 0
OR IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_id_filters, 1) = 0
@@ -1299,7 +1323,7 @@ BEGIN
a_require_all_non_id_search_filters_met = 1
AND (
t_DISTRACTION.does_meet_non_id_filters = 0
OR IFNULL(t_ASSESSMENT.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_DISTRACTION_TYPE.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_non_id_filters, 1) = 0
@@ -1311,7 +1335,7 @@ BEGIN
OR (
a_require_any_id_search_filters_met = 1
AND t_DISTRACTION.does_meet_id_filters = 0
AND IFNULL(t_ASSESSMENT.does_meet_id_filters, 1) = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
AND IFNULL(t_DISTRACTION_TYPE.does_meet_id_filters, 1) = 0
AND IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_id_filters, 1) = 0
AND IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_id_filters, 1) = 0
@@ -1322,7 +1346,7 @@ BEGIN
OR (
a_require_any_non_id_search_filters_met = 1
AND t_DISTRACTION.does_meet_non_id_filters = 0
AND IFNULL(t_ASSESSMENT.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_DISTRACTION_TYPE.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_INTENSITY_LEVEL_EMOTIONAL.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_INTENSITY_LEVEL_SCENT.does_meet_non_id_filters, 1) = 0
@@ -1335,7 +1359,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'After filter Distractions';
SELECT * FROM tmp_Assessment_Calc_Distraction;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Distraction;
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
@@ -1423,7 +1447,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Assessment_Calc_Distraction;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Distraction;
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
@@ -1435,7 +1459,7 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Distraction t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Calc_Distraction;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Distraction;
SELECT * FROM tmp_Distraction_Type_Calc_Distraction;
SELECT * FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
SELECT * FROM tmp_Intensity_Level_Scent_Calc_Distraction;
@@ -1451,7 +1475,7 @@ BEGIN
DELETE FROM tmp_Intensity_Level_Scent_Calc_Distraction;
DELETE FROM tmp_Intensity_Level_Emotional_Calc_Distraction;
DELETE FROM tmp_Distraction_Type_Calc_Distraction;
DELETE FROM tmp_Assessment_Calc_Distraction;
DELETE FROM tmp_Assessment_Command_Link_Calc_Distraction;
DELETE FROM tmp_Distraction_Calc_Distraction;
END IF;
@@ -1465,7 +1489,7 @@ BEGIN
INSERT INTO fetchmetrics.DOG_Distraction_Temp (
guid
, id_distraction
, id_assessment
, id_assessment_command_link
, id_distraction_type
, id_intensity_level_emotional
, id_intensity_level_scent
@@ -1483,7 +1507,7 @@ BEGIN
SELECT
a_guid
, t_DISTRACTION.id_distraction
, t_DISTRACTION.id_assessment
, t_DISTRACTION.id_assessment_command_link
, t_DISTRACTION.id_distraction_type
, t_DISTRACTION.id_intensity_level_emotional
, t_DISTRACTION.id_intensity_level_scent
@@ -1530,7 +1554,7 @@ BEGIN
SELECT * FROM tmp_Distraction_Calc_Distraction;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment (
CALL fetchmetrics.p_dog_clear_calc_assessment_command_link (
a_guid
, 0 -- a_debug
);
@@ -1550,7 +1574,7 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Scent_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Intensity_Level_Emotional_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Distraction_Type_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Calc_Distraction;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_Distraction;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
@@ -1603,12 +1627,28 @@ CALL fetchmetrics.p_dog_calc_distraction (
, '' -- a_ids_intensity_level_touch
, '' -- a_names_intensity_level_touch
, 1 -- a_get_all_AC_link
, 0 -- a_get_inactive_AC_link
, '' -- a_ids_AC_link
, NULL -- a_min_distance_from_handler_metres_AC_Link
, NULL -- a_max_distance_from_handler_metres_AC_Link
, NULL -- a_value_is_in_sight_of_handler_AC_Link
, NULL -- a_value_is_in_scent_range_of_handler_AC_Link
, NULL -- a_value_is_in_hearing_range_of_handler_AC_Link
, NULL -- a_value_is_on_lead_AC_Link
, NULL -- a_min_trial_count_AC_Link
, NULL -- a_max_trial_count_AC_Link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -1627,6 +1667,24 @@ CALL fetchmetrics.p_dog_calc_distraction (
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
, '' -- a_names_command_category
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 0 -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met

View File

@@ -38,12 +38,29 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_distraction (
, IN a_get_inactive_intensity_level_touch BIT
, IN a_ids_intensity_level_touch TEXT
, IN a_names_intensity_level_touch TEXT
, IN a_get_all_AC_Link BIT
, IN a_get_inactive_AC_Link BIT
, IN a_ids_AC_Link TEXT
, IN a_min_distance_from_handler_metres_AC_Link FLOAT
, IN a_max_distance_from_handler_metres_AC_Link FLOAT
, IN a_value_is_in_sight_of_handler_AC_Link BIT
, IN a_value_is_in_scent_range_of_handler_AC_Link BIT
, IN a_value_is_in_hearing_range_of_handler_AC_Link BIT
, IN a_value_is_on_lead_AC_Link BIT
, IN a_min_trial_count_AC_Link FLOAT
, IN a_max_trial_count_AC_Link FLOAT
, IN a_get_all_assessment BIT
, IN a_get_inactive_assessment BIT
, IN a_ids_assessment TEXT
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -62,6 +79,23 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_distraction (
-- , IN a_auth0_ids_user_handler TEXT
, IN a_names_user_handler TEXT
, IN a_emails_user_handler TEXT
, IN a_get_all_command_category BIT
, IN a_get_inactive_command_category BIT
, IN a_ids_command_category TEXT
, IN a_names_command_category TEXT
, IN a_get_all_command BIT
, IN a_get_inactive_command BIT
, IN a_ids_command TEXT
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_require_all_id_search_filters_met BIT
, IN a_require_any_id_search_filters_met BIT
, IN a_require_all_non_id_search_filters_met BIT
@@ -179,12 +213,29 @@ BEGIN
, a_get_inactive_intensity_level_touch
, a_ids_intensity_level_touch
, a_names_intensity_level_touch
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -203,6 +254,23 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
@@ -225,7 +293,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Distraction (
id_distraction INT NOT NULL
, id_assessment INT
, id_assessment_command_link INT
, id_distraction_type INT
, id_intensity_level_emotional INT
, id_intensity_level_scent INT
@@ -364,12 +432,29 @@ BEGIN
, a_get_inactive_intensity_level_touch
, a_ids_intensity_level_touch
, a_names_intensity_level_touch
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -388,6 +473,23 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
@@ -432,12 +534,29 @@ BEGIN
, a_get_inactive_intensity_level_touch
, a_ids_intensity_level_touch
, a_names_intensity_level_touch
, a_get_all_AC_link
, a_get_inactive_AC_link
, a_ids_AC_link
, a_min_distance_from_handler_metres_AC_Link
, a_max_distance_from_handler_metres_AC_Link
, a_value_is_in_sight_of_handler_AC_Link
, a_value_is_in_scent_range_of_handler_AC_Link
, a_value_is_in_hearing_range_of_handler_AC_Link
, a_value_is_on_lead_AC_Link
, a_min_trial_count_AC_Link
, a_max_trial_count_AC_Link
, a_get_all_assessment
, a_get_inactive_assessment
, a_ids_assessment
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -456,6 +575,23 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
, a_names_command_category
, a_get_all_command
, a_get_inactive_command
, a_ids_command
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met
, a_require_any_id_search_filters_met
, a_require_all_non_id_search_filters_met
@@ -471,7 +607,7 @@ BEGIN
INSERT INTO tmp_Distraction (
id_distraction
, id_assessment
, id_assessment_command_link
, id_distraction_type
, id_intensity_level_emotional
, id_intensity_level_scent
@@ -487,7 +623,7 @@ BEGIN
)
SELECT
DISTRACTION_T.id_distraction
, DISTRACTION_T.id_assessment
, DISTRACTION_T.id_assessment_command_link
, DISTRACTION_T.id_distraction_type
, DISTRACTION_T.id_intensity_level_emotional
, DISTRACTION_T.id_intensity_level_scent
@@ -525,7 +661,7 @@ BEGIN
-- Distractions
SELECT
t_DISTRACTION.id_distraction
, t_DISTRACTION.id_assessment
, t_DISTRACTION.id_assessment_command_link
, t_DISTRACTION.id_distraction_type
, DISTRACTION_TYPE.name AS name_distraction_type
, t_DISTRACTION.id_intensity_level_emotional
@@ -633,12 +769,28 @@ CALL fetchmetrics.p_dog_get_many_distraction (
, '' -- a_ids_intensity_level_touch
, '' -- a_names_intensity_level_touch
, 1 -- a_get_all_AC_link
, 0 -- a_get_inactive_AC_link
, '' -- a_ids_AC_link
, NULL -- a_min_distance_from_handler_metres_AC_Link
, NULL -- a_max_distance_from_handler_metres_AC_Link
, NULL -- a_value_is_in_sight_of_handler_AC_Link
, NULL -- a_value_is_in_scent_range_of_handler_AC_Link
, NULL -- a_value_is_in_hearing_range_of_handler_AC_Link
, NULL -- a_value_is_on_lead_AC_Link
, NULL -- a_min_trial_count_AC_Link
, NULL -- a_max_trial_count_AC_Link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -657,6 +809,24 @@ CALL fetchmetrics.p_dog_get_many_distraction (
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
, '' -- a_names_command_category
, 1 -- a_get_all_command
, 0 -- a_get_inactive_command
, '' -- a_ids_command
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met

View File

@@ -88,7 +88,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
@@ -99,7 +99,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Distraction (
id_temp INT
, id_distraction INT
, id_assessment INT
, id_assessment_command_link INT
, id_distraction_type INT
, id_intensity_level_emotional INT
, id_intensity_level_scent INT
@@ -117,7 +117,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Distraction_Copy (
id_temp INT
, id_distraction INT
, id_assessment INT
, id_assessment_command_link INT
, id_distraction_type INT
, id_intensity_level_emotional INT
, id_intensity_level_scent INT
@@ -144,7 +144,7 @@ BEGIN
INSERT INTO tmp_Distraction (
id_temp
, id_distraction
, id_assessment
, id_assessment_command_link
, id_distraction_type
, id_intensity_level_emotional
, id_intensity_level_scent
@@ -161,9 +161,9 @@ BEGIN
DISTRACTION_T.id_temp
, DISTRACTION_T.id_distraction
, COALESCE(
DISTRACTION_T.id_assessment
, DISTRACTION.id_assessment
) AS id_assessment
DISTRACTION_T.id_assessment_command_link
, DISTRACTION.id_assessment_command_link
) AS id_assessment_command_link
, COALESCE(
DISTRACTION_T.id_distraction_type
, DISTRACTION.id_distraction_type
@@ -242,15 +242,15 @@ BEGIN
-- Validation
-- Missing mandatory fields
-- id_assessment
-- id_assessment_command_link
IF EXISTS (
SELECT *
FROM tmp_Distraction t_DISTRACTION
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_DISTRACTION.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_DISTRACTION.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_DISTRACTION.id_assessment)
OR ISNULL(ASSESSMENT.id_assessment)
OR ASSESSMENT.active = 0
ISNULL(t_DISTRACTION.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.active = 0
) THEN
INSERT INTO tmp_Msg_Error (
id_type
@@ -262,11 +262,11 @@ BEGIN
, v_code_type_error_bad_data
, CONCAT('The following Dog Assessment Distraction(s) do not have a valid Assessment: ', GROUP_CONCAT(t_DISTRACTION.name_error SEPARATOR ', ')) AS msg
FROM tmp_Distraction t_DISTRACTION
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_DISTRACTION.id_assessment = ASSESSMENT.id_assessment
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_DISTRACTION.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_DISTRACTION.id_assessment)
OR ISNULL(ASSESSMENT.id_assessment)
OR ASSESSMENT.active = 0
ISNULL(t_DISTRACTION.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.active = 0
;
END IF;
-- id_distraction_type
@@ -514,7 +514,7 @@ BEGIN
ON DISTRACTION.id_distraction = t_DISTRACTION.id_distraction
AND t_DISTRACTION.is_new = 0
SET
DISTRACTION.id_assessment = t_DISTRACTION.id_assessment
DISTRACTION.id_assessment_command_link = t_DISTRACTION.id_assessment_command_link
, DISTRACTION.id_distraction_type = t_DISTRACTION.id_distraction_type
, DISTRACTION.id_intensity_level_emotional = t_DISTRACTION.id_intensity_level_emotional
, DISTRACTION.id_intensity_level_scent = t_DISTRACTION.id_intensity_level_scent
@@ -530,7 +530,7 @@ BEGIN
INSERT INTO fetchmetrics.DOG_Distraction (
id_temp
, id_assessment
, id_assessment_command_link
, id_distraction_type
, id_intensity_level_emotional
, id_intensity_level_scent
@@ -546,7 +546,7 @@ BEGIN
)
SELECT
t_DISTRACTION.id_temp
, t_DISTRACTION.id_assessment AS id_assessment
, t_DISTRACTION.id_assessment_command_link AS id_assessment_command_link
, t_DISTRACTION.id_distraction_type AS id_distraction_type
, t_DISTRACTION.id_intensity_level_emotional AS id_intensity_level_emotional
, t_DISTRACTION.id_intensity_level_scent AS id_intensity_level_scent
@@ -656,7 +656,7 @@ from fetchmetrics.DOG_Distraction
;
INSERT INTO fetchmetrics.DOG_Distraction_Temp (
id_distraction
id_assessment
, id_dog
, id_command
, hand_signal_description

View File

@@ -31,6 +31,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment_response (
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -59,14 +63,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_calc_assessment_response (
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_command_modality BIT
, IN a_get_inactive_command_modality BIT
, IN a_ids_command_modality TEXT
, IN a_names_command_modality TEXT
, IN a_get_all_bribe BIT
, IN a_get_inactive_bribe BIT
, IN a_ids_bribe TEXT
, IN a_names_bribe TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_get_all_response_quality_metric BIT
, IN a_get_inactive_response_quality_metric BIT
@@ -203,6 +203,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -221,6 +225,7 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
@@ -231,14 +236,11 @@ BEGIN
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_response_quality_metric
, a_get_inactive_response_quality_metric
@@ -272,20 +274,10 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Response_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Obedience_Level_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_Assessment_Response;
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response (
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Calc_Assessment_Response (
id_link INT NOT NULL
, id_assessment INT
, id_command INT
, id_command_modality INT
, id_bribe INT
, distance_from_handler_metres FLOAT
, is_in_sight_of_handler BIT
, is_in_scent_range_of_handler BIT
, is_in_hearing_range_of_handler BIT
, is_on_lead BIT
, trial_count INT
, active BIT
, does_meet_id_filters BIT NOT NULL
, does_meet_non_id_filters BIT NOT NULL
@@ -314,7 +306,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Response_Calc_Assessment_Response (
id_response INT NOT NULL
, id_assessment_command_modality_link INT
, id_assessment_command_link INT
, id_response_quality_metric INT
, id_obedience_level INT
, value_measured DOUBLE
@@ -348,7 +340,7 @@ BEGIN
SET v_has_filter_assessment_response_value_measured_min := NOT ISNULL(a_min_value_measured_assessment_response);
SET v_has_filter_assessment_response_value_measured_max := NOT ISNULL(a_max_value_measured_assessment_response);
-- Call Calc Assessment Command Modality Link
-- Call Calc Assessment Command Link
IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT
@@ -372,6 +364,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -402,15 +398,10 @@ BEGIN
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
@@ -421,7 +412,7 @@ BEGIN
;
END IF;
CALL fetchmetrics.p_dog_calc_assessment_command_modality_link (
CALL fetchmetrics.p_dog_calc_assessment_command_link (
a_guid -- a_guid
, a_id_user -- a_id_user
, a_get_all_ACM_link
@@ -442,6 +433,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -472,15 +467,10 @@ BEGIN
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_require_all_id_search_filters_met -- a_require_all_id_search_filters_met
, 0 -- a_require_any_id_search_filters_met
@@ -490,44 +480,24 @@ BEGIN
, 0 -- a_debug
);
INSERT INTO tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response (
INSERT INTO tmp_Assessment_Command_Link_Calc_Assessment_Response (
id_link
, id_assessment
, id_command
, id_command_modality
, id_bribe
, distance_from_handler_metres
, is_in_sight_of_handler
, is_in_scent_range_of_handler
, is_in_hearing_range_of_handler
, is_on_lead
, trial_count
, active
, does_meet_id_filters
, does_meet_non_id_filters
)
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_command_modality
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_bribe
, ASSESSMENT_COMMAND_MODALITY_LINK_T.distance_from_handler_metres
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_sight_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_scent_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_in_hearing_range_of_handler
, ASSESSMENT_COMMAND_MODALITY_LINK_T.is_on_lead
, ASSESSMENT_COMMAND_MODALITY_LINK_T.trial_count
, ASSESSMENT_COMMAND_MODALITY_LINK_T.active
ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_MODALITY_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_MODALITY_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
WHERE ASSESSMENT_COMMAND_MODALITY_LINK_T.GUID = a_guid
, ASSESSMENT_COMMAND_LINK_T.does_meet_id_filters
, ASSESSMENT_COMMAND_LINK_T.does_meet_non_id_filters
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
WHERE ASSESSMENT_COMMAND_LINK_T.GUID = a_guid
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
END IF;
END IF;
@@ -791,7 +761,7 @@ BEGIN
)
SELECT
ASSESSMENT_RESPONSE.id_response
, ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, ASSESSMENT_RESPONSE.id_assessment_command_link
, ASSESSMENT_RESPONSE.id_response_quality_metric
, ASSESSMENT_RESPONSE.id_obedience_level
, ASSESSMENT_RESPONSE.value_measured
@@ -853,7 +823,7 @@ BEGIN
END IF;
INSERT INTO tmp_Assessment_Response_Calc_Assessment_Response (
id_response
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -896,7 +866,7 @@ BEGIN
)
SELECT
ASSESSMENT_RESPONSE.id_response
, ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, ASSESSMENT_RESPONSE.id_assessment_command_link
, ASSESSMENT_RESPONSE.id_response_quality_metric
, ASSESSMENT_RESPONSE.id_obedience_level
, ASSESSMENT_RESPONSE.value_measured
@@ -970,7 +940,7 @@ BEGIN
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
DELETE t_ASSESSMENT_RESPONSE
FROM tmp_Assessment_Response_Calc_Assessment_Response t_ASSESSMENT_RESPONSE
LEFT JOIN tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
LEFT JOIN tmp_Assessment_Command_Link_Calc_Assessment_Response t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN tmp_Response_Quality_Metric_Calc_Assessment_Response t_RESPONSE_QUALITY_METRIC ON t_ASSESSMENT_RESPONSE.id_response_quality_metric = t_RESPONSE_QUALITY_METRIC.id_metric
LEFT JOIN tmp_Obedience_Level_Calc_Assessment_Response t_OBEDIENCE_LEVEL ON t_ASSESSMENT_RESPONSE.id_obedience_level = t_OBEDIENCE_LEVEL.id_obedience_level
WHERE
@@ -978,7 +948,7 @@ BEGIN
a_require_all_id_search_filters_met = 1
AND (
t_ASSESSMENT_RESPONSE.does_meet_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters, 1) = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
OR IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_id_filters, 1) = 0
OR IFNULL(t_OBEDIENCE_LEVEL.does_meet_id_filters, 1) = 0
)
@@ -987,7 +957,7 @@ BEGIN
a_require_all_non_id_search_filters_met = 1
AND (
t_ASSESSMENT_RESPONSE.does_meet_non_id_filters = 0
OR IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters, 1) = 0
OR IFNULL(t_OBEDIENCE_LEVEL.does_meet_non_id_filters, 1) = 0
)
@@ -995,14 +965,14 @@ BEGIN
OR (
a_require_any_id_search_filters_met = 1
AND t_ASSESSMENT_RESPONSE.does_meet_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_id_filters, 1) = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_id_filters, 1) = 0
AND IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_id_filters, 1) = 0
AND IFNULL(t_OBEDIENCE_LEVEL.does_meet_id_filters, 1) = 0
)
OR (
a_require_any_non_id_search_filters_met = 1
AND t_ASSESSMENT_RESPONSE.does_meet_non_id_filters = 0
AND IFNULL(t_ASSESSMENT_COMMAND_MODALITY_LINK.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_ASSESSMENT_COMMAND_LINK.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters, 1) = 0
AND IFNULL(t_OBEDIENCE_LEVEL.does_meet_non_id_filters, 1) = 0
)
@@ -1011,7 +981,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'After filter Assessment_Responses';
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
@@ -1095,7 +1065,7 @@ BEGIN
IF a_debug = 1 THEN
SELECT 'Before non-permitted data deletion';
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
@@ -1103,13 +1073,13 @@ BEGIN
IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
END IF;
DELETE FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
DELETE FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
DELETE FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
DELETE FROM tmp_Obedience_Level_Calc_Assessment_Response;
DELETE FROM tmp_Assessment_Response_Calc_Assessment_Response;
@@ -1125,7 +1095,7 @@ BEGIN
INSERT INTO fetchmetrics.DOG_Assessment_Response_Temp (
guid
, id_response
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -1138,7 +1108,7 @@ BEGIN
SELECT
a_guid
, t_ASSESSMENT_RESPONSE.id_response
, t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, t_ASSESSMENT_RESPONSE.id_assessment_command_link
, t_ASSESSMENT_RESPONSE.id_response_quality_metric
, t_ASSESSMENT_RESPONSE.id_obedience_level
, t_ASSESSMENT_RESPONSE.value_measured
@@ -1170,13 +1140,13 @@ BEGIN
END IF;
IF a_debug = 1 AND v_can_view = 1 THEN
SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Command_Link_Calc_Assessment_Response;
SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response;
SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response;
SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response;
END IF;
CALL fetchmetrics.p_dog_clear_calc_assessment_command_modality_link (
CALL fetchmetrics.p_dog_clear_calc_assessment_command_link (
a_guid
, 0 -- a_debug
);
@@ -1197,7 +1167,7 @@ BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Response_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Obedience_Level_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Response_Quality_Metric_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response;
DROP TEMPORARY TABLE IF EXISTS tmp_Assessment_Command_Link_Calc_Assessment_Response;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
@@ -1229,12 +1199,17 @@ CALL fetchmetrics.p_dog_calc_assessment_response (
, NULL -- a_value_is_on_lead_ACM_link
, NULL -- a_min_trial_count_ACM_link
, NULL -- a_max_trial_count_ACM_link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -1253,6 +1228,8 @@ CALL fetchmetrics.p_dog_calc_assessment_response (
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
@@ -1263,14 +1240,11 @@ CALL fetchmetrics.p_dog_calc_assessment_response (
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_command_modality
, 0 -- a_get_inactive_command_modality
, '' -- a_ids_command_modality
, '' -- a_names_command_modality
, 1 -- a_get_all_bribe
, 0 -- a_get_inactive_bribe
, '' -- a_ids_bribe
, '' -- a_names_bribe
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_get_all_response_quality_metric
, 0 -- a_get_inactive_response_quality_metric

View File

@@ -30,6 +30,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_response (
, IN a_notes_assessment TEXT
, IN a_min_temperature_assessment DECIMAL(5, 2)
, IN a_max_temperature_assessment DECIMAL(5, 2)
, IN a_get_all_assessment_type BIT
, IN a_get_inactive_assessment_type BIT
, IN a_ids_assessment_type TEXT
, IN a_names_assessment_type TEXT
, IN a_get_all_weather BIT
, IN a_get_inactive_weather BIT
, IN a_ids_weather TEXT
@@ -58,14 +62,10 @@ CREATE PROCEDURE fetchmetrics.p_dog_get_many_assessment_response (
, IN a_names_command TEXT
, IN a_hand_signal_default_descriptions_command TEXT
, IN a_notes_command TEXT
, IN a_get_all_command_modality BIT
, IN a_get_inactive_command_modality BIT
, IN a_ids_command_modality TEXT
, IN a_names_command_modality TEXT
, IN a_get_all_bribe BIT
, IN a_get_inactive_bribe BIT
, IN a_ids_bribe TEXT
, IN a_names_bribe TEXT
, IN a_get_all_reinforcement_schedule BIT
, IN a_get_inactive_reinforcement_schedule BIT
, IN a_ids_reinforcement_schedule TEXT
, IN a_names_reinforcement_schedule TEXT
, IN a_get_all_response_quality_metric BIT
, IN a_get_inactive_response_quality_metric BIT
@@ -185,6 +185,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -203,6 +207,7 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
@@ -213,14 +218,11 @@ BEGIN
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_response_quality_metric
, a_get_inactive_response_quality_metric
@@ -253,7 +255,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Response (
id_response INT NOT NULL
, id_assessment_command_modality_link INT
, id_assessment_command_link INT
, id_response_quality_metric INT
, id_obedience_level INT
, value_measured DOUBLE
@@ -380,6 +382,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -398,6 +404,7 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
@@ -408,14 +415,11 @@ BEGIN
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_response_quality_metric
, a_get_inactive_response_quality_metric
@@ -464,6 +468,10 @@ BEGIN
, a_notes_assessment
, a_min_temperature_assessment
, a_max_temperature_assessment
, a_get_all_assessment_type
, a_get_inactive_assessment_type
, a_ids_assessment_type
, a_names_assessment_type
, a_get_all_weather
, a_get_inactive_weather
, a_ids_weather
@@ -482,6 +490,7 @@ BEGIN
-- , a_auth0_ids_user_handler
, a_names_user_handler
, a_emails_user_handler
, a_get_all_command_category
, a_get_inactive_command_category
, a_ids_command_category
@@ -492,14 +501,11 @@ BEGIN
, a_names_command
, a_hand_signal_default_descriptions_command
, a_notes_command
, a_get_all_command_modality
, a_get_inactive_command_modality
, a_ids_command_modality
, a_names_command_modality
, a_get_all_bribe
, a_get_inactive_bribe
, a_ids_bribe
, a_names_bribe
, a_get_all_reinforcement_schedule
, a_get_inactive_reinforcement_schedule
, a_ids_reinforcement_schedule
, a_names_reinforcement_schedule
, a_get_all_response_quality_metric
, a_get_inactive_response_quality_metric
@@ -526,7 +532,7 @@ BEGIN
INSERT INTO tmp_Assessment_Response (
id_response
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -538,7 +544,7 @@ BEGIN
)
SELECT
ASSESSMENT_RESPONSE_T.id_response
, ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link
, ASSESSMENT_RESPONSE_T.id_assessment_command_link
, ASSESSMENT_RESPONSE_T.id_response_quality_metric
, ASSESSMENT_RESPONSE_T.id_obedience_level
, ASSESSMENT_RESPONSE_T.value_measured
@@ -571,7 +577,7 @@ BEGIN
-- Assessment_Responses
SELECT
t_ASSESSMENT_RESPONSE.id_response
, t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
, t_ASSESSMENT_RESPONSE.id_assessment_command_link
, t_ASSESSMENT_RESPONSE.id_response_quality_metric
, RESPONSE_QUALITY_METRIC.name AS name_response_quality_metric
, UNIT_MEASUREMENT.symbol AS symbol_unit_measurement_response_quality_metric
@@ -649,12 +655,17 @@ CALL fetchmetrics.p_dog_get_many_assessment_response (
, NULL -- a_value_is_on_lead_ACM_link
, NULL -- a_min_trial_count_ACM_link
, NULL -- a_max_trial_count_ACM_link
, 1 -- a_get_all_assessment
, 0 -- a_get_inactive_assessment
, '' -- a_ids_assessment
, '' -- a_notes_assessment
, NULL -- a_min_temperature_assessment
, NULL -- a_max_temperature_assessment
, 1 -- a_get_all_assessment_type
, 0 -- a_get_inactive_assessment_type
, '' -- a_ids_assessment_type
, '' -- a_names_assessment_type
, 1 -- a_get_all_weather
, 0 -- a_get_inactive_weather
, '' -- a_ids_weather
@@ -673,6 +684,8 @@ CALL fetchmetrics.p_dog_get_many_assessment_response (
-- , IN a_auth0_ids_user_handler TEXT
, '' -- a_names_user_handler
, '' -- a_emails_user_handler
, 1 -- a_get_all_command_category
, 0 -- a_get_inactive_command_category
, '' -- a_ids_command_category
@@ -683,14 +696,11 @@ CALL fetchmetrics.p_dog_get_many_assessment_response (
, '' -- a_names_command
, '' -- a_hand_signal_default_descriptions_command
, '' -- a_notes_command
, 1 -- a_get_all_command_modality
, 0 -- a_get_inactive_command_modality
, '' -- a_ids_command_modality
, '' -- a_names_command_modality
, 1 -- a_get_all_bribe
, 0 -- a_get_inactive_bribe
, '' -- a_ids_bribe
, '' -- a_names_bribe
, 1 -- a_get_all_reinforcement_schedule
, 0 -- a_get_inactive_reinforcement_schedule
, '' -- a_ids_reinforcement_schedule
, '' -- a_names_reinforcement_schedule
, 1 -- a_get_all_response_quality_metric
, 0 -- a_get_inactive_response_quality_metric

View File

@@ -88,7 +88,7 @@ BEGIN
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
@@ -99,7 +99,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Response (
id_temp INT
, id_response INT
, id_assessment_command_modality_link INT
, id_assessment_command_link INT
, id_response_quality_metric INT
, id_obedience_level INT
, value_measured DOUBLE
@@ -112,7 +112,7 @@ BEGIN
CREATE TEMPORARY TABLE tmp_Assessment_Response_Copy (
id_temp INT
, id_response INT
, id_assessment_command_modality_link INT
, id_assessment_command_link INT
, id_response_quality_metric INT
, id_obedience_level INT
, value_measured DOUBLE
@@ -134,7 +134,7 @@ BEGIN
INSERT INTO tmp_Assessment_Response (
id_temp
, id_response
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -146,9 +146,9 @@ BEGIN
ASSESSMENT_RESPONSE_T.id_temp
, ASSESSMENT_RESPONSE_T.id_response
, COALESCE(
ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link
, ASSESSMENT_RESPONSE.id_assessment_command_modality_link
) AS id_assessment_command_modality_link
ASSESSMENT_RESPONSE_T.id_assessment_command_link
, ASSESSMENT_RESPONSE.id_assessment_command_link
) AS id_assessment_command_link
, COALESCE(
ASSESSMENT_RESPONSE_T.id_response_quality_metric
, ASSESSMENT_RESPONSE.id_response_quality_metric
@@ -178,11 +178,11 @@ BEGIN
-- Error names
UPDATE tmp_Assessment_Response t_ASSESSMENT_RESPONSE
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Response_Quality_Metric RESPONSE_QUALITY_METRIC ON t_ASSESSMENT_RESPONSE.id_response_quality_metric = RESPONSE_QUALITY_METRIC.id_metric
LEFT JOIN fetchmetrics.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_ASSESSMENT_RESPONSE.id_obedience_level = OBEDIENCE_LEVEL.id_obedience_level
SET t_ASSESSMENT_RESPONSE.name_error = CONCAT(
COALESCE(CONVERT(ASSESSMENT_COMMAND_MODALITY_LINK.created_on, CHAR), '(No Assessment Command Modality Link)')
COALESCE(CONVERT(ASSESSMENT_COMMAND_LINK.created_on, CHAR), '(No Assessment Command Link)')
, ' - '
, COALESCE(RESPONSE_QUALITY_METRIC.name, '(No Response Quality Metric)')
, ' - '
@@ -199,15 +199,15 @@ BEGIN
-- Validation
-- Missing mandatory fields
-- id_assessment_command_modality_link
-- id_assessment_command_link
IF EXISTS (
SELECT *
FROM tmp_Assessment_Response t_ASSESSMENT_RESPONSE
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link)
OR ISNULL(ASSESSMENT_COMMAND_MODALITY_LINK.id_link)
OR ASSESSMENT_COMMAND_MODALITY_LINK.active = 0
ISNULL(t_ASSESSMENT_RESPONSE.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.active = 0
) THEN
INSERT INTO tmp_Msg_Error (
id_type
@@ -217,13 +217,13 @@ BEGIN
SELECT
v_id_type_error_bad_data
, v_code_type_error_bad_data
, CONCAT('The following Dog Assessment Response(s) do not have a valid Assessment_Command_Modality_Link: ', GROUP_CONCAT(t_ASSESSMENT_RESPONSE.name_error SEPARATOR ', ')) AS msg
, CONCAT('The following Dog Assessment Response(s) do not have a valid Assessment_Command_Link: ', GROUP_CONCAT(t_ASSESSMENT_RESPONSE.name_error SEPARATOR ', ')) AS msg
FROM tmp_Assessment_Response t_ASSESSMENT_RESPONSE
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
ISNULL(t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link)
OR ISNULL(ASSESSMENT_COMMAND_MODALITY_LINK.id_link)
OR ASSESSMENT_COMMAND_MODALITY_LINK.active = 0
ISNULL(t_ASSESSMENT_RESPONSE.id_assessment_command_link)
OR ISNULL(ASSESSMENT_COMMAND_LINK.id_link)
OR ASSESSMENT_COMMAND_LINK.active = 0
;
END IF;
-- id_response_quality_metric
@@ -363,7 +363,7 @@ BEGIN
ON ASSESSMENT_RESPONSE.id_response = t_ASSESSMENT_RESPONSE.id_response
AND t_ASSESSMENT_RESPONSE.is_new = 0
SET
ASSESSMENT_RESPONSE.id_assessment_command_modality_link = t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
ASSESSMENT_RESPONSE.id_assessment_command_link = t_ASSESSMENT_RESPONSE.id_assessment_command_link
, ASSESSMENT_RESPONSE.id_response_quality_metric = t_ASSESSMENT_RESPONSE.id_response_quality_metric
, ASSESSMENT_RESPONSE.id_obedience_level = t_ASSESSMENT_RESPONSE.id_obedience_level
, ASSESSMENT_RESPONSE.value_measured = t_ASSESSMENT_RESPONSE.value_measured
@@ -374,7 +374,7 @@ BEGIN
INSERT INTO fetchmetrics.DOG_Assessment_Response (
id_temp
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -385,7 +385,7 @@ BEGIN
)
SELECT
t_ASSESSMENT_RESPONSE.id_temp
, t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link AS id_assessment_command_modality_link
, t_ASSESSMENT_RESPONSE.id_assessment_command_link AS id_assessment_command_link
, t_ASSESSMENT_RESPONSE.id_response_quality_metric AS id_response_quality_metric
, t_ASSESSMENT_RESPONSE.id_obedience_level AS id_obedience_level
, t_ASSESSMENT_RESPONSE.value_measured AS value_measured
@@ -398,6 +398,23 @@ BEGIN
t_ASSESSMENT_RESPONSE.is_new = 1
AND t_ASSESSMENT_RESPONSE.active = 1
;
WITH Link_Response_Count AS (
SELECT
ASSESSMENT_COMMAND_LINK.id_link
, COUNT(*) AS count_responses
FROM fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK
INNER JOIN tmp_Assessment_Response t_ASSESSMENT_RESPONSE ON ASSESSMENT_COMMAND_LINK.id_link = t_ASSESSMENT_RESPONSE.id_assessment_command_link
INNER JOIN fetchmetrics.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_ASSESSMENT_RESPONSE.id_response = ASSESSMENT_RESPONSE.id_response
GROUP BY ASSESSMENT_COMMAND_LINK.id_link
)
UPDATE fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK
-- INNER JOIN tmp_Assessment_Response t_ASSESSMENT_RESPONSE ON ASSESSMENT_COMMAND_LINK.id_link = t_ASSESSMENT_RESPONSE.id_assessment_command_link
LEFT JOIN Link_Response_Count LINK_RESPONSE_COUNT ON ASSESSMENT_COMMAND_LINK.id_link = LINK_RESPONSE_COUNT.id_link
SET
ASSESSMENT_COMMAND_LINK.trial_count = IFNULL(LINK_RESPONSE_COUNT.count_responses, 0)
, ASSESSMENT_COMMAND_LINK.id_change_set = v_id_change_set
;
INSERT INTO fetchmetrics.DOG_Msg_Error_Temp (
id_type
@@ -491,7 +508,7 @@ from fetchmetrics.DOG_Assessment_Response
INSERT INTO fetchmetrics.DOG_Assessment_Response_Temp (
id_response
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -501,7 +518,7 @@ INSERT INTO fetchmetrics.DOG_Assessment_Response_Temp (
)
VALUES (
-1 -- id_response
, 1 -- id_assessment_command_modality_link
, 1 -- id_assessment_command_link
, 1 -- id_response_quality_metric
, 1 -- id_obedience_level
, 10000 -- value_measured

View File

@@ -0,0 +1,728 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_save_assessment_distraction_and_response;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_save_assessment_command_distraction_and_response;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_save_assessment_command_distraction_and_response (
IN a_comment VARCHAR(500),
IN a_guid BINARY(36),
IN a_id_user INT,
IN a_debug BIT
)
BEGIN
DECLARE v_can_admin BIT;
DECLARE v_can_create BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_id_access_level_edit INT;
DECLARE v_id_change_set INT;
DECLARE v_id_permission_dog_new INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_time_start TIMESTAMP(6);
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_Combined (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Combined t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Combined;
END;
SET SESSION group_concat_max_len=15000;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_EDIT' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ACDR;
DROP TABLE IF EXISTS tmp_Distraction_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Technique_Link_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Link_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Save_ACDR;
CREATE TEMPORARY TABLE tmp_Assessment_Save_ACDR (
id_temp INT
, id_assessment INT
, id_assessment_old INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Save_ACDR (
id_temp INT
, id_link INT
, id_link_old INT
, id_assessment INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Save_ACDR (
id_temp INT
, id_link INT
, id_link_old INT
, id_assessment_command_link INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Technique_Link_Save_ACDR (
id_temp INT
, id_link INT
, id_link_old INT
, id_assessment_command_link INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Distraction_Save_ACDR (
id_temp INT
, id_distraction INT
, id_distraction_old INT
, id_assessment_command_link INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Assessment_Response_Save_ACDR (
id_temp INT
, id_response INT
, id_response_old INT
, id_assessment_command_link INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Combined (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
-- Get data from Temp table
INSERT INTO tmp_Assessment_Save_ACDR (
id_temp
, id_assessment
, id_assessment_old
, active
, is_new
)
SELECT
ASSESSMENT_T.id_temp
, ASSESSMENT_T.id_assessment
, ASSESSMENT_T.id_assessment
, COALESCE(
ASSESSMENT_T.active
, ASSESSMENT.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_T.id_assessment, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Temp ASSESSMENT_T
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON ASSESSMENT_T.id_assessment = ASSESSMENT.id_assessment
WHERE ASSESSMENT_T.guid = a_guid
;
INSERT INTO tmp_Assessment_Command_Link_Save_ACDR (
id_temp
, id_link
, id_link_old
, id_assessment
, active
, is_new
)
SELECT
ASSESSMENT_COMMAND_LINK_T.id_temp
, ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.id_link
, ASSESSMENT_COMMAND_LINK_T.id_assessment
, COALESCE(
ASSESSMENT_COMMAND_LINK_T.active
, ASSESSMENT_COMMAND_LINK.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_COMMAND_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON ASSESSMENT_COMMAND_LINK_T.id_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE ASSESSMENT_COMMAND_LINK_T.guid = a_guid
;
INSERT INTO tmp_Assessment_Command_Modality_Link_Save_ACDR (
id_temp
, id_link
, id_link_old
, id_assessment_command_link
, active
, is_new
)
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment_command_link
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.active
, ASSESSMENT_COMMAND_MODALITY_LINK.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
WHERE ASSESSMENT_COMMAND_MODALITY_LINK_T.guid = a_guid
;
INSERT INTO tmp_Assessment_Command_Technique_Link_Save_ACDR (
id_temp
, id_link
, id_link_old
, id_assessment_command_link
, active
, is_new
)
SELECT
ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_temp
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_assessment_command_link
, COALESCE(
ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.active
, ASSESSMENT_COMMAND_TECHNIQUE_LINK.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp ASSESSMENT_COMMAND_TECHNIQUE_LINK_T
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Technique_Link ASSESSMENT_COMMAND_TECHNIQUE_LINK ON ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_link = ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_link
WHERE ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.guid = a_guid
;
INSERT INTO tmp_Distraction_Save_ACDR (
id_temp
, id_distraction
, id_distraction_old
, id_assessment_command_link
, active
, is_new
)
SELECT
DISTRACTION_T.id_temp
, DISTRACTION_T.id_distraction
, DISTRACTION_T.id_distraction
, DISTRACTION_T.id_assessment_command_link
, COALESCE(
DISTRACTION_T.active
, DISTRACTION.active
, 1
) AS active
, CASE WHEN COALESCE(DISTRACTION_T.id_distraction, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Distraction_Temp DISTRACTION_T
LEFT JOIN fetchmetrics.DOG_Distraction DISTRACTION ON DISTRACTION_T.id_distraction = DISTRACTION.id_distraction
WHERE DISTRACTION_T.guid = a_guid
;
INSERT INTO tmp_Assessment_Response_Save_ACDR (
id_temp
, id_response
, id_response_old
, id_assessment_command_link
, active
, is_new
)
SELECT
ASSESSMENT_RESPONSE_T.id_temp
, ASSESSMENT_RESPONSE_T.id_response
, ASSESSMENT_RESPONSE_T.id_response
, ASSESSMENT_RESPONSE_T.id_assessment_command_link
, COALESCE(
ASSESSMENT_RESPONSE_T.active
, ASSESSMENT_RESPONSE.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_RESPONSE_T.id_response, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSE_T
LEFT JOIN fetchmetrics.DOG_Assessment_Response ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE_T.id_response = ASSESSMENT_RESPONSE.id_response
WHERE ASSESSMENT_RESPONSE_T.guid = a_guid
;
IF a_debug = 1 THEN
SELECT 'Temp records';
SELECT * FROM tmp_Assessment_Save_ACDR;
SELECT COUNT(*) FROM tmp_Assessment_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Link_Save_ACDR;
SELECT COUNT(*) FROM tmp_Assessment_Command_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ACDR;
SELECT COUNT(*) FROM tmp_Assessment_Command_Modality_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Save_ACDR;
SELECT COUNT(*) FROM tmp_Assessment_Command_Technique_Link_Save_ACDR;
SELECT * FROM tmp_Distraction_Save_ACDR;
SELECT COUNT(*) FROM tmp_Distraction_Save_ACDR;
SELECT * FROM tmp_Assessment_Response_Save_ACDR;
SELECT COUNT(*) FROM tmp_Assessment_Response_Save_ACDR;
END IF;
-- Permissions
-- Can Create
CALL fetchmetrics.p_dog_calc_user_access(
a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_new -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CU_T.has_access, 0)
INTO
v_can_create
FROM fetchmetrics.DOG_Calc_User_Access_Temp CU_T
WHERE CU_T.GUID = a_guid
LIMIT 1
;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF v_can_create = 0 THEN
DELETE t_ME
FROM tmp_Msg_Error_Combined t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to edit Assessment_Distraction_And_Responses.'
)
;
END IF;
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Assessments
-- CREATE TEMPORARY TABLE tmp_Assessment_Save_ACDR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_assessment (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/*
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_ASSESSMENT_SAVE_ERROR.id_type
, t_ASSESSMENT_SAVE_ERROR.code
, t_ASSESSMENT_SAVE_ERROR.msg
FROM tmp_Assessment_Save_ACDR_Save_Error t_ASSESSMENT_SAVE_ERROR
;
*/
-- Get New Assessment Ids
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Combined t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
-- Update Temporary tables with new Ids
UPDATE tmp_Assessment_Save_ACDR t_ASSESSMENT
INNER JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT.id_temp = ASSESSMENT.id_temp
-- INNER JOIN tmp_Distraction_Save_ACDR t_DISTRACTION ON t_ASSESSMENT.id_assessment_old = t_DISTRACTION.id_assessment
LEFT JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT.id_assessment_old = t_ASSESSMENT_COMMAND_LINK.id_assessment
SET
t_ASSESSMENT.id_assessment = ASSESSMENT.id_assessment
-- , t_DISTRACTION.id_assessment = ASSESSMENT.id_assessment
, t_ASSESSMENT_COMMAND_LINK.id_assessment = ASSESSMENT.id_assessment
WHERE
t_ASSESSMENT.active = 1
AND t_ASSESSMENT.is_new = 1
;
-- Update Staging tables with new Ids
IF EXISTS (SELECT * FROM tmp_Assessment_Save_ACDR t_ASSESSMENT WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old LIMIT 1) THEN
START TRANSACTION;
/*
UPDATE fetchmetrics.DOG_Distraction_Temp DISTRACTION_T
INNER JOIN tmp_Distraction_Save_ACDR t_DISTRACTION ON DISTRACTION_T.id_temp = t_DISTRACTION.id_temp
INNER JOIN tmp_Assessment_Save_ACDR t_ASSESSMENT ON t_DISTRACTION.id_assessment = t_ASSESSMENT.id_assessment
SET DISTRACTION_T.id_assessment = t_DISTRACTION.id_assessment
WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old
;
*/
UPDATE fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
INNER JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK
ON t_ASSESSMENT_COMMAND_LINK.id_temp = ASSESSMENT_COMMAND_LINK_T.id_temp
AND ASSESSMENT_COMMAND_LINK_T.guid = a_guid
INNER JOIN tmp_Assessment_Save_ACDR t_ASSESSMENT ON t_ASSESSMENT.id_assessment = t_ASSESSMENT_COMMAND_LINK.id_assessment
SET ASSESSMENT_COMMAND_LINK_T.id_assessment = t_ASSESSMENT_COMMAND_LINK.id_assessment
WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old
;
COMMIT;
END IF;
END IF;
IF a_debug = 1 THEN
SELECT 'After align assessment Ids';
SELECT * FROM tmp_Assessment_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Save_ACDR;
SELECT * FROM tmp_Distraction_Save_ACDR;
SELECT * FROM tmp_Assessment_Response_Save_ACDR;
END IF;
/*
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Distractions
-- CREATE TEMPORARY TABLE tmp_Distraction_Save_ACDR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_distraction (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/ *
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_DISTRACTION_SAVE_ERROR.id_type
, t_DISTRACTION_SAVE_ERROR.code
, t_DISTRACTION_SAVE_ERROR.msg
FROM tmp_Distraction_Save_ACDR_Save_Error t_DISTRACTION_SAVE_ERROR
;
* /
*/
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Assessment Command Links
-- CREATE TEMPORARY TABLE tmp_Assessment_Command_Link_Save_ACDR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_assessment_command_link (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/*
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_ACML_SAVE_ERROR.id_type
, t_ACML_SAVE_ERROR.code
, t_ACML_SAVE_ERROR.msg
FROM tmp_Assessment_Command_Link_Save_ACDR_Save_Error t_ACML_SAVE_ERROR
;
*/
-- Get New Assessment Command Link Ids
IF EXISTS (SELECT * FROM tmp_Msg_Error_Combined t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
START TRANSACTION;
DELETE ASSESSMENT
FROM fetchmetrics.DOG_Assessment ASSESSMENT
INNER JOIN tmp_Assessment_Save_ACDR t_ASSESSMENT ON ASSESSMENT.id_assessment = t_ASSESSMENT.id_assessment
WHERE t_ASSESSMENT.is_new = 1
;
COMMIT;
ELSE
-- Update Temporary tables with new Ids
UPDATE tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK
INNER JOIN fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_LINK.id_temp = ASSESSMENT_COMMAND_LINK.id_temp
LEFT JOIN tmp_Assessment_Command_Modality_Link_Save_ACDR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_COMMAND_LINK.id_link_old = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
LEFT JOIN tmp_Assessment_Command_Technique_Link_Save_ACDR t_ASSESSMENT_COMMAND_TECHNIQUE_LINK ON t_ASSESSMENT_COMMAND_LINK.id_link_old = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
LEFT JOIN tmp_Distraction_Save_ACDR t_DISTRACTION ON t_ASSESSMENT_COMMAND_LINK.id_link_old = t_DISTRACTION.id_assessment_command_link
LEFT JOIN tmp_Assessment_Response_Save_ACDR t_ASSESSMENT_RESPONSE ON t_ASSESSMENT_COMMAND_LINK.id_link_old = t_ASSESSMENT_RESPONSE.id_assessment_command_link
SET
t_ASSESSMENT_COMMAND_LINK.id_link = ASSESSMENT_COMMAND_LINK.id_link
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
, t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
, t_DISTRACTION.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
, t_ASSESSMENT_RESPONSE.id_assessment_command_link = ASSESSMENT_COMMAND_LINK.id_link
WHERE
t_ASSESSMENT_COMMAND_LINK.active = 1
AND t_ASSESSMENT_COMMAND_LINK.is_new = 1
;
-- Update Staging tables with new Ids
IF EXISTS (SELECT * FROM tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK WHERE t_ASSESSMENT_COMMAND_LINK.id_link <> t_ASSESSMENT_COMMAND_LINK.id_link_old LIMIT 1) THEN
START TRANSACTION;
UPDATE tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK
/* fetchmetrics.DOG_Assessment_Command_Link_Temp ASSESSMENT_COMMAND_LINK_T
INNER JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK ON ASSESSMENT_COMMAND_LINK_T.id_temp = t_ASSESSMENT_COMMAND_LINK.id_temp
*/
LEFT JOIN tmp_Assessment_Command_Modality_Link_Save_ACDR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_COMMAND_LINK.id_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_temp = ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp
AND ASSESSMENT_COMMAND_MODALITY_LINK_T.guid = a_guid
LEFT JOIN tmp_Assessment_Command_Technique_Link_Save_ACDR t_ASSESSMENT_COMMAND_TECHNIQUE_LINK ON t_ASSESSMENT_COMMAND_LINK.id_link = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Technique_Link_Save_ACDR ASSESSMENT_COMMAND_TECHNIQUE_LINK_T
ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_temp = ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_temp
AND ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.guid = a_guid
LEFT JOIN tmp_Distraction_Save_ACDR t_DISTRACTION ON t_ASSESSMENT_COMMAND_LINK.id_link = t_DISTRACTION.id_assessment_command_link
LEFT JOIN fetchmetrics.DOG_Distraction_Save_ACDR DISTRACTION_T
ON t_DISTRACTION.id_temp = DISTRACTION_T.id_temp
AND DISTRACTION_T.guid = a_guid
LEFT JOIN tmp_Assessment_Response_Save_ACDR t_ASSESSMENT_RESPONSE ON t_ASSESSMENT_COMMAND_LINK.id_link = t_ASSESSMENT_RESPONSE.id_assessment_command_link
LEFT JOIN fetchmetrics.DOG_Assessment_Response_Save_ACDR ASSESSMENT_RESPONSE_T
ON t_ASSESSMENT_RESPONSE.id_temp = ASSESSMENT_RESPONSE_T.id_temp
AND ASSESSMENT_RESPONSE_T.guid = a_guid
SET
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
, ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
, DISTRACTION_T.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
, ASSESSMENT_RESPONSE_T.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
WHERE t_ASSESSMENT_COMMAND_LINK.id_link <> t_ASSESSMENT_COMMAND_LINK.id_link_old
;
/*
UPDATE fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ACDR t_ASSESSMENT_COMMAND_MODALITY_LINK ON ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_temp
INNER JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
SET ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment_command_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_link
WHERE t_ASSESSMENT_COMMAND_LINK.id_link <> t_ASSESSMENT_COMMAND_LINK.id_link_old
;
UPDATE fetchmetrics.DOG_Assessment_Command_Technique_Link_Temp ASSESSMENT_COMMAND_TECHNIQUE_LINK_T
INNER JOIN tmp_Assessment_Command_Technique_Link_Save_ACDR t_ASSESSMENT_COMMAND_TECHNIQUE_LINK ON ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_temp = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_temp
INNER JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
SET ASSESSMENT_COMMAND_TECHNIQUE_LINK_T.id_assessment_command_link = t_ASSESSMENT_COMMAND_TECHNIQUE_LINK.id_assessment_command_link
WHERE t_ASSESSMENT_COMMAND_LINK.id_link <> t_ASSESSMENT_COMMAND_LINK.id_link_old
;
UPDATE fetchmetrics.DOG_Distraction_Temp DISTRACTION_T
INNER JOIN tmp_Distraction_Save_ACDR t_DISTRACTION ON DISTRACTION_T.id_temp = t_DISTRACTION.id_temp
INNER JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK ON t_DISTRACTION.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
SET DISTRACTION_T.id_assessment_command_link = t_DISTRACTION.id_assessment_command_link
WHERE t_ASSESSMENT_COMMAND_LINK.id_link <> t_ASSESSMENT_COMMAND_LINK.id_link_old
;
UPDATE fetchmetrics.DOG_Assessment_Response ASSESSMENT_RESPONSE
INNER JOIN tmp_Assessment_Response t_ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE.id_response = t_ASSESSMENT_RESPONSE.id_response
INNER JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
SET ASSESSMENT_COMMAND_LINK_T.id_assessment_command_link = t_ASSESSMENT_COMMAND_LINK.id_link
WHERE t_ASSESSMENT_COMMAND_LINK.id_link <> t_ASSESSMENT_COMMAND_LINK.id_link_old
;
*/
COMMIT;
END IF;
END IF;
IF a_debug = 1 THEN
SELECT 'After align assessment Ids';
SELECT * FROM tmp_Assessment_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Save_ACDR;
SELECT * FROM tmp_Distraction_Save_ACDR;
SELECT * FROM tmp_Assessment_Response_Save_ACDR;
END IF;
CALL fetchmetrics.p_dog_save_assessment_command_modality_link (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
CALL fetchmetrics.p_dog_save_assessment_command_technique_link (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
CALL fetchmetrics.p_dog_save_distraction (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Assessment Responses
-- CREATE TEMPORARY TABLE tmp_Assessment_Response_Save_ACDR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_assessment_response (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/*
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_ASSESSMENT_RESPONSE_SAVE_ERROR.id_type
, t_ASSESSMENT_RESPONSE_SAVE_ERROR.code
, t_ASSESSMENT_RESPONSE_SAVE_ERROR.msg
FROM tmp_Assessment_Response_Save_ACDR_Save_Error t_ASSESSMENT_RESPONSE_SAVE_ERROR
;
* /
-- Get New Assessment Command Link Ids
IF EXISTS (SELECT * FROM tmp_Msg_Error_Combined t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
START TRANSACTION;
DELETE ASSESSMENT_COMMAND_LINK
FROM fetchmetrics.DOG_Assessment_Command_Link ASSESSMENT_COMMAND_LINK
INNER JOIN tmp_Assessment_Command_Link_Save_ACDR t_ASSESSMENT_COMMAND_LINK ON ASSESSMENT_COMMAND_LINK.id_link = t_ASSESSMENT_COMMAND_LINK.id_assessment_command_link
INNER JOIN tmp_Assessment_Save_ACDR t_ASSESSMENT ON ASSESSMENT_COMMAND_LINK.id_assessment = t_ASSESSMENT.id_assessment
WHERE
t_ASSESSMENT_COMMAND_LINK.is_new = 1
OR t_ASSESSMENT.is_new = 1
;
DELETE ASSESSMENT
FROM fetchmetrics.DOG_Assessment ASSESSMENT
INNER JOIN tmp_Assessment_Save_ACDR t_ASSESSMENT ON ASSESSMENT.id_assessment = t_ASSESSMENT.id_assessment
WHERE t_ASSESSMENT.is_new = 1
;
COMMIT;
END IF;
*/
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Combined t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ACDR;
SELECT * FROM tmp_Assessment_Command_Technique_Link_Save_ACDR;
SELECT * FROM tmp_Distraction_Save_ACDR;
SELECT * FROM tmp_Assessment_Response_Save_ACDR;
END IF;
CALL fetchmetrics.p_dog_clear_msg_error (
a_guid
, 0 -- debug
);
DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ACDR_Save_Error;
DROP TABLE IF EXISTS tmp_Distraction_Save_ACDR_Save_Error;
DROP TABLE IF EXISTS tmp_Assessment_Command_Link_Save_ACDR_Save_Error;
DROP TABLE IF EXISTS tmp_Assessment_Save_ACDR_Save_Error;
DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ACDR;
DROP TABLE IF EXISTS tmp_Distraction_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Technique_Link_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Link_Save_ACDR;
DROP TABLE IF EXISTS tmp_Assessment_Save_ACDR;
DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Combined;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_save_assessment_command_distraction_and_response (
'nipples'
, 'ripplesipplenipplytippledipplykipple'
, 1
, 1
);
*/

View File

@@ -1,562 +0,0 @@
USE fetchmetrics;
DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_save_assessment_distraction_and_response;
DELIMITER //
CREATE PROCEDURE fetchmetrics.p_dog_save_assessment_distraction_and_response (
IN a_comment VARCHAR(500),
IN a_guid BINARY(36),
IN a_id_user INT,
IN a_debug BIT
)
BEGIN
DECLARE v_can_admin BIT;
DECLARE v_can_create BIT;
DECLARE v_code_type_error_bad_data VARCHAR(100);
DECLARE v_id_access_level_edit INT;
DECLARE v_id_change_set INT;
DECLARE v_id_permission_dog_new INT;
DECLARE v_id_type_error_bad_data INT;
DECLARE v_time_start TIMESTAMP(6);
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_Combined (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
MET.id_type
, @errno
, @text
FROM fetchmetrics.CORE_Msg_Error_Type MET
WHERE MET.code = 'MYSQL_ERROR'
;
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Combined t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
DROP TABLE IF EXISTS tmp_Msg_Error_Combined;
END;
SET SESSION group_concat_max_len=15000;
SET v_time_start := CURRENT_TIMESTAMP(6);
SET v_code_type_error_bad_data := 'BAD_DATA';
SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1);
SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1);
SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1);
CALL fetchmetrics.p_core_validate_guid ( a_guid );
DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ADR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ADR;
DROP TABLE IF EXISTS tmp_Distraction_Save_ADR;
DROP TABLE IF EXISTS tmp_Assessment_Save_ADR;
CREATE TEMPORARY TABLE tmp_Assessment_Save_ADR (
id_temp INT
, id_assessment INT
, id_assessment_old INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Distraction_Save_ADR (
id_temp INT
, id_distraction INT
, id_distraction_old INT
, id_assessment INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Save_ADR (
id_temp INT
, id_link INT
, id_link_old INT
, id_assessment INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE tmp_Assessment_Response_Save_ADR (
id_temp INT
, id_response INT
, id_response_old INT
, id_assessment_command_modality_link INT
, active BIT
, is_new BIT
);
CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Combined (
id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_type INT
, code VARCHAR(250)
, msg TEXT NOT NULL
);
-- Get data from Temp table
INSERT INTO tmp_Assessment_Save_ADR (
id_temp
, id_assessment
, id_assessment_old
, active
, is_new
)
SELECT
ASSESSMENT_T.id_temp
, ASSESSMENT_T.id_assessment
, ASSESSMENT_T.id_assessment
, COALESCE(
ASSESSMENT_T.active
, ASSESSMENT.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_T.id_assessment, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Temp ASSESSMENT_T
LEFT JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON ASSESSMENT_T.id_assessment = ASSESSMENT.id_assessment
WHERE ASSESSMENT_T.guid = a_guid
;
INSERT INTO tmp_Distraction_Save_ADR (
id_temp
, id_distraction
, id_distraction_old
, id_assessment
, active
, is_new
)
SELECT
DISTRACTION_T.id_temp
, DISTRACTION_T.id_distraction
, DISTRACTION_T.id_distraction
, DISTRACTION_T.id_assessment
, COALESCE(
DISTRACTION_T.active
, DISTRACTION.active
, 1
) AS active
, CASE WHEN COALESCE(DISTRACTION_T.id_distraction, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Distraction_Temp DISTRACTION_T
LEFT JOIN fetchmetrics.DOG_Distraction DISTRACTION ON DISTRACTION_T.id_distraction = DISTRACTION.id_distraction
WHERE DISTRACTION_T.guid = a_guid
;
INSERT INTO tmp_Assessment_Command_Modality_Link_Save_ADR (
id_temp
, id_link
, id_link_old
, id_assessment
, active
, is_new
)
SELECT
ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link
, ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment
, COALESCE(
ASSESSMENT_COMMAND_MODALITY_LINK_T.active
, ASSESSMENT_COMMAND_MODALITY_LINK.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON ASSESSMENT_COMMAND_MODALITY_LINK_T.id_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
WHERE ASSESSMENT_COMMAND_MODALITY_LINK_T.guid = a_guid
;
INSERT INTO tmp_Assessment_Response_Save_ADR (
id_temp
, id_response
, id_response_old
, id_assessment_command_modality_link
, active
, is_new
)
SELECT
ASSESSMENT_RESPONSE_T.id_temp
, ASSESSMENT_RESPONSE_T.id_response
, ASSESSMENT_RESPONSE_T.id_response
, ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link
, COALESCE(
ASSESSMENT_RESPONSE_T.active
, ASSESSMENT_RESPONSE.active
, 1
) AS active
, CASE WHEN COALESCE(ASSESSMENT_RESPONSE_T.id_response, 0) < 1 THEN 1 ELSE 0 END AS is_new
FROM fetchmetrics.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSE_T
LEFT JOIN fetchmetrics.DOG_Assessment_Response ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE_T.id_response = ASSESSMENT_RESPONSE.id_response
WHERE ASSESSMENT_RESPONSE_T.guid = a_guid
;
IF a_debug = 1 THEN
SELECT 'Temp records';
SELECT * FROM tmp_Assessment_Save_ADR;
SELECT COUNT(*) FROM tmp_Assessment_Save_ADR;
SELECT * FROM tmp_Distraction_Save_ADR;
SELECT COUNT(*) FROM tmp_Distraction_Save_ADR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
SELECT COUNT(*) FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
SELECT * FROM tmp_Assessment_Response_Save_ADR;
SELECT COUNT(*) FROM tmp_Assessment_Response_Save_ADR;
END IF;
-- Permissions
-- Can Create
CALL fetchmetrics.p_dog_calc_user_access(
a_guid
, 0 -- get_all_user
, 0 -- get_inactive_user
, a_id_user -- ids_user
, '' -- a_auth0_ids_user
, '' -- a_names_user
, '' -- a_emails_user
, 1 -- a_require_all_id_search_filters_met
, 1 -- a_require_any_id_search_filters_met
, 0 -- a_require_all_non_id_search_filters_met
, 0 -- a_require_any_non_id_search_filters_met
, v_id_permission_dog_new -- ids_permission
, v_id_access_level_edit -- ids_access_level
, 0 -- a_show_errors
, 0 -- a_debug
);
SELECT
IFNULL(CU_T.has_access, 0)
INTO
v_can_create
FROM fetchmetrics.DOG_Calc_User_Access_Temp CU_T
WHERE CU_T.GUID = a_guid
LIMIT 1
;
CALL fetchmetrics.p_dog_clear_calc_user_access(
a_guid
, 0 -- a_debug
);
IF v_can_create = 0 THEN
DELETE t_ME
FROM tmp_Msg_Error_Combined t_ME
WHERE t_ME.id_type <> v_id_type_error_no_permission
;
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
VALUES (
v_id_type_error_no_permission
, v_code_type_error_no_permission
, 'You do not have permission to edit Assessment_Distraction_And_Responses.'
)
;
END IF;
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Assessments
-- CREATE TEMPORARY TABLE tmp_Assessment_Save_ADR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_assessment (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/*
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_ASSESSMENT_SAVE_ERROR.id_type
, t_ASSESSMENT_SAVE_ERROR.code
, t_ASSESSMENT_SAVE_ERROR.msg
FROM tmp_Assessment_Save_ADR_Save_Error t_ASSESSMENT_SAVE_ERROR
;
*/
-- Get New Assessment Ids
IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Combined t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
-- Update Temporary tables with new Ids
UPDATE tmp_Assessment_Save_ADR t_ASSESSMENT
INNER JOIN fetchmetrics.DOG_Assessment ASSESSMENT ON t_ASSESSMENT.id_temp = ASSESSMENT.id_temp
INNER JOIN tmp_Distraction_Save_ADR t_DISTRACTION ON t_ASSESSMENT.id_assessment_old = t_DISTRACTION.id_assessment
INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT.id_assessment_old = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
SET
t_ASSESSMENT.id_assessment = ASSESSMENT.id_assessment
, t_DISTRACTION.id_assessment = ASSESSMENT.id_assessment
, t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = ASSESSMENT.id_assessment
WHERE
t_ASSESSMENT.active = 1
AND t_ASSESSMENT.is_new = 1
;
-- Update Staging tables with new Ids
IF EXISTS (SELECT * FROM tmp_Assessment_Save_ADR t_ASSESSMENT WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old LIMIT 1) THEN
START TRANSACTION;
UPDATE fetchmetrics.DOG_Distraction_Temp DISTRACTION_T
INNER JOIN tmp_Distraction_Save_ADR t_DISTRACTION ON DISTRACTION_T.id_temp = t_DISTRACTION.id_temp
INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON t_DISTRACTION.id_assessment = t_ASSESSMENT.id_assessment
SET DISTRACTION_T.id_assessment = t_DISTRACTION.id_assessment
WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old
;
UPDATE fetchmetrics.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T
INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_temp = ASSESSMENT_COMMAND_MODALITY_LINK_T.id_temp
INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON t_ASSESSMENT.id_assessment = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
SET ASSESSMENT_COMMAND_MODALITY_LINK_T.id_assessment = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment
WHERE t_ASSESSMENT.id_assessment <> t_ASSESSMENT.id_assessment_old
;
COMMIT;
END IF;
END IF;
IF a_debug = 1 THEN
SELECT 'After align assessment Ids';
SELECT * FROM tmp_Assessment_Save_ADR;
SELECT * FROM tmp_Distraction_Save_ADR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
SELECT * FROM tmp_Assessment_Response_Save_ADR;
END IF;
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Distractions
-- CREATE TEMPORARY TABLE tmp_Distraction_Save_ADR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_distraction (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/*
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_DISTRACTION_SAVE_ERROR.id_type
, t_DISTRACTION_SAVE_ERROR.code
, t_DISTRACTION_SAVE_ERROR.msg
FROM tmp_Distraction_Save_ADR_Save_Error t_DISTRACTION_SAVE_ERROR
;
*/
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Assessment Command Modality Links
-- CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_Link_Save_ADR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_assessment_command_modality_link (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/*
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_ACML_SAVE_ERROR.id_type
, t_ACML_SAVE_ERROR.code
, t_ACML_SAVE_ERROR.msg
FROM tmp_Assessment_Command_Modality_Link_Save_ADR_Save_Error t_ACML_SAVE_ERROR
;
*/
-- Get New Assessment Command Modality Link Ids
IF EXISTS (SELECT * FROM tmp_Msg_Error_Combined t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
START TRANSACTION;
DELETE ASSESSMENT
FROM fetchmetrics.DOG_Assessment ASSESSMENT
INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON ASSESSMENT.id_assessment = t_ASSESSMENT.id_assessment
WHERE t_ASSESSMENT.is_new = 1
;
COMMIT;
ELSE
-- Update Temporary tables with new Ids
UPDATE tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK
INNER JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_temp = ASSESSMENT_COMMAND_MODALITY_LINK.id_temp
LEFT JOIN tmp_Assessment_Response_Save_ADR t_ASSESSMENT_RESPONSE ON t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link = t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
SET
t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
, t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = ASSESSMENT_COMMAND_MODALITY_LINK.id_link
WHERE
t_ASSESSMENT_COMMAND_MODALITY_LINK.active = 1
AND t_ASSESSMENT_COMMAND_MODALITY_LINK.is_new = 1
;
-- Update Staging tables with new Ids
IF EXISTS (SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK WHERE t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link <> t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link_old LIMIT 1) THEN
START TRANSACTION;
UPDATE fetchmetrics.DOG_Assessment_Response_Temp ASSESSMENT_RESPONSE_T
INNER JOIN tmp_Assessment_Response_Save_ADR t_ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE_T.id_temp = t_ASSESSMENT_RESPONSE.id_temp
INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link
SET ASSESSMENT_RESPONSE_T.id_assessment_command_modality_link = t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link
WHERE t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link <> t_ASSESSMENT_COMMAND_MODALITY_LINK.id_link_old
;
COMMIT;
END IF;
END IF;
IF a_debug = 1 THEN
SELECT 'After align assessment Ids';
SELECT * FROM tmp_Assessment_Save_ADR;
SELECT * FROM tmp_Distraction_Save_ADR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
SELECT * FROM tmp_Assessment_Response_Save_ADR;
END IF;
-- DELETE FROM tmp_Msg_Error_Combined_Save;
-- Save Assessment Responses
-- CREATE TEMPORARY TABLE tmp_Assessment_Response_Save_ADR_Save_Error AS
-- INSERT INTO tmp_Msg_Error_Combined_Save
CALL fetchmetrics.p_dog_save_assessment_response (
a_comment
, a_guid
, a_id_user
, 0 -- debug
);
/*
INSERT INTO tmp_Msg_Error_Combined (
id_type
, code
, msg
)
SELECT
t_ASSESSMENT_RESPONSE_SAVE_ERROR.id_type
, t_ASSESSMENT_RESPONSE_SAVE_ERROR.code
, t_ASSESSMENT_RESPONSE_SAVE_ERROR.msg
FROM tmp_Assessment_Response_Save_ADR_Save_Error t_ASSESSMENT_RESPONSE_SAVE_ERROR
;
*/
-- Get New Assessment Command Modality Link Ids
IF EXISTS (SELECT * FROM tmp_Msg_Error_Combined t_ERROR INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN
START TRANSACTION;
DELETE ASSESSMENT_COMMAND_MODALITY_LINK
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ASSESSMENT_COMMAND_MODALITY_LINK
INNER JOIN tmp_Assessment_Command_Modality_Link_Save_ADR t_ASSESSMENT_COMMAND_MODALITY_LINK ON ASSESSMENT_COMMAND_MODALITY_LINK.id_link = t_ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment_command_modality_link
INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON ASSESSMENT_COMMAND_MODALITY_LINK.id_assessment = t_ASSESSMENT.id_assessment
WHERE
t_ASSESSMENT_COMMAND_MODALITY_LINK.is_new = 1
OR t_ASSESSMENT.is_new = 1
;
DELETE ASSESSMENT
FROM fetchmetrics.DOG_Assessment ASSESSMENT
INNER JOIN tmp_Assessment_Save_ADR t_ASSESSMENT ON ASSESSMENT.id_assessment = t_ASSESSMENT.id_assessment
WHERE t_ASSESSMENT.is_new = 1
;
COMMIT;
END IF;
-- Errors
SELECT
t_ERROR.id_error
, t_ERROR.id_type
, t_ERROR.code
, ERROR_TYPE.name
, ERROR_TYPE.description
, ERROR_TYPE.is_breaking_error
, ERROR_TYPE.background_colour
, ERROR_TYPE.text_colour
, t_ERROR.msg
FROM tmp_Msg_Error_Combined t_ERROR
INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type
;
IF a_debug = 1 THEN
SELECT * FROM tmp_Assessment_Save_ADR;
SELECT * FROM tmp_Distraction_Save_ADR;
SELECT * FROM tmp_Assessment_Command_Modality_Link_Save_ADR;
SELECT * FROM tmp_Assessment_Response_Save_ADR;
END IF;
CALL fetchmetrics.p_dog_clear_msg_error (
a_guid
, 0 -- debug
);
DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ADR_Save_Error;
DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ADR_Save_Error;
DROP TABLE IF EXISTS tmp_Distraction_Save_ADR_Save_Error;
DROP TABLE IF EXISTS tmp_Assessment_Save_ADR_Save_Error;
DROP TABLE IF EXISTS tmp_Assessment_Response_Save_ADR;
DROP TABLE IF EXISTS tmp_Assessment_Command_Modality_Link_Save_ADR;
DROP TABLE IF EXISTS tmp_Distraction_Save_ADR;
DROP TABLE IF EXISTS tmp_Assessment_Save_ADR;
DROP TEMPORARY TABLE tmp_Msg_Error_Combined;
IF a_debug = 1 THEN
CALL fetchmetrics.p_core_debug_timing_reporting ( v_time_start );
END IF;
END //
DELIMITER ;
/*
CALL fetchmetrics.p_dog_save_assessment_distraction_and_response (
'nipples'
, 'ripplesipplenipplytippledipplykipple'
, 1
, 1
);
*/

View File

@@ -898,6 +898,7 @@ VALUES
)
;
/* Removed
INSERT INTO fetchmetrics.DOG_Drive (
code
, name
@@ -930,6 +931,7 @@ VALUES
, 0.5
)
;
*/
/*
INSERT INTO fetchmetrics.DOG_Understanding_Level (
@@ -962,33 +964,6 @@ VALUES
, 'Understood'
)
;
INSERT INTO fetchmetrics.DOG_Obedience_Level (
code
, name
)
VALUES
(
'REFUSAL'
, 'Refuses to obey'
)
, (
'ON_HER_TERMS'
, 'Might obey if she feels like it'
)
, (
'OBEYS_UNDISTRACTED'
, 'Obeys without distractions'
)
, (
'OBEYS_MILDLY_DISTRACTED'
, 'Obeys when mildly distracted'
)
, (
'OBEYS_PERFECTLY'
, 'Obeys in all situations'
)
;
*/
INSERT INTO fetchmetrics.DOG_Command_Category (
@@ -1378,6 +1353,46 @@ VALUES
)
;
INSERT INTO fetchmetrics.DOG_Assessment_Type (
code
, name
, description
)
VALUES
(
'PROFESSIONAL_TRAINING' -- code
, 'Professional Training Session' -- name
, 'Assessment conducted during one-on-one training sessions at the trainer''s facility. Focuses on specific skills development and command training in a controlled environment.' -- description
)
, (
'GROUP' -- code
, 'Group Session' -- name
, 'Evaluation during group training classes with multiple dogs and owners present. Measures performance in social settings and ability to focus despite distractions from other dogs.' -- description
)
, (
'HOME' -- code
, 'Home' -- name
, 'Assessment conducted in the dog''s home environment. Evaluates behavior in familiar surroundings and real-world application of training with household distractions and family dynamics.' -- description
)
, (
'COMPETITION' -- code
, 'Competition' -- name
, 'Evaluation of performance readiness for dog shows, agility competitions, or sporting events. Measures precision, consistency, and performance under competitive pressure.' -- description
)
, (
'QUALIFICATION' -- code
, 'Qualification' -- name
, 'Formal assessment for certifications such as Kennel Club Good Citizen, therapy dog qualification, or other official standards. Tests specific criteria required for certification approval.' -- description
)
/*
, (
'' -- code
, '' -- name
, '' -- description
)
*/
;
/*
INSERT INTO fetchmetrics.DOG_Assessment (
id_weather
@@ -1395,44 +1410,6 @@ VALUES
;
*/
INSERT INTO fetchmetrics.DOG_Distraction_Type (
code
, name
)
VALUES
(
'RESTLESSNESS'
, 'Restlessness'
)
, (
'LIVE_PREY'
, 'Live Prey'
)
, (
'DEAD_PREY'
, 'Dead Prey'
)
, (
'VEHICLES_MACHINES'
, 'Vehicles and Machines'
)
, (
'EXPLOSION'
, 'Explosion'
)
, (
'Treat'
, 'Treat'
)
, (
'TOY'
, 'Toy'
)
, (
'SQUEAKY_TOY'
, 'Squeaky Toy'
)
;
/*
INSERT INTO fetchmetrics.DOG_Distraction_Type_User_Link (
id_distraction_type
@@ -1518,6 +1495,7 @@ VALUES
;
*/
/* Removed
INSERT INTO fetchmetrics.DOG_Bribe (
code
, name
@@ -1549,7 +1527,6 @@ VALUES
)
;
/*
INSERT INTO fetchmetrics.DOG_Bribe_User_Link (
id_bribe
, id_user
@@ -1567,9 +1544,174 @@ SELECT
, 3
FROM fetchmetrics.DOG_Bribe B
;
*/
INSERT INTO fetchmetrics.DOG_Assessment_Command_Modality_Link (
INSERT INTO fetchmetrics.DOG_Reinforcement_Schedule (
code
, name
, description
)
VALUES
(
'CRF' -- code
, 'Continuous Reinforcement' -- name
, 'Every correct response is rewarded. Best for initial learning of new behaviors. Produces steady, moderate response rates but behavior extinguishes quickly when rewards stop.' -- description
)
, (
'FR' -- code
, 'Fixed Ratio' -- name
, 'Reward given after a fixed number of responses (e.g., every 5th correct response). Creates high, steady response rates with brief pauses after each reward. Risk of "ratio strain" if requirement is too high.' -- description
)
, (
'VR' -- code
, 'Variable Ratio' -- name
, 'Reward given after an unpredictable number of responses, averaging around a set number. Produces the highest, most consistent response rates with minimal pauses. Creates persistent behavior that''s resistant to extinction.' -- description
)
, (
'RR' -- code
, 'Random Ratio' -- name
, 'Reward given randomly with no pattern, maintaining a specific percentage (e.g., 50% of responses rewarded). Prevents the dog from predicting when rewards will come, avoiding systematic response patterns.' -- description
)
, (
'FI' -- code
, 'Fixed Interval' -- name
, 'First response after a set time period is rewarded. Creates a pattern where responses increase as the time approaches, with long pauses after rewards ("fixed-interval scallop").' -- description
)
, (
'VI' -- code
, 'Variable Interval' -- name
, 'First response after unpredictable time intervals is rewarded, averaging around a set time. Produces steady response rates without pauses, though generally lower rates than ratio schedules.' -- description
)
, (
'DRE' -- code
, 'Differential Reinforcement of Excellence' -- name
, 'Only the best quality responses are rewarded, with standards that increase as the dog improves. Continuously raises performance standards rather than rewarding on an all-or-nothing basis.' -- description
)
, (
'DRH' -- code
, 'Differential Reinforcement of High Rates' -- name
, 'Response is only rewarded if it occurs within a short time after the previous response. Encourages rapid, frequent responding.' -- description
)
, (
'DRL' -- code
, 'Differential Reinforcement of Low Rates' -- name
, 'Response is only rewarded if sufficient time has passed since the previous response. Encourages slower, more deliberate responding.' -- description
)
, (
'DRO' -- code
, 'Differential Reinforcement of Other Behaviors' -- name
, 'Any behavior except the target unwanted behavior is rewarded. Used to eliminate problem behaviors by reinforcing alternatives.' -- description
)
, (
'DRI' -- code
, 'Differential Reinforcement of Incompatible Behaviors' -- name
, 'Only behaviors that cannot occur simultaneously with the unwanted behavior are rewarded. More specific than DRO for eliminating problems.' -- description
)
;
INSERT INTO fetchmetrics.DOG_Training_Technique (
code
, name
, description
)
VALUES
(
'SHAPING' -- code
, 'Shaping by Successive Approximations' -- name
, 'Differentially rewarding behaviors that progressively approximate the desired final response. Each step builds closer to the target behavior through careful observation and timing.' -- description
)
, (
'PROMPTING' -- code
, 'Prompting' -- name
, 'Using physical manipulation, visual lures, or environmental cues to guide the dog into performing the desired behavior, which is then rewarded.' -- description
)
, (
'AUTOSHAPING' -- code
, 'Autoshaping' -- name
, 'Allowing classical conditioning to naturally develop the desired behavior by pairing a neutral stimulus with food delivery, causing the dog to direct food-related behaviors toward the stimulus.' -- description
)
, (
'BACKWARD_CHAINING' -- code
, 'Backward Chaining' -- name
, 'Teaching complex behavior sequences by starting with the final behavior and working backwards, so each step is reinforced by the opportunity to perform the already-learned next step.' -- description
)
, (
'FORWARD_CHAINING' -- code
, 'Forward Chaining' -- name
, 'Teaching complex behavior sequences by starting with the first behavior and progressively adding subsequent steps in order.' -- description
)
, (
'NEGATIVE_REINFORCEMENT' -- code
, 'Negative Reinforcement' -- name
, 'Removing an unpleasant stimulus when the correct behavior occurs, strengthening the behavior through escape or avoidance of the aversive stimulus.' -- description
)
, (
'POSITIVE_PUNISHMENT' -- code
, 'Positive Punishment' -- name
, 'Adding an unpleasant consequence immediately after an unwanted behavior to decrease the likelihood of that behavior recurring.' -- description
)
, (
'NEGATIVE_PUNISHMENT' -- code
, 'Negative Punishment' -- name
, 'Removing something pleasant (like attention or access to activities) immediately after unwanted behavior to decrease that behavior.' -- description
)
, (
'COUNTERCONDITIONING' -- code
, 'Counterconditioning' -- name
, 'Changing the dog''s emotional response to a stimulus by pairing it with something pleasant, replacing fear or negative associations with positive ones.' -- description
)
, (
'SYSTEMATIC_DESENSITIZATION' -- code
, 'Systematic Desensitization' -- name
, 'Gradually exposing the dog to increasing intensities of a fear-provoking stimulus while maintaining relaxation, starting well below the threshold that triggers fear.' -- description
)
, (
'FLOODING' -- code
, 'Flooding' -- name
, 'Exposing the dog to the full intensity of a feared stimulus while preventing escape responses, allowing the fear response to extinguish through prolonged exposure.' -- description
)
, (
'PROMPT_FADING' -- code
, 'Prompt Fading' -- name
, 'Gradually reducing and removing prompts (physical, visual, or environmental cues) while maintaining the learned behavior until the dog responds to the final cue alone.' -- description
)
, (
'GENERALIZATION_TRAINING' -- code
, 'Generalization Training' -- name
, 'Teaching the dog to perform learned behaviors across different contexts, locations, people, and situations to ensure reliable performance everywhere.' -- description
)
, (
'ERRORLESS_DISCRIMINATION' -- code
, 'Errorless Discrimination Learning' -- name
, 'Teaching discriminations by making the correct choice highly obvious initially, then gradually making the distinction more subtle to minimize errors during learning.' -- description
)
, (
'CONTEXT_VARIATION' -- code
, 'Context Variation Training' -- name
, 'Systematically changing environmental factors (location, time, distractions, people present) during training to strengthen stimulus control and prevent context dependency.' -- description
)
, (
'HABITUATION_TRAINING' -- code
, 'Habituation Training' -- name
, 'Repeated exposure to a stimulus until the dog stops reacting to it, teaching the dog that the stimulus is irrelevant and requires no response.' -- description
)
, (
'EXTINCTION' -- code
, 'Extinction' -- name
, 'Stopping all reinforcement for a previously rewarded behavior to decrease and eventually eliminate that behavior, often accompanied by temporary increases in the behavior.' -- description
)
/*
, (
'' -- code
, '' -- name
, '' -- description
)
*/
;
/*
INSERT INTO fetchmetrics.DOG_Assessment_Command_Link (
id_assessment
, id_command
, id_command_modality
@@ -1589,6 +1731,45 @@ VALUES
;
*/
INSERT INTO fetchmetrics.DOG_Distraction_Type (
code
, name
)
VALUES
(
'RESTLESSNESS'
, 'Restlessness'
)
, (
'LIVE_PREY'
, 'Live Prey'
)
, (
'DEAD_PREY'
, 'Dead Prey'
)
, (
'VEHICLES_MACHINES'
, 'Vehicles and Machines'
)
, (
'EXPLOSION'
, 'Explosion'
)
, (
'Treat'
, 'Treat'
)
, (
'TOY'
, 'Toy'
)
, (
'SQUEAKY_TOY'
, 'Squeaky Toy'
)
;
INSERT INTO fetchmetrics.DOG_Response_Quality_Metric (
id_unit_measurement
, code

View File

@@ -12,7 +12,7 @@ WHERE
ORDER BY A.created_on DESC, D.created_on DESC
;
SELECT *
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ACML
FROM fetchmetrics.DOG_Assessment_Command_Link ACML
INNER JOIN fetchmetrics.DOG_Assessment A ON ACML.id_assessment = A.id_assessment
WHERE
-- ACML.id_link = 5
@@ -21,7 +21,7 @@ ORDER BY A.created_on DESC, ACML.created_on DESC
;
SELECT *
FROM fetchmetrics.DOG_Assessment_Response AR
INNER JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ACML ON AR.id_assessment_command_modality_link = ACML.id_link
INNER JOIN fetchmetrics.DOG_Assessment_Command_Link ACML ON AR.id_assessment_command_link = ACML.id_link
INNER JOIN fetchmetrics.DOG_Assessment A ON ACML.id_assessment = A.id_assessment
WHERE
-- ACML.id_link = 5
@@ -30,7 +30,7 @@ ORDER BY A.created_on DESC, ACML.created_on DESC
;
/*
INSERT INTO fetchmetrics.DOG_Assessment_Command_Modality_Link (
INSERT INTO fetchmetrics.DOG_Assessment_Command_Link (
id_assessment
, id_command
@@ -61,17 +61,17 @@ WHERE (C.id_command % 7 = 0) or (C.id_command % 11 = 0) or (C.id_command % 13 =
;
INSERT INTO fetchmetrics.DOG_Assessment_Response (
id_assessment_command_modality_link
id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
)
SELECT
ACML.id_link AS id_assessment_command_modality_link
ACML.id_link AS id_assessment_command_link
, METRIC.id_response_quality_metric
, 1 + (ACML.id_command % 8) id_obedience_level
, 1 + ((METRIC.id_response_quality_metric * 3 + ACML.id_command) % 8) value_measured
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ACML
FROM fetchmetrics.DOG_Assessment_Command_Link ACML
INNER JOIN fetchmetrics.DOG_Assessment A ON ACML.id_assessment = A.id_assessment
CROSS JOIN (
SELECT 3 AS id_response_quality_metric
@@ -88,15 +88,15 @@ WITH
SELECT
ACML.id_link
, COUNT(*) AS response_count
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ACML
INNER JOIN fetchmetrics.DOG_Assessment_Response AR ON ACML.id_link = AR.id_assessment_command_modality_link
FROM fetchmetrics.DOG_Assessment_Command_Link ACML
INNER JOIN fetchmetrics.DOG_Assessment_Response AR ON ACML.id_link = AR.id_assessment_command_link
GROUP BY ACML.id_link
)
, ACML_With_Responses AS (
SELECT
ACML.id_link
, CASE WHEN IFNULL(ACML_RESPONSE_COUNT.response_count, 0) > 0 THEN 1 ELSE 0 END AS has_responses
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ACML
FROM fetchmetrics.DOG_Assessment_Command_Link ACML
LEFT JOIN ACML_Response_Count ACML_RESPONSE_COUNT ON ACML.id_link = ACML_RESPONSE_COUNT.id_link
)
, Category_Size_Known AS (
@@ -105,10 +105,10 @@ WITH
, COUNT(*) AS count_known_commands
FROM fetchmetrics.DOG_Command_Category CC
INNER JOIN fetchmetrics.DOG_Command C ON CC.id_command_category = C.id_command_category
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ACML ON C.id_command = ACML.id_command
LEFT JOIN fetchmetrics.DOG_Assessment_Command_Link ACML ON C.id_command = ACML.id_command
LEFT JOIN ACML_With_Responses ACML_WITH_RESPONSES ON ACML.id_link = ACML_WITH_RESPONSES.id_link
LEFT JOIN fetchmetrics.DOG_Assessment A ON ACML.id_assessment = A.id_assessment
-- LEFT JOIN fetchmetrics.DOG_Assessment_Response AR ON ACML.id_link = AR.id_assessment_command_modality_link
-- LEFT JOIN fetchmetrics.DOG_Assessment_Response AR ON ACML.id_link = AR.id_assessment_command_link
WHERE
ACML_WITH_RESPONSES.has_responses = 1
AND CC.active = 1
@@ -193,7 +193,7 @@ INNER JOIN fetchmetrics.DOG_Assessment A
-- WHERE A.id_assessment <= 21
;
INSERT INTO fetchmetrics.DOG_Assessment_Command_Modality_Link (
INSERT INTO fetchmetrics.DOG_Assessment_Command_Link (
id_temp
, id_assessment
, id_command
@@ -216,7 +216,7 @@ SELECT
, ACML.is_in_scent_range_of_handler
, ACML.is_in_hearing_range_of_handler
, ACML.is_on_lead
FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ACML
FROM fetchmetrics.DOG_Assessment_Command_Link ACML
INNER JOIN fetchmetrics.DOG_Assessment A
-- ON ACML.id_assessment = A.id_assessment
ON ACML.id_assessment = A.id_temp
@@ -226,7 +226,7 @@ INNER JOIN fetchmetrics.DOG_Assessment A
INSERT INTO fetchmetrics.DOG_Assessment_Response (
id_temp
, id_assessment_command_modality_link
, id_assessment_command_link
, id_response_quality_metric
, id_obedience_level
, value_measured
@@ -234,15 +234,15 @@ INSERT INTO fetchmetrics.DOG_Assessment_Response (
)
SELECT
AR.id_response
, ACML.id_link -- (SELECT ACML_NEW.id_assessment_command_modality_link FROM fetchmetrics.DOG_Assessment_Command_Modality_Link ACML_NEW WHERE ACML_NEW.id_temp
, ACML.id_link -- (SELECT ACML_NEW.id_assessment_command_link FROM fetchmetrics.DOG_Assessment_Command_Link ACML_NEW WHERE ACML_NEW.id_temp
, AR.id_response_quality_metric
, AR.id_obedience_level
, POWER(CASE WHEN AR.id_obedience_level = 3 THEN 0.9 ELSE 1.35 END, 6) * AR.value_measured
, AR.notes
FROM fetchmetrics.DOG_Assessment_Response AR
INNER JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ACML
-- ON AR.id_assessment_command_modality_link = ACML.id_link
ON AR.id_assessment_command_modality_link = ACML.id_temp
INNER JOIN fetchmetrics.DOG_Assessment_Command_Link ACML
-- ON AR.id_assessment_command_link = ACML.id_link
ON AR.id_assessment_command_link = ACML.id_temp
AND ACML.id_link > 3168
-- INNER JOIN fetchmetrics.DOG_Assessment A ON AR.id_assessment = A.id_assessment
-- WHERE A.id_assessment <= 21
@@ -256,7 +256,7 @@ INNER JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ACML
SELECT *
FROM fetchmetrics.DOG_Assessment_Response AR
INNER JOIN fetchmetrics.DOG_Assessment_Command_Modality_Link ACML ON AR.id_assessment_command_modality_link = ACML.id_link
INNER JOIN fetchmetrics.DOG_Assessment_Command_Link ACML ON AR.id_assessment_command_link = ACML.id_link
INNER JOIN fetchmetrics.DOG_Assessment A ON ACML.id_assessment = A.id_assessment
INNER JOIN fetchmetrics.DOG_Command C ON ACML.id_command = C.id_command
WHERE C.name LIKE '%SIT%'

View File

@@ -0,0 +1,51 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Group'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Group (
id_group INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_temp INT
, id_assessment_type INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_assessment_type
FOREIGN KEY (id_assessment_type)
REFERENCES fetchmetrics.DOG_Assessment_Type(id_type)
, id_weather INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_weather
FOREIGN KEY (id_weather)
REFERENCES fetchmetrics.DOG_Weather(id_weather)
, id_lighting_level INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_lighting_level
FOREIGN KEY (id_lighting_level)
REFERENCES fetchmetrics.DOG_Lighting_Level(id_lighting_level)
, id_location INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_location
FOREIGN KEY (id_location)
REFERENCES fetchmetrics.DOG_Location(id_location)
, id_user_handler INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_id_user_handler
FOREIGN KEY (id_user_handler)
REFERENCES fetchmetrics.DOG_User(id_user)
, name VARCHAR(1000) NOT NULL
, notes TEXT
, difficulty_level DOUBLE
, start_on DATETIME
, end_on DATETIME
, temperature_celcius DECIMAL(5, 2)
, difficulty_level DOUBLE
, active BIT NOT NULL DEFAULT 1
, created_on DATETIME
, id_user_created_by INT
, CONSTRAINT FK_DOG_Assessment_Group_id_user_created_by
FOREIGN KEY (id_user_created_by)
REFERENCES fetchmetrics.DOG_User(id_user)
, id_change_set INT
, CONSTRAINT FK_DOG_Assessment_Group_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,24 @@
USE fetchmetrics;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Group_Audit'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Group_Audit (
id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, id_assessment_group INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Audit_id_assessment_group
FOREIGN KEY (id_assessment_group)
REFERENCES fetchmetrics.DOG_Assessment_Group(id_group)
, name_field VARCHAR(255) NOT NULL
, value_prev TEXT
, value_new TEXT
, id_change_set INT NOT NULL
, CONSTRAINT FK_DOG_Assessment_Group_Audit_id_change_set
FOREIGN KEY (id_change_set)
REFERENCES fetchmetrics.DOG_Dog_Change_Set(id_change_set)
);

View File

@@ -0,0 +1,28 @@
USE fetchmetrics;
-- DROP TABLE IF EXISTS fetchmetrics.DOG_Assessment_Group_Temp;
SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'fetchmetrics'
AND TABLE_NAME = 'DOG_Assessment_Group_Temp'
;
CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Assessment_Group_Temp (
id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT
, id_temp INT
, name VARCHAR(1000)
, notes TEXT
, start_on DATETIME
, end_on DATETIME
, temperature_celcius DECIMAL(5, 2)
, difficulty_level DOUBLE
, active BIT NOT NULL DEFAULT 1
, does_meet_id_filters BIT
, does_meet_non_id_filters BIT
, guid BINARY(36)
);

Some files were not shown because too many files have changed in this diff Show More