From 07543994bf9aa93485fc906c85fcbc1479e5e854 Mon Sep 17 00:00:00 2001 From: Teddy Middleton-Smith Date: Wed, 20 Aug 2025 19:29:01 +0100 Subject: [PATCH] Feat: 1. User-level access added to Dogs, Command Categories, Locations, Button Shapes, Images, Distraction Types, Distraction Intensity Levels, Bribes, Response Quality Metrics, Obedience Levels. \n 2. New user (Founding Partner) creation setup in database and front-end but front-end not tested. --- business_objects/dog/dog_command_link.py | 2 +- business_objects/dog/location.py | 1 - controllers/user/user.py | 19 +- datastores/datastore_user.py | 34 + models/model_view_base.py | 1 + static/MySQL/00000_combined.sql | 1404 ++--------------- static/MySQL/11001_tbl_DOG_Dog.sql | 1 + static/MySQL/11003_tbl_DOG_Dog_Temp.sql | 5 + .../MySQL/11100_tbl_DOG_Command_Category.sql | 1 + .../11102_tbl_DOG_Command_Category_Temp.sql | 6 + static/MySQL/11200_tbl_DOG_Location.sql | 3 +- static/MySQL/11202_tbl_DOG_Location_Temp.sql | 7 + static/MySQL/11220_tbl_DOG_Button_Shape.sql | 1 + .../MySQL/11222_tbl_DOG_Button_Shape_Temp.sql | 7 + static/MySQL/11228_tbl_DOG_Image.sql | 1 + static/MySQL/11230_tbl_DOG_Image_Temp.sql | 7 + .../MySQL/11312_tbl_DOG_Distraction_Type.sql | 1 + .../11314_tbl_DOG_Distraction_Type_Temp.sql | 7 + ...16_tbl_DOG_Distraction_Intensity_Level.sql | 1 + ...l_DOG_Distraction_Intensity_Level_Temp.sql | 7 + static/MySQL/11324_tbl_DOG_Bribe.sql | 1 + static/MySQL/11326_tbl_DOG_Bribe_Temp.sql | 7 + .../11332_tbl_DOG_Response_Quality_Metric.sql | 1 + ...4_tbl_DOG_Response_Quality_Metric_Temp.sql | 7 + .../MySQL/11336_tbl_DOG_Obedience_Level.sql | 1 + .../11338_tbl_DOG_Obedience_Level_Temp.sql | 7 + .../70518_p_dog_save_new_founding_partner.sql | 216 +++ static/MySQL/71002_p_dog_save_dog.sql | 459 ++++++ .../71102_p_dog_save_command_category.sql | 87 +- static/MySQL/71104_p_dog_calc_command.sql | 117 +- static/MySQL/71202_p_dog_save_location.sql | 80 +- ..._p_ph_save_apply_founding_partner_form.sql | 2 + static/css/pages/dog/assessment.css | 5 +- static/css/pages/user/company.css | 7 + static/dist/css/dog_assessment.bundle.css | 5 +- static/dist/css/dog_assessment.bundle.css.map | 2 +- static/dist/css/user_company.bundle.css | 7 + static/dist/css/user_company.bundle.css.map | 2 +- .../components/dog/_preview_DDL_image.html | 11 +- templates/layouts/_shared_scripts.html | 1 + templates/pages/dog/_button_icons.html | 3 +- templates/pages/dog/_home.html | 4 + 42 files changed, 1164 insertions(+), 1384 deletions(-) create mode 100644 static/MySQL/70518_p_dog_save_new_founding_partner.sql create mode 100644 static/MySQL/71002_p_dog_save_dog.sql diff --git a/business_objects/dog/dog_command_link.py b/business_objects/dog/dog_command_link.py index 72bf252..32126a6 100644 --- a/business_objects/dog/dog_command_link.py +++ b/business_objects/dog/dog_command_link.py @@ -170,7 +170,7 @@ class Parameters_Dog_Command_Link(Get_Many_Parameters_Base): require_any_non_id_search_filters_met: bool @classmethod - def get_default(cls): + def get_default(cls, id_user_session): return cls( get_all_link = True , get_inactive_link = False diff --git a/business_objects/dog/location.py b/business_objects/dog/location.py index b061a32..18479fa 100644 --- a/business_objects/dog/location.py +++ b/business_objects/dog/location.py @@ -235,6 +235,5 @@ class Parameters_Location(Get_Many_Parameters_Base): , 'a_require_any_id_search_filters_met': self.require_any_id_search_filters_met , 'a_require_all_non_id_search_filters_met': self.require_all_non_id_search_filters_met , 'a_require_any_non_id_search_filters_met': self.require_any_non_id_search_filters_met - , 'a_output_locations': self.output_locations } diff --git a/controllers/user/user.py b/controllers/user/user.py index 347ba09..cdc574e 100644 --- a/controllers/user/user.py +++ b/controllers/user/user.py @@ -138,7 +138,24 @@ def login_callback(): session[Model_View_Base.FLAG_USER] = user_json Helper_App.console_log(f'user stored on session') except: - Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}') + # Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}') + user = User.from_json_auth0(token) + errors = datastore_user.save_new_founding_partner(user) + + filters = Parameters_User.from_user(user) + datastore_user = DataStore_User() + users, errors = datastore_user.get_many_user(filters, user) + try: + user = users[0] + Helper_App.console_log('User logged in') + Helper_App.console_log(f'user ({str(type(user))}): {user}') + Helper_App.console_log(f'user key: {Model_View_Base.FLAG_USER}') + user_json = user.to_json() + Helper_App.console_log(f'User JSON: {user_json}') + session[Model_View_Base.FLAG_USER] = user_json + Helper_App.console_log(f'user stored on session') + except: + Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}') try: hash_callback = token.get('hash_callback') diff --git a/datastores/datastore_user.py b/datastores/datastore_user.py index c473024..f9956a7 100644 --- a/datastores/datastore_user.py +++ b/datastores/datastore_user.py @@ -131,6 +131,40 @@ class DataStore_User(DataStore_Base): cls.db_cursor_clear(cursor) return errors + @classmethod + def save_new_founding_partner(cls, user): + _m = f'{cls}.save_new_founding_partner' + av.val_str(comment, 'comment', _m) + + guid = Helper_DB_MySQL.create_guid_str() + user = cls.get_user_session() + + Helper_App.console_log(f'saving users: {users}') + + argument_dict_list = { + 'a_comment': comment, + 'a_guid': guid, + 'a_id_user_auth0': user.id_user_auth0, + 'a_email_user': user.email + 'a_debug': 0 + } + result = cls.db_procedure_execute('p_dog_save_new_founding_partner', argument_dict_list) + + Helper_App.console_log('Users saved') + + # Errors + cursor = result.cursor + cursor.nextset() + result_set_e = cursor.fetchall() + errors = [] + if len(result_set_e) > 0: + errors = [SQL_Error.from_db_record(row) for row in result_set_e] + for error in errors: + Helper_App.console_log(f"Error [{error.code}]: {error.msg}") + + cls.db_cursor_clear(cursor) + return errors + @classmethod def get_many_role(cls, role_filters): diff --git a/models/model_view_base.py b/models/model_view_base.py index 9d9561a..ee8e5bf 100644 --- a/models/model_view_base.py +++ b/models/model_view_base.py @@ -194,6 +194,7 @@ class Model_View_Base(BaseModel, ABC): FLAG_FORM_FILTERS: ClassVar[str] = 'form-filters' FLAG_HAMBURGER: ClassVar[str] = 'hamburger' FLAG_ICON: ClassVar[str] = "icon" + FLAG_IMAGE: ClassVar[str] = Image.FLAG_IMAGE FLAG_IMAGE_LOGO: ClassVar[str] = 'image-logo' FLAG_INITIALISED: ClassVar[str] = 'initialised' FLAG_INPUT_ANSWER: ClassVar[str] = 'input-answer' diff --git a/static/MySQL/00000_combined.sql b/static/MySQL/00000_combined.sql index d0b087f..c836450 100644 --- a/static/MySQL/00000_combined.sql +++ b/static/MySQL/00000_combined.sql @@ -1,103 +1,31 @@ - -USE demo; -DROP PROCEDURE IF EXISTS demo.p_dog_calc_assessment_response; + +USE demo; + +DROP PROCEDURE IF EXISTS p_dog_save_new_founding_partner; + DELIMITER // -CREATE PROCEDURE demo.p_dog_calc_assessment_response ( - IN a_guid BINARY(36) - , IN a_id_user INT - , IN a_get_all_assessment_response BIT - , IN a_get_inactive_assessment_response BIT - , IN a_ids_assessment_response TEXT - , IN a_notes_assessment_response TEXT - , IN a_min_value_measured_assessment_response INT - , IN a_max_value_measured_assessment_response INT - - , IN a_get_all_ACM_link BIT - , IN a_get_inactive_ACM_link BIT - , IN a_ids_ACM_link TEXT - , IN a_min_distance_from_handler_metres_ACM_link FLOAT - , IN a_max_distance_from_handler_metres_ACM_link FLOAT - , IN a_value_is_in_sight_of_handler_ACM_link INT - , IN a_value_is_in_scent_range_of_handler_ACM_link INT - , IN a_value_is_in_hearing_range_of_handler_ACM_link INT - , IN a_value_is_on_lead_ACM_link INT - , IN a_min_trial_count_ACM_link FLOAT - , IN a_max_trial_count_ACM_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_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_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_response_quality_metric BIT - , IN a_get_inactive_response_quality_metric BIT - , IN a_ids_response_quality_metric TEXT - , IN a_names_response_quality_metric TEXT - - , IN a_get_all_obedience_level BIT - , IN a_get_inactive_obedience_level BIT - , IN a_ids_obedience_level TEXT - , IN a_names_obedience_level 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 +CREATE PROCEDURE p_dog_save_new_founding_partner ( + IN a_comment VARCHAR(500) + , IN a_guid BINARY(36) + , IN a_id_user_auth0 VARCHAR(256) + , IN a_email_user VARCHAR(256) , 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_response_id BIT; - DECLARE v_has_filter_assessment_response_notes BIT; - DECLARE v_has_filter_assessment_response_value_measured_min BIT; - DECLARE v_has_filter_assessment_response_value_measured_max BIT; - DECLARE v_id_access_level_view INT; - DECLARE v_id_minimum INT; - DECLARE v_id_permission_dog_view INT; + 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_product INT; + DECLARE v_id_permission_user_edit INT; + DECLARE v_id_role_manager INT; + DECLARE v_is_super_user BIT; DECLARE v_id_type_error_bad_data INT; - DECLARE v_id_type_error_no_permission INT; + DECLARE v_can_edit_user BIT; + DECLARE v_priority_access_level_admin INT; + DECLARE v_priority_access_level_none INT; + DECLARE v_priority_access_level_user INT; DECLARE v_time_start TIMESTAMP(6); DECLARE exit handler for SQLEXCEPTION @@ -110,1195 +38,179 @@ BEGIN ROLLBACK; - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Assessment_Response ( - id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT + CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( + display_order 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_Response ( - id_type + INSERT INTO tmp_Msg_Error ( + id_type , code , msg ) SELECT - MET.id_type + MET.id_type , @errno , @text FROM demo.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_Response t_ERROR - INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type - ; - - DROP TABLE IF EXISTS tmp_Msg_Error_Calc_Assessment_Response; + SELECT * + FROM tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_Msg_Error; END; - + SET v_time_start := CURRENT_TIMESTAMP(6); SET v_code_type_error_bad_data := 'BAD_DATA'; - SET v_code_type_error_no_permission := 'NO_PERMISSION'; SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM demo.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 demo.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 demo.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1); - SET v_id_access_level_view := (SELECT ACCESS_LEVEL.id_access_level FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'VIEW' LIMIT 1); - - + SET v_id_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1); + SET v_id_permission_user_edit := (SELECT GROUP_CONCAT(PERMISSION.id_permission SEPARATOR ',') FROM demo.DOG_Permission PERMISSION WHERE PERMISSION.code = 'USER_CREATE' LIMIT 1); + SET v_priority_access_level_admin := (SELECT ACCESS_LEVEL.priority FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'ADMIN' LIMIT 1); + SET v_priority_access_level_none := (SELECT ACCESS_LEVEL.priority FROM demo.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'NONE' LIMIT 1); + SET v_id_role_manager := (SELECT ROLES.id_role FROM demo.DOG_Role ROLES WHERE ROLES.code = 'COMPANY_MANAGER' LIMIT 1); + CALL demo.p_core_validate_guid ( a_guid ); - - SET a_id_user := IFNULL(a_id_user, 0); - SET a_get_all_assessment_response := IFNULL(a_get_all_assessment_response, 0); - SET a_get_inactive_assessment_response := IFNULL(a_get_inactive_assessment_response, 0); - SET a_ids_assessment_response := TRIM(IFNULL(a_ids_assessment_response, '')); - SET a_notes_assessment_response := TRIM(IFNULL(a_notes_assessment_response, '')); - /* - , IN a_min_value_measured_assessment_response INT - , IN a_max_value_measured_assessment_response INT - */ - -- 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_id_user - , a_get_all_assessment_response - , a_get_inactive_assessment_response - , a_ids_assessment_response - , a_notes_assessment_response - , a_min_value_measured_assessment_response - , a_max_value_measured_assessment_response - - , a_get_all_ACM_link - , a_get_inactive_ACM_link - , a_ids_ACM_link - , a_min_distance_from_handler_metres_ACM_link - , a_max_distance_from_handler_metres_ACM_link - , a_value_is_in_sight_of_handler_ACM_link - , a_value_is_in_scent_range_of_handler_ACM_link - , a_value_is_in_hearing_range_of_handler_ACM_link - , a_value_is_on_lead_ACM_link - , a_min_trial_count_ACM_link - , a_max_trial_count_ACM_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_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_response_quality_metric - , a_get_inactive_response_quality_metric - , a_ids_response_quality_metric - , a_names_response_quality_metric - - , a_get_all_obedience_level - , a_get_inactive_obedience_level - , a_ids_obedience_level - , a_names_obedience_level - - , 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_Notes_Calc_Assessment_Response; - DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Assessment_Response; - DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Assessment_Response; - 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; - - CREATE TEMPORARY TABLE tmp_Assessment_Command_Modality_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 - ); - - CREATE TEMPORARY TABLE tmp_Response_Quality_Metric_Calc_Assessment_Response ( - id_metric INT NOT NULL - , id_unit_measurement INT - , code VARCHAR(250) - , name VARCHAR(250) - , value_min DOUBLE - , value_max DOUBLE - , active BIT - , does_meet_id_filters BIT NOT NULL - , does_meet_non_id_filters BIT NOT NULL - ); - - CREATE TEMPORARY TABLE tmp_Obedience_Level_Calc_Assessment_Response ( - id_obedience_level 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_Assessment_Response_Calc_Assessment_Response ( - id_response INT NOT NULL - , id_assessment_command_modality_link INT - , id_response_quality_metric INT - , id_obedience_level INT - , value_measured DOUBLE - , notes TEXT - , active BIT - , does_meet_id_filters BIT NOT NULL - , does_meet_non_id_filters BIT NOT NULL + DROP TABLE IF EXISTS tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_User_Save_User; + + CREATE TABLE tmp_User_Save_User ( + id_user INT NOT NULL + , id_role INT + , id_user_auth0 VARCHAR(250) + , firstname VARCHAR(250) + , surname VARCHAR(250) + , email VARCHAR(254) + , is_email_verified BIT DEFAULT 0 + , is_super_user BIT DEFAULT 0 + , active BIT DEFAULT 1 + , name_error VARCHAR(1000) ); - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_Assessment_Response ( - id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_type INT - , code VARCHAR(250) NOT NULL - , msg TEXT NOT NULL - ); + CREATE TABLE tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, + id_type INT NOT NULL, + code VARCHAR(250) NOT NULL, + msg TEXT NOT NULL + ); - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Id_Calc_Assessment_Response ( - substring VARCHAR(4000) NOT NULL - , as_int INT - ); - DELETE FROM tmp_Split_Id_Calc_Assessment_Response; - - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Notes_Calc_Assessment_Response ( - substring VARCHAR(4000) NOT NULL - , as_int INT - ); - DELETE FROM tmp_Split_Notes_Calc_Assessment_Response; - - SET v_has_filter_assessment_response_id := CASE WHEN a_ids_assessment_response <> '' THEN 1 ELSE 0 END; - SET v_has_filter_assessment_response_notes := CASE WHEN a_notes_assessment_response <> '' THEN 1 ELSE 0 END; - 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 - IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN demo.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_ACM_link - , a_get_inactive_ACM_link - , a_ids_ACM_link - , a_min_distance_from_handler_metres_ACM_link - , a_max_distance_from_handler_metres_ACM_link - , a_value_is_in_sight_of_handler_ACM_link - , a_value_is_in_scent_range_of_handler_ACM_link - , a_value_is_in_hearing_range_of_handler_ACM_link - , a_value_is_on_lead_ACM_link - , a_min_trial_count_ACM_link - , a_max_trial_count_ACM_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_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 - , 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 demo.p_dog_calc_assessment_command_modality_link ( - a_guid -- a_guid - , a_id_user -- a_id_user - , a_get_all_ACM_link - , a_get_inactive_ACM_link - , a_ids_ACM_link - , a_min_distance_from_handler_metres_ACM_link - , a_max_distance_from_handler_metres_ACM_link - , a_value_is_in_sight_of_handler_ACM_link - , a_value_is_in_scent_range_of_handler_ACM_link - , a_value_is_in_hearing_range_of_handler_ACM_link - , a_value_is_on_lead_ACM_link - , a_min_trial_count_ACM_link - , a_max_trial_count_ACM_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_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 - , 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_Assessment_Command_Modality_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_MODALITY_LINK_T.does_meet_id_filters - , ASSESSMENT_COMMAND_MODALITY_LINK_T.does_meet_non_id_filters - FROM demo.DOG_Assessment_Command_Modality_Link_Temp ASSESSMENT_COMMAND_MODALITY_LINK_T - WHERE ASSESSMENT_COMMAND_MODALITY_LINK_T.GUID = a_guid - ; - - IF a_debug = 1 THEN - SELECT * FROM tmp_Assessment_Command_Modality_Link_Calc_Assessment_Response; - END IF; - END IF; - - -- Call Calc Response Quality Metric - IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN demo.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_response_quality_metric -- a_get_all_response_quality_metric - , a_get_inactive_response_quality_metric -- a_get_inactive_response_quality_metric - , a_ids_response_quality_metric -- a_ids_response_quality_metric - , a_names_response_quality_metric -- a_names_response_quality_metric - , a_get_all_user_handler - , a_get_inactive_user_handler - , a_ids_user_handler - , a_names_user_handler - , a_emails_user_handler - , 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 demo.p_dog_calc_response_quality_metric ( - a_guid -- a_guid - , a_id_user -- a_id_user - , a_get_all_response_quality_metric -- a_get_all_response_quality_metric - , a_get_inactive_response_quality_metric -- a_get_inactive_response_quality_metric - , a_ids_response_quality_metric -- a_ids_response_quality_metric - , a_names_response_quality_metric -- a_names_response_quality_metric - , a_get_all_user_handler - , a_get_inactive_user_handler - , a_ids_user_handler - , a_names_user_handler - , a_emails_user_handler - , 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_Response_Quality_Metric_Calc_Assessment_Response ( - id_metric - , id_unit_measurement + IF NOT EXISTS (SELECT * FROM demo.PH_Apply_Founding_Partner_Form AFPF WHERE AFPF.email = a_email_user) THEN + INSERT INTO tmp_Msg_Error ( + id_type , code - , name - , value_min - , value_max - , active - , does_meet_id_filters - , does_meet_non_id_filters - ) - SELECT - RESPONSE_QUALITY_METRIC_T.id_metric - , RESPONSE_QUALITY_METRIC_T.id_unit_measurement - , RESPONSE_QUALITY_METRIC_T.code - , RESPONSE_QUALITY_METRIC_T.name - , RESPONSE_QUALITY_METRIC_T.value_min - , RESPONSE_QUALITY_METRIC_T.value_max - , RESPONSE_QUALITY_METRIC_T.active - - , RESPONSE_QUALITY_METRIC_T.does_meet_id_filters - , RESPONSE_QUALITY_METRIC_T.does_meet_non_id_filters - FROM demo.DOG_Response_Quality_Metric_Temp RESPONSE_QUALITY_METRIC_T - WHERE RESPONSE_QUALITY_METRIC_T.GUID = a_guid - ; - - IF a_debug = 1 THEN - SELECT * FROM tmp_Response_Quality_Metric_Calc_Assessment_Response; - END IF; - END IF; - - -- Call Calc Obedience Level - IF NOT EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN demo.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_obedience_level -- a_get_all_obedience_level - , a_get_inactive_obedience_level -- a_get_inactive_obedience_level - , a_ids_obedience_level -- a_ids_obedience_level - , a_names_obedience_level -- a_names_obedience_level - , a_get_all_user_handler - , a_get_inactive_user_handler - , a_ids_user_handler - , a_names_user_handler - , a_emails_user_handler - , 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 demo.p_dog_calc_obedience_level ( - a_guid -- a_guid - , a_id_user -- a_id_user - , a_get_all_obedience_level -- a_get_all_obedience_level - , a_get_inactive_obedience_level -- a_get_inactive_obedience_level - , a_ids_obedience_level -- a_ids_obedience_level - , a_names_obedience_level -- a_names_obedience_level - , a_get_all_user_handler - , a_get_inactive_user_handler - , a_ids_user_handler - , a_names_user_handler - , a_emails_user_handler - , 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_Obedience_Level_Calc_Assessment_Response ( - id_obedience_level - , code - , name - , active - - , does_meet_id_filters - , does_meet_non_id_filters - ) - SELECT - OBEDIENCE_LEVEL_T.id_obedience_level - , OBEDIENCE_LEVEL_T.code - , OBEDIENCE_LEVEL_T.name - , OBEDIENCE_LEVEL_T.active - - , OBEDIENCE_LEVEL_T.does_meet_id_filters - , OBEDIENCE_LEVEL_T.does_meet_non_id_filters - FROM demo.DOG_Obedience_Level_Temp OBEDIENCE_LEVEL_T - WHERE OBEDIENCE_LEVEL_T.GUID = a_guid - ; - - IF a_debug = 1 THEN - SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response; - END IF; - END IF; - - -- Assessment_Responses - IF v_has_filter_assessment_response_id = 1 THEN - CALL demo.p_core_split(a_guid, a_ids_assessment_response, ',', a_debug); - - SET sql_mode = ''; - - INSERT INTO tmp_Split_Id_Calc_Assessment_Response ( - substring - , as_int - ) - SELECT - SPLIT_T.substring - , CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int - FROM demo.CORE_Split_Temp SPLIT_T - WHERE - SPLIT_T.GUID = a_guid - AND IFNULL(SPLIT_T.substring, '') <> '' - ; - - CALL demo.p_core_clear_split( a_guid ); - END IF; - - IF v_has_filter_assessment_response_notes = 1 THEN - CALL demo.p_core_split(a_guid, a_notes_assessment_response, ',', a_debug); - - SET sql_mode = ''; - - INSERT INTO tmp_Split_Notes_Calc_Assessment_Response ( - substring - , as_int - ) - SELECT - SPLIT_T.substring - , CAST(SPLIT_T.substring AS DECIMAL(10,0)) AS as_int - FROM demo.CORE_Split_Temp SPLIT_T - WHERE - SPLIT_T.GUID = a_guid - AND IFNULL(SPLIT_T.substring, '') <> '' - ; - - CALL demo.p_core_clear_split( a_guid ); - END IF; - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN demo.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_Response t_SPLIT_ID - LEFT JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_SPLIT_ID.as_int = ASSESSMENT_RESPONSE.id_response - WHERE - ISNULL(t_SPLIT_ID.as_int) - OR ISNULL(ASSESSMENT_RESPONSE.id_response) - OR ( - ASSESSMENT_RESPONSE.active = 0 - AND a_get_inactive_assessment_response = 0 - ) - ) THEN - INSERT INTO tmp_Msg_Error_Calc_Assessment_Response ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , CONCAT('Invalid or inactive Assessment_Response IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT_ID.substring SEPARATOR ', '), 'NULL')) - FROM tmp_Split_Id_Calc_Assessment_Response t_SPLIT_ID - LEFT JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_SPLIT_ID.as_int = ASSESSMENT_RESPONSE.id_response - WHERE - ISNULL(t_SPLIT_ID.as_int) - OR ISNULL(ASSESSMENT_RESPONSE.id_response) - OR ( - ASSESSMENT_RESPONSE.active = 0 - AND a_get_inactive_assessment_response = 0 - ) - ; - /* Don't error on notes not found - ELSEIF EXISTS () - */ - ELSE - IF a_debug = 1 THEN - SELECT 'Assessment_Response Filters'; - WITH - Assessment_Response_Id_Filter AS ( - SELECT ASSESSMENT_RESPONSE.id_response - FROM tmp_Split_Id_Calc_Assessment_Response t_SPLIT_ID - INNER JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_SPLIT_ID.as_int = ASSESSMENT_RESPONSE.id_response - ) - , Assessment_Response_Notes_Filter AS ( - SELECT ASSESSMENT_RESPONSE.id_response - FROM tmp_Split_Notes_Calc_Assessment_Response t_SPLIT_NOTES - INNER JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE.notes LIKE CONCAT('%', t_SPLIT_NOTES.substring, '%') - WHERE NULLIF(t_SPLIT_NOTES.substring, '') IS NOT NULL - ) - , Assessment_Response_Filters AS ( - SELECT - ASSESSMENT_RESPONSE_COMBINED.id_response - , MAX(ASSESSMENT_RESPONSE_COMBINED.does_meet_id_filter) AS does_meet_id_filter - , MAX(ASSESSMENT_RESPONSE_COMBINED.does_meet_notes_filter) AS does_meet_notes_filter - FROM ( - SELECT - ASSESSMENT_RESPONSE_ID_FILTER.id_response - , 1 AS does_meet_id_filter - , 0 AS does_meet_notes_filter - FROM Assessment_Response_Id_Filter ASSESSMENT_RESPONSE_ID_FILTER - UNION - SELECT - ASSESSMENT_RESPONSE_NOTES_FILTER.id_response - , 0 AS does_meet_id_filter - , 1 AS does_meet_notes_filter - FROM Assessment_Response_Notes_Filter ASSESSMENT_RESPONSE_NOTES_FILTER - ) ASSESSMENT_RESPONSE_COMBINED - GROUP BY ASSESSMENT_RESPONSE_COMBINED.id_response - ) - SELECT - ASSESSMENT_RESPONSE.id_response - , ASSESSMENT_RESPONSE.id_assessment_command_modality_link - , ASSESSMENT_RESPONSE.id_response_quality_metric - , ASSESSMENT_RESPONSE.id_obedience_level - , ASSESSMENT_RESPONSE.value_measured - , ASSESSMENT_RESPONSE.notes - , ASSESSMENT_RESPONSE.active - , CASE WHEN - v_has_filter_assessment_response_id = 0 - OR ASSESSMENT_RESPONSE_FILTERS.does_meet_id_filter = 1 - THEN 1 ELSE 0 END AS does_meet_id_filters - , CASE WHEN - ( - v_has_filter_assessment_response_notes = 0 - AND v_has_filter_assessment_response_value_measured_min = 0 - AND v_has_filter_assessment_response_value_measured_max = 0 - ) - OR ASSESSMENT_RESPONSE_FILTERS.does_meet_notes_filter = 1 - OR ( - v_has_filter_assessment_response_value_measured_min = 0 - OR ( - v_has_filter_assessment_response_value_measured_min = 1 - AND ASSESSMENT_RESPONSE.value_measured >= v_has_filter_assessment_response_value_measured_min - ) - ) - OR ( - v_has_filter_assessment_response_value_measured_max = 0 - OR ( - v_has_filter_assessment_response_value_measured_max = 1 - AND ASSESSMENT_RESPONSE.value_measured <= v_has_filter_assessment_response_value_measured_max - ) - ) - THEN 1 ELSE 0 END AS does_meet_non_id_filters - FROM demo.DOG_Assessment_Response ASSESSMENT_RESPONSE - LEFT JOIN Assessment_Response_Filters ASSESSMENT_RESPONSE_FILTERS ON ASSESSMENT_RESPONSE.id_response = ASSESSMENT_RESPONSE_FILTERS.id_response - WHERE - ( - a_get_all_assessment_response = 1 - OR ( - v_has_filter_assessment_response_id = 1 - AND ASSESSMENT_RESPONSE_FILTERS.does_meet_id_filter = 1 - ) - OR ( - v_has_filter_assessment_response_notes = 1 - AND ASSESSMENT_RESPONSE_FILTERS.does_meet_notes_filter = 1 - ) - OR ( - v_has_filter_assessment_response_value_measured_min = 1 - AND ASSESSMENT_RESPONSE.value_measured >= v_has_filter_assessment_response_value_measured_min - ) - OR ( - v_has_filter_assessment_response_value_measured_max = 1 - AND ASSESSMENT_RESPONSE.value_measured <= v_has_filter_assessment_response_value_measured_max - ) - ) - AND ( - a_get_inactive_assessment_response = 1 - OR ASSESSMENT_RESPONSE.active = 1 - ) - ; - END IF; - INSERT INTO tmp_Assessment_Response_Calc_Assessment_Response ( - id_response - , id_assessment_command_modality_link - , id_response_quality_metric - , id_obedience_level - , value_measured - , notes - , active - , does_meet_id_filters - , does_meet_non_id_filters - ) - WITH - Assessment_Response_Id_Filter AS ( - SELECT ASSESSMENT_RESPONSE.id_response - FROM tmp_Split_Id_Calc_Assessment_Response t_SPLIT_ID - INNER JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON t_SPLIT_ID.as_int = ASSESSMENT_RESPONSE.id_response - ) - , Assessment_Response_Notes_Filter AS ( - SELECT ASSESSMENT_RESPONSE.id_response - FROM tmp_Split_Notes_Calc_Assessment_Response t_SPLIT_NOTES - INNER JOIN demo.DOG_Assessment_Response ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE.notes LIKE CONCAT('%', t_SPLIT_NOTES.substring, '%') - WHERE NULLIF(t_SPLIT_NOTES.substring, '') IS NOT NULL - ) - , Assessment_Response_Filters AS ( - SELECT - ASSESSMENT_RESPONSE_COMBINED.id_response - , MAX(ASSESSMENT_RESPONSE_COMBINED.does_meet_id_filter) AS does_meet_id_filter - , MAX(ASSESSMENT_RESPONSE_COMBINED.does_meet_notes_filter) AS does_meet_notes_filter - FROM ( - SELECT - ASSESSMENT_RESPONSE_ID_FILTER.id_response - , 1 AS does_meet_id_filter - , 0 AS does_meet_notes_filter - FROM Assessment_Response_Id_Filter ASSESSMENT_RESPONSE_ID_FILTER - UNION - SELECT - ASSESSMENT_RESPONSE_NOTES_FILTER.id_response - , 0 AS does_meet_id_filter - , 1 AS does_meet_notes_filter - FROM Assessment_Response_Notes_Filter ASSESSMENT_RESPONSE_NOTES_FILTER - ) ASSESSMENT_RESPONSE_COMBINED - GROUP BY ASSESSMENT_RESPONSE_COMBINED.id_response - ) - SELECT - ASSESSMENT_RESPONSE.id_response - , ASSESSMENT_RESPONSE.id_assessment_command_modality_link - , ASSESSMENT_RESPONSE.id_response_quality_metric - , ASSESSMENT_RESPONSE.id_obedience_level - , ASSESSMENT_RESPONSE.value_measured - , ASSESSMENT_RESPONSE.notes - , ASSESSMENT_RESPONSE.active - , CASE WHEN - v_has_filter_assessment_response_id = 0 - OR ASSESSMENT_RESPONSE_FILTERS.does_meet_id_filter = 1 - THEN 1 ELSE 0 END AS does_meet_id_filters - , CASE WHEN - ( - v_has_filter_assessment_response_notes = 0 - AND v_has_filter_assessment_response_value_measured_min = 0 - AND v_has_filter_assessment_response_value_measured_max = 0 - ) - OR ASSESSMENT_RESPONSE_FILTERS.does_meet_notes_filter = 1 - OR ( - v_has_filter_assessment_response_value_measured_min = 0 - OR ( - v_has_filter_assessment_response_value_measured_min = 1 - AND ASSESSMENT_RESPONSE.value_measured >= v_has_filter_assessment_response_value_measured_min - ) - ) - OR ( - v_has_filter_assessment_response_value_measured_max = 0 - OR ( - v_has_filter_assessment_response_value_measured_max = 1 - AND ASSESSMENT_RESPONSE.value_measured <= v_has_filter_assessment_response_value_measured_max - ) - ) - THEN 1 ELSE 0 END AS does_meet_non_id_filters - FROM demo.DOG_Assessment_Response ASSESSMENT_RESPONSE - LEFT JOIN Assessment_Response_Filters ASSESSMENT_RESPONSE_FILTERS ON ASSESSMENT_RESPONSE.id_response = ASSESSMENT_RESPONSE_FILTERS.id_response - WHERE - ( - a_get_all_assessment_response = 1 - OR ( - v_has_filter_assessment_response_id = 1 - AND ASSESSMENT_RESPONSE_FILTERS.does_meet_id_filter = 1 - ) - OR ( - v_has_filter_assessment_response_notes = 1 - AND ASSESSMENT_RESPONSE_FILTERS.does_meet_notes_filter = 1 - ) - OR ( - v_has_filter_assessment_response_value_measured_min = 1 - AND ASSESSMENT_RESPONSE.value_measured >= v_has_filter_assessment_response_value_measured_min - ) - OR ( - v_has_filter_assessment_response_value_measured_max = 1 - AND ASSESSMENT_RESPONSE.value_measured <= v_has_filter_assessment_response_value_measured_max - ) - ) - AND ( - a_get_inactive_assessment_response = 1 - OR ASSESSMENT_RESPONSE.active = 1 - ) - ; - END IF; - END IF; - - DELETE FROM tmp_Split_Id_Calc_Assessment_Response; - DELETE FROM tmp_Split_Notes_Calc_Assessment_Response; - - IF a_debug = 1 THEN - SELECT 'After get Assessment_Responses'; - SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response; - END IF; - - -- Filter records - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN demo.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_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 - ( - 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_RESPONSE_QUALITY_METRIC.does_meet_id_filters, 1) = 0 - OR IFNULL(t_OBEDIENCE_LEVEL.does_meet_id_filters, 1) = 0 - ) - ) - OR ( - 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_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters, 1) = 0 - OR IFNULL(t_OBEDIENCE_LEVEL.does_meet_non_id_filters, 1) = 0 - ) - ) - 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_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_RESPONSE_QUALITY_METRIC.does_meet_non_id_filters, 1) = 0 - AND IFNULL(t_OBEDIENCE_LEVEL.does_meet_non_id_filters, 1) = 0 - ) - ; - END IF; - - IF a_debug = 1 THEN - SELECT 'After filter Assessment_Responses'; - SELECT * FROM tmp_Assessment_Command_Modality_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; - - - -- 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 demo.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 demo.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_Response t_ME - WHERE t_ME.id_type <> v_id_type_error_no_permission - ; - INSERT INTO tmp_Msg_Error_Calc_Assessment_Response ( - 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 Button Icons.' - ) - ; + SELECT + MET.id_type + , MET.code + , 'Founding Partner not found.' + FROM demo.CORE_Msg_Error_Type MET + WHERE MET.id_type = v_id_type_error_bad_data + ; + END IF; + + -- Get data from Temp table + INSERT INTO tmp_User_Save_User ( + id_user + , id_user_auth0 + , id_role + , email + , firstname + , surname + , name_error + ) + VALUES ( + -1 -- AS id_user + , a_id_user_auth0 + , v_id_role_manager + , a_email_user + , (SELECT LEFT(AFPF.name_contact, LOCATE(' ', AFPF.name_contact) - 1) FROM demo.PH_Apply_Founding_Partner_Form AFPF WHERE AFPF.email = a_email_user) -- AS firstname + , (SELECT SUBSTRING(AFPF.name_contact, LOCATE(' ', AFPF.name_contact) + 1) FROM demo.PH_Apply_Founding_Partner_Form AFPF WHERE AFPF.email = a_email_user) -- AS surname + , COALESCE(a_email_user, a_id_user_auth0) -- AS name_error + ); + + + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + START TRANSACTION; + + INSERT INTO demo.DOG_User ( + id_user_auth0 + , firstname + , surname + , email + , is_email_verified + , is_super_user + , active + ) + SELECT + t_USER.id_user_auth0 + , t_USER.firstname + , t_USER.surname + , t_USER.email + , t_USER.is_email_verified + , t_USER.is_super_user + , t_USER.active + FROM tmp_User_Save_User t_USER + ; + + UPDATE tmp_User_Save_User t_USER + INNER JOIN demo.DOG_User USER ON t_USER.id_user_auth0 = USER.id_user_auth0 + SET t_USER.id_user = USER.id_user + ; + + INSERT INTO demo.DOG_User_Role_Link ( + id_role + , id_user + , active + , id_user_created_by + , created_on + ) + SELECT + t_USER.id_role + , t_USER.id_user + , 1 -- active + , t_USER.id_user AS created_by + , v_time_start AS created_on + FROM tmp_User_Save_User t_USER + ; + + COMMIT; END IF; - CALL demo.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_Modality_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; + # Errors + SELECT * + FROM tmp_Msg_Error t_ME + INNER JOIN demo.CORE_Msg_Error_Type MET ON t_ME.id_type = MET.id_type + ; - IF EXISTS(SELECT * FROM tmp_Msg_Error_Calc_Assessment_Response t_ERROR INNER JOIN demo.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_Response_Quality_Metric_Calc_Assessment_Response; - SELECT * FROM tmp_Obedience_Level_Calc_Assessment_Response; - SELECT * FROM tmp_Assessment_Response_Calc_Assessment_Response; - END IF; + IF a_debug = 1 THEN + SELECT * from tmp_User_Save_User; + END IF; - DELETE FROM tmp_Assessment_Command_Modality_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; - END IF; - - IF a_debug = 1 THEN - SELECT 'After non-permitted data deletion'; - END IF; - - -- Outputs - START TRANSACTION; - -- Assessment_Responses - INSERT INTO demo.DOG_Assessment_Response_Temp ( - guid - , id_response - , id_assessment_command_modality_link - , id_response_quality_metric - , id_obedience_level - , value_measured - , notes - , active - - , does_meet_id_filters - , does_meet_non_id_filters - ) - SELECT - a_guid - , t_ASSESSMENT_RESPONSE.id_response - , t_ASSESSMENT_RESPONSE.id_assessment_command_modality_link - , t_ASSESSMENT_RESPONSE.id_response_quality_metric - , t_ASSESSMENT_RESPONSE.id_obedience_level - , t_ASSESSMENT_RESPONSE.value_measured - , t_ASSESSMENT_RESPONSE.notes - , t_ASSESSMENT_RESPONSE.active - - , t_ASSESSMENT_RESPONSE.does_meet_id_filters - , t_ASSESSMENT_RESPONSE.does_meet_non_id_filters - FROM demo.DOG_Assessment_Response ASSESSMENT_RESPONSE - INNER JOIN tmp_Assessment_Response_Calc_Assessment_Response t_ASSESSMENT_RESPONSE ON ASSESSMENT_RESPONSE.id_response = t_ASSESSMENT_RESPONSE.id_response - ; - 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_Response t_ERROR - INNER JOIN demo.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_Command_Modality_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 demo.p_dog_clear_calc_assessment_command_modality_link ( - a_guid - , 0 -- a_debug - ); - - CALL demo.p_dog_clear_calc_response_quality_metric ( - a_guid - , 0 -- a_debug - ); - - CALL demo.p_dog_clear_calc_obedience_level ( - a_guid - , 0 -- a_debug - ); - - DROP TEMPORARY TABLE IF EXISTS tmp_Split_Notes_Calc_Assessment_Response; - DROP TEMPORARY TABLE IF EXISTS tmp_Split_Id_Calc_Assessment_Response; - DROP TEMPORARY TABLE IF EXISTS tmp_Msg_Error_Calc_Assessment_Response; - 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 TABLE IF EXISTS tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_User_Save_User; - IF a_debug = 1 THEN - CALL demo.p_core_debug_timing_reporting ( v_time_start ); - END IF; + IF a_debug = 1 THEN + CALL demo.p_debug_timing_reporting ( v_time_start ); + END IF; END // DELIMITER ; -/* -CALL demo.p_dog_calc_assessment_response ( - 'slippery ' -- a_guid - , 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user - , 1 -- a_get_all_assessment_response - , 0 -- a_get_inactive_assessment_response - , '' -- a_ids_assessment_response - , '' -- a_notes_assessment_response - , NULL -- a_min_value_measured_assessment_response - , NULL -- a_max_value_measured_assessment_response +SELECT * +FROM demo.PH_Apply_Founding_Partner_Form; +SELECT * +FROM demo.DOG_User; - , 1 -- a_get_all_ACM_link - , 0 -- a_get_inactive_ACM_link - , '' -- a_ids_ACM_link - , NULL -- a_min_distance_from_handler_metres_ACM_link - , NULL -- a_max_distance_from_handler_metres_ACM_link - , NULL -- a_value_is_in_sight_of_handler_ACM_link - , NULL -- a_value_is_in_scent_range_of_handler_ACM_link - , NULL -- a_value_is_in_hearing_range_of_handler_ACM_link - , 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_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_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_response_quality_metric - , 0 -- a_get_inactive_response_quality_metric - , '' -- a_ids_response_quality_metric - , '' -- a_names_response_quality_metric - - , 1 -- a_get_all_obedience_level - , 0 -- a_get_inactive_obedience_level - , '' -- a_ids_obedience_level - , '' -- a_names_obedience_level - - , 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 +CALL demo.p_dog_save_new_founding_partner ( + 'Test' -- a_comment + , 'lipsandchipsanddipslipsandchipsanddi' -- a_guid + , 'nipples' -- id_user-auth0 + , 'edwardmanic.ms@gmail.com' -- email -- 'teddy@demoltd.co.uk' + , 0 -- debug ); SELECT * -FROM demo.DOG_Assessment_Response_Temp -; - -CALL demo.p_dog_clear_calc_assessment_response ( - 'slippery ' -- a_guid - , 1 -- debug -); - --- DELETE FROM demo.DOG_Assessment_Response_Temp; - -*/ +FROM demo.DOG_User; diff --git a/static/MySQL/11001_tbl_DOG_Dog.sql b/static/MySQL/11001_tbl_DOG_Dog.sql index ac74e96..aa7f8e5 100644 --- a/static/MySQL/11001_tbl_DOG_Dog.sql +++ b/static/MySQL/11001_tbl_DOG_Dog.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Dog ( id_dog INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , name VARCHAR(250) NOT NULL , appearance VARCHAR(1000) , mass_kg DECIMAL(7, 3) diff --git a/static/MySQL/11003_tbl_DOG_Dog_Temp.sql b/static/MySQL/11003_tbl_DOG_Dog_Temp.sql index 190bd15..705e42b 100644 --- a/static/MySQL/11003_tbl_DOG_Dog_Temp.sql +++ b/static/MySQL/11003_tbl_DOG_Dog_Temp.sql @@ -1,6 +1,11 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Command_Category before dropping table! + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11100_tbl_DOG_Command_Category.sql b/static/MySQL/11100_tbl_DOG_Command_Category.sql index b4821a5..c55a8ce 100644 --- a/static/MySQL/11100_tbl_DOG_Command_Category.sql +++ b/static/MySQL/11100_tbl_DOG_Command_Category.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Command_Category ( id_command_category INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , code VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL , active BIT NOT NULL DEFAULT 1 diff --git a/static/MySQL/11102_tbl_DOG_Command_Category_Temp.sql b/static/MySQL/11102_tbl_DOG_Command_Category_Temp.sql index ba3804c..81bb55e 100644 --- a/static/MySQL/11102_tbl_DOG_Command_Category_Temp.sql +++ b/static/MySQL/11102_tbl_DOG_Command_Category_Temp.sql @@ -1,6 +1,12 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Command_Category before dropping table! + +DROP TABLE fetchmetrics.DOG_Command_Category_Temp +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11200_tbl_DOG_Location.sql b/static/MySQL/11200_tbl_DOG_Location.sql index 10739ec..41f1536 100644 --- a/static/MySQL/11200_tbl_DOG_Location.sql +++ b/static/MySQL/11200_tbl_DOG_Location.sql @@ -10,7 +10,8 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Location ( id_location INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_locaiton_parent INT + , id_temp INT + , id_location_parent INT , code VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL , active BIT NOT NULL DEFAULT 1 diff --git a/static/MySQL/11202_tbl_DOG_Location_Temp.sql b/static/MySQL/11202_tbl_DOG_Location_Temp.sql index eb869fb..4a549f8 100644 --- a/static/MySQL/11202_tbl_DOG_Location_Temp.sql +++ b/static/MySQL/11202_tbl_DOG_Location_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Command_Category before dropping table! + +DROP TABLE fetchmetrics.DOG_Location_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11220_tbl_DOG_Button_Shape.sql b/static/MySQL/11220_tbl_DOG_Button_Shape.sql index c1cf38c..c6b82ff 100644 --- a/static/MySQL/11220_tbl_DOG_Button_Shape.sql +++ b/static/MySQL/11220_tbl_DOG_Button_Shape.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Button_Shape ( id_button_shape INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , code VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL , notes TEXT diff --git a/static/MySQL/11222_tbl_DOG_Button_Shape_Temp.sql b/static/MySQL/11222_tbl_DOG_Button_Shape_Temp.sql index 52ca082..3126ffd 100644 --- a/static/MySQL/11222_tbl_DOG_Button_Shape_Temp.sql +++ b/static/MySQL/11222_tbl_DOG_Button_Shape_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Button_Shape_Temp before dropping table! + +DROP TABLE fetchmetrics.DOG_Button_Shape_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11228_tbl_DOG_Image.sql b/static/MySQL/11228_tbl_DOG_Image.sql index 2c7bb59..d502661 100644 --- a/static/MySQL/11228_tbl_DOG_Image.sql +++ b/static/MySQL/11228_tbl_DOG_Image.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Image ( id_image INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , id_file_type INT NOT NULL , CONSTRAINT FK_DOG_Image_id_file_type FOREIGN KEY (id_file_type) diff --git a/static/MySQL/11230_tbl_DOG_Image_Temp.sql b/static/MySQL/11230_tbl_DOG_Image_Temp.sql index 39c71b9..7b78bc8 100644 --- a/static/MySQL/11230_tbl_DOG_Image_Temp.sql +++ b/static/MySQL/11230_tbl_DOG_Image_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Image_Temp before dropping table! + +DROP TABLE fetchmetrics.DOG_Image_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11312_tbl_DOG_Distraction_Type.sql b/static/MySQL/11312_tbl_DOG_Distraction_Type.sql index 7d2575c..4f60c37 100644 --- a/static/MySQL/11312_tbl_DOG_Distraction_Type.sql +++ b/static/MySQL/11312_tbl_DOG_Distraction_Type.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Distraction_Type ( id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , code VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL , active BIT NOT NULL DEFAULT 1 diff --git a/static/MySQL/11314_tbl_DOG_Distraction_Type_Temp.sql b/static/MySQL/11314_tbl_DOG_Distraction_Type_Temp.sql index 1aedd5c..e126ccc 100644 --- a/static/MySQL/11314_tbl_DOG_Distraction_Type_Temp.sql +++ b/static/MySQL/11314_tbl_DOG_Distraction_Type_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Distraction_Type_Temp before dropping table! + +DROP TABLE fetchmetrics.DOG_Distraction_Type_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11316_tbl_DOG_Distraction_Intensity_Level.sql b/static/MySQL/11316_tbl_DOG_Distraction_Intensity_Level.sql index c771a62..f211301 100644 --- a/static/MySQL/11316_tbl_DOG_Distraction_Intensity_Level.sql +++ b/static/MySQL/11316_tbl_DOG_Distraction_Intensity_Level.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Distraction_Intensity_Level ( id_intensity_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , code VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL , active BIT NOT NULL DEFAULT 1 diff --git a/static/MySQL/11318_tbl_DOG_Distraction_Intensity_Level_Temp.sql b/static/MySQL/11318_tbl_DOG_Distraction_Intensity_Level_Temp.sql index 1ccda37..b5c9c65 100644 --- a/static/MySQL/11318_tbl_DOG_Distraction_Intensity_Level_Temp.sql +++ b/static/MySQL/11318_tbl_DOG_Distraction_Intensity_Level_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Distraction_Type_Temp before dropping table! + +DROP TABLE fetchmetrics.DOG_Distraction_Type_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11324_tbl_DOG_Bribe.sql b/static/MySQL/11324_tbl_DOG_Bribe.sql index ea652bd..37ba29f 100644 --- a/static/MySQL/11324_tbl_DOG_Bribe.sql +++ b/static/MySQL/11324_tbl_DOG_Bribe.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Bribe ( id_bribe INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , code VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL , active BIT NOT NULL DEFAULT 1 diff --git a/static/MySQL/11326_tbl_DOG_Bribe_Temp.sql b/static/MySQL/11326_tbl_DOG_Bribe_Temp.sql index a599486..f4cd979 100644 --- a/static/MySQL/11326_tbl_DOG_Bribe_Temp.sql +++ b/static/MySQL/11326_tbl_DOG_Bribe_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Bribe_Temp before dropping table! + +DROP TABLE fetchmetrics.DOG_Bribe_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11332_tbl_DOG_Response_Quality_Metric.sql b/static/MySQL/11332_tbl_DOG_Response_Quality_Metric.sql index 8fcb191..13764ba 100644 --- a/static/MySQL/11332_tbl_DOG_Response_Quality_Metric.sql +++ b/static/MySQL/11332_tbl_DOG_Response_Quality_Metric.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Response_Quality_Metric ( id_metric INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , id_unit_measurement INT NOT NULL , CONSTRAINT FK_DOG_Response_Quality_Metric_id_unit_measurement FOREIGN KEY (id_unit_measurement) diff --git a/static/MySQL/11334_tbl_DOG_Response_Quality_Metric_Temp.sql b/static/MySQL/11334_tbl_DOG_Response_Quality_Metric_Temp.sql index dd39dd0..8696bb1 100644 --- a/static/MySQL/11334_tbl_DOG_Response_Quality_Metric_Temp.sql +++ b/static/MySQL/11334_tbl_DOG_Response_Quality_Metric_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Response_Quality_Metric_Temp before dropping table! + +DROP TABLE fetchmetrics.DOG_Response_Quality_Metric_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/11336_tbl_DOG_Obedience_Level.sql b/static/MySQL/11336_tbl_DOG_Obedience_Level.sql index 51bc996..4b19d5e 100644 --- a/static/MySQL/11336_tbl_DOG_Obedience_Level.sql +++ b/static/MySQL/11336_tbl_DOG_Obedience_Level.sql @@ -10,6 +10,7 @@ WHERE CREATE TABLE IF NOT EXISTS fetchmetrics.DOG_Obedience_Level ( id_obedience_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY + , id_temp INT , code VARCHAR(250) NOT NULL , name VARCHAR(250) NOT NULL , active BIT NOT NULL DEFAULT 1 diff --git a/static/MySQL/11338_tbl_DOG_Obedience_Level_Temp.sql b/static/MySQL/11338_tbl_DOG_Obedience_Level_Temp.sql index b595f1a..24e2e49 100644 --- a/static/MySQL/11338_tbl_DOG_Obedience_Level_Temp.sql +++ b/static/MySQL/11338_tbl_DOG_Obedience_Level_Temp.sql @@ -1,6 +1,13 @@ USE fetchmetrics; +/* +Must remove existing Temp Ids from DOG_Obedience_Level_Temp before dropping table! + +DROP TABLE fetchmetrics.DOG_Obedience_Level_Temp; + +*/ + SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning FROM INFORMATION_SCHEMA.TABLES WHERE diff --git a/static/MySQL/70518_p_dog_save_new_founding_partner.sql b/static/MySQL/70518_p_dog_save_new_founding_partner.sql new file mode 100644 index 0000000..9b087cd --- /dev/null +++ b/static/MySQL/70518_p_dog_save_new_founding_partner.sql @@ -0,0 +1,216 @@ + + +USE fetchmetrics; + +DROP PROCEDURE IF EXISTS p_dog_save_new_founding_partner; + + +DELIMITER // +CREATE PROCEDURE p_dog_save_new_founding_partner ( + IN a_comment VARCHAR(500) + , IN a_guid BINARY(36) + , IN a_id_user_auth0 VARCHAR(256) + , IN a_email_user VARCHAR(256) + , IN a_debug BIT +) +BEGIN + 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_product INT; + DECLARE v_id_permission_user_edit INT; + DECLARE v_id_role_manager INT; + DECLARE v_is_super_user BIT; + DECLARE v_id_type_error_bad_data INT; + DECLARE v_can_edit_user BIT; + DECLARE v_priority_access_level_admin INT; + DECLARE v_priority_access_level_none INT; + DECLARE v_priority_access_level_user 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 ( + display_order 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 * + FROM tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_Msg_Error; + END; + + SET v_time_start := CURRENT_TIMESTAMP(6); + SET v_code_type_error_bad_data := 'BAD_DATA'; + SET v_id_type_error_bad_data := (SELECT 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_access_level_edit := (SELECT ACCESS_LEVEL.id_access_level FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'EDIT' LIMIT 1); + SET v_id_permission_user_edit := (SELECT GROUP_CONCAT(PERMISSION.id_permission SEPARATOR ',') FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'USER_CREATE' LIMIT 1); + SET v_priority_access_level_admin := (SELECT ACCESS_LEVEL.priority FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'ADMIN' LIMIT 1); + SET v_priority_access_level_none := (SELECT ACCESS_LEVEL.priority FROM fetchmetrics.DOG_Access_Level ACCESS_LEVEL WHERE ACCESS_LEVEL.code = 'NONE' LIMIT 1); + SET v_id_role_manager := (SELECT ROLES.id_role FROM fetchmetrics.DOG_Role ROLES WHERE ROLES.code = 'COMPANY_MANAGER' LIMIT 1); + + CALL fetchmetrics.p_core_validate_guid ( a_guid ); + + DROP TABLE IF EXISTS tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_User_Save_User; + + CREATE TABLE tmp_User_Save_User ( + id_user INT NOT NULL + , id_role INT + , id_user_auth0 VARCHAR(250) + , firstname VARCHAR(250) + , surname VARCHAR(250) + , email VARCHAR(254) + , is_email_verified BIT DEFAULT 0 + , is_super_user BIT DEFAULT 0 + , active BIT DEFAULT 1 + , name_error VARCHAR(1000) + ); + + CREATE TABLE tmp_Msg_Error ( + display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, + id_type INT NOT NULL, + code VARCHAR(250) NOT NULL, + msg TEXT NOT NULL + ); + + IF NOT EXISTS (SELECT * FROM fetchmetrics.PH_Apply_Founding_Partner_Form AFPF WHERE AFPF.email = a_email_user) THEN + INSERT INTO tmp_Msg_Error ( + id_type + , code + , msg + ) + SELECT + MET.id_type + , MET.code + , 'Founding Partner not found.' + FROM fetchmetrics.CORE_Msg_Error_Type MET + WHERE MET.id_type = v_id_type_error_bad_data + ; + END IF; + + -- Get data from Temp table + INSERT INTO tmp_User_Save_User ( + id_user + , id_user_auth0 + , id_role + , email + , firstname + , surname + , name_error + ) + VALUES ( + -1 -- AS id_user + , a_id_user_auth0 + , v_id_role_manager + , a_email_user + , (SELECT LEFT(AFPF.name_contact, LOCATE(' ', AFPF.name_contact) - 1) FROM fetchmetrics.PH_Apply_Founding_Partner_Form AFPF WHERE AFPF.email = a_email_user) -- AS firstname + , (SELECT SUBSTRING(AFPF.name_contact, LOCATE(' ', AFPF.name_contact) + 1) FROM fetchmetrics.PH_Apply_Founding_Partner_Form AFPF WHERE AFPF.email = a_email_user) -- AS surname + , COALESCE(a_email_user, a_id_user_auth0) -- AS name_error + ); + + + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error LIMIT 1) THEN + START TRANSACTION; + + INSERT INTO fetchmetrics.DOG_User ( + id_user_auth0 + , firstname + , surname + , email + , is_email_verified + , is_super_user + , active + ) + SELECT + t_USER.id_user_auth0 + , t_USER.firstname + , t_USER.surname + , t_USER.email + , t_USER.is_email_verified + , t_USER.is_super_user + , t_USER.active + FROM tmp_User_Save_User t_USER + ; + + UPDATE tmp_User_Save_User t_USER + INNER JOIN fetchmetrics.DOG_User USER ON t_USER.id_user_auth0 = USER.id_user_auth0 + SET t_USER.id_user = USER.id_user + ; + + INSERT INTO fetchmetrics.DOG_User_Role_Link ( + id_role + , id_user + , active + , id_user_created_by + , created_on + ) + SELECT + t_USER.id_role + , t_USER.id_user + , 1 -- active + , t_USER.id_user AS created_by + , v_time_start AS created_on + FROM tmp_User_Save_User t_USER + ; + + COMMIT; + END IF; + + # Errors + SELECT * + FROM tmp_Msg_Error t_ME + INNER JOIN fetchmetrics.CORE_Msg_Error_Type MET ON t_ME.id_type = MET.id_type + ; + + IF a_debug = 1 THEN + SELECT * from tmp_User_Save_User; + END IF; + + DROP TABLE IF EXISTS tmp_Msg_Error; + DROP TABLE IF EXISTS tmp_User_Save_User; + + IF a_debug = 1 THEN + CALL fetchmetrics.p_debug_timing_reporting ( v_time_start ); + END IF; +END // +DELIMITER ; + + + +SELECT * +FROM fetchmetrics.PH_Apply_Founding_Partner_Form; +SELECT * +FROM fetchmetrics.DOG_User; + +CALL fetchmetrics.p_dog_save_new_founding_partner ( + 'Test' -- a_comment + , 'lipsandchipsanddipslipsandchipsanddi' -- a_guid + , 'nipples' -- id_user-auth0 + , 'edwardmanic.ms@gmail.com' -- email -- 'teddy@demoltd.co.uk' + , 0 -- debug +); + +SELECT * +FROM fetchmetrics.DOG_User; diff --git a/static/MySQL/71002_p_dog_save_dog.sql b/static/MySQL/71002_p_dog_save_dog.sql new file mode 100644 index 0000000..d2cd607 --- /dev/null +++ b/static/MySQL/71002_p_dog_save_dog.sql @@ -0,0 +1,459 @@ + +USE fetchmetrics; + +DROP PROCEDURE IF EXISTS fetchmetrics.p_dog_save_dog; + +DELIMITER // +CREATE PROCEDURE fetchmetrics.p_dog_save_dog ( + 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_access_level_view INT; + DECLARE v_id_change_set INT; + DECLARE v_id_permission_dog_edit 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 + ; + + 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_edit := (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); + 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 ); + + DROP TABLE IF EXISTS tmp_Dog; + + CREATE TEMPORARY TABLE tmp_Dog ( + id_temp INT + , id_dog INT + , name VARCHAR(250) + , appearance VARCHAR(1000) + , mass_kg DECIMAL(7, 3) + , notes 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_Dog ( + id_temp + , id_dog + , name + , appearance + , mass_kg + , notes + , active + , is_new + ) + SELECT + DOG_T.id_temp + , COALESCE(DOG.id_dog, DOG_T.id_dog) AS id_dog + , COALESCE( + DOG_T.name + , DOG.name + ) AS name + , COALESCE( + DOG_T.appearance + , DOG.appearance + ) AS appearance + , COALESCE( + DOG_T.mass_kg + , DOG.mass_kg + ) AS mass_kg + , COALESCE( + DOG_T.notes + , DOG.notes + ) AS notes + , COALESCE(DOG_T.active, 1) AS active + , CASE WHEN IFNULL(DOG_T.id_dog, 0) < 1 THEN 1 ELSE 0 END AS is_new + FROM fetchmetrics.DOG_Dog_Temp DOG_T + LEFT JOIN fetchmetrics.DOG_Dog DOG ON DOG_T.id_dog = DOG.id_dog + WHERE DOG_T.guid = a_guid + ; + + IF a_debug = 1 THEN + SELECT 'Dog_Temp records'; + SELECT * FROM tmp_Dog; + SELECT COUNT(*) FROM tmp_Dog; + END IF; + + -- Error names + UPDATE tmp_Dog t_DOG + SET t_DOG.name_error = COALESCE(t_DOG.code, t_DOG.name, t_DOG.id_dog, '(No Dog)') + ; + + IF a_debug = 1 THEN + SELECT 'After set name_error'; + SELECT * FROM tmp_Dog; + SELECT COUNT(*) FROM tmp_Dog; + END IF; + + /* + -- Missing Dog Ids + UPDATE tmp_Dog t_DOG + LEFT JOIN fetchmetrics.DOG_Dog DOG ON t_DOG.code = DOG.code + SET + t_DOG.id_dog = DOG.id_dog + , t_DOG.is_new = 0 + WHERE + IFNULL(t_DOG.id_dog, 0) < 1 + AND NOT ISNULL(DOG.id_dog) + ; + + IF a_debug = 1 THEN + SELECT 'After set missing id_dog'; + SELECT * FROM tmp_Dog; + SELECT COUNT(*) FROM tmp_Dog; + END IF; + */ + + -- Validation + -- Missing mandatory fields + -- name + IF EXISTS ( SELECT * FROM tmp_Dog t_DOG WHERE t_DOG.name IS NULL ) 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(s) do not have a valid Name: ', GROUP_CONCAT(t_DOG.name_error SEPARATOR ', ')) AS msg + FROM tmp_Dog t_DOG + WHERE t_DOG.name IS NULL + ; + 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_edit -- 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 Dogs.' + ) + ; + 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_Dog; + END IF; + + DELETE FROM tmp_Dog; + 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_Dog DOG + INNER JOIN tmp_Dog t_DOG + ON DOG.id_dog = t_DOG.id_dog + AND t_DOG.is_new = 0 + SET + DOG.name = t_DOG.name + , DOG.appearance = t_DOG.appearance + , DOG.mass_kg = t_DOG.mass_kg + , DOG.notes = t_DOG.notes + , DOG.active = t_DOG.active + , DOG.id_change_set = v_id_change_set + ; + + IF EXISTS ( + SELECT * + FROM tmp_Dog t_DOG + WHERE + t_DOG.is_new = 1 + AND t_DOG.active = 1 + LIMIT 1 + ) THEN + INSERT INTO fetchmetrics.DOG_Dog ( + id_temp + , name + , appearance + , mass_kg + , notes + , active + , id_user_created_by + , created_on + ) + SELECT + t_DOG.id_temp AS id_temp + , t_DOG.name AS name + , t_DOG.appearance AS appearance + , t_DOG.mass_kg AS mass_kg + , t_DOG.notes AS notes + , t_DOG.active AS active + , a_id_user AS created_by + , v_time_start AS created_on + FROM tmp_Dog t_DOG + WHERE + t_DOG.is_new = 1 + AND t_DOG.active = 1 + ; + + UPDATE tmp_Dog t_DOG + INNER JOIN fetchmetrics.DOG_Dog DOG ON t_DOG.id_temp = DOG.id_temp + SET t_DOG.id_dog = DOG.id_dog + WHERE + t_DOG.is_new = 1 + AND t_DOG.active = 1 + ; + + INSERT INTO fetchmetrics.DOG_Dog_User_Link ( + id_dog + , id_user + , id_access_level + , active + , id_user_created_by + , created_on + ) + SELECT + t_DOG.id_dog + , a_id_user + , v_id_access_level_view + , 1 -- active + , a_id_user AS created_by + , v_time_start AS created_on + FROM tmp_Dog t_DOG + WHERE + t_DOG.is_new = 1 + AND t_DOG.active = 1 + ; + END IF; + COMMIT; + END IF; + + START TRANSACTION; + + DELETE FROM fetchmetrics.DOG_Dog_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_Dog; + END IF; + + DROP TEMPORARY TABLE tmp_Dog; + 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 ; + + + +/* + +'ripplesipplenippletippledipplekipple' +DELETE FROM fetchmetrics.DOG_Dog_Audit WHERE id_dog > 740; +DELETE FROM fetchmetrics.DOG_Dog WHERE id_dog > 740; +* / +delete +from fetchmetrics.DOG_Dog_Temp +; +select + * + -- COUNT(*) +-- delete +from fetchmetrics.DOG_Dog_Temp +; +select COUNT(*) +from fetchmetrics.DOG_Dog_Temp +; +select + * + -- COUNT(*) +-- delete +from fetchmetrics.DOG_Dog +; +select COUNT(*) +from fetchmetrics.DOG_Dog +; + +INSERT INTO fetchmetrics.DOG_Dog_Temp ( + id_dog + , code + , name + , active + , guid +) +VALUES ( + -1 -- id_dog + , 'ACTIVITIES' -- code + , 'A Sport Is Fun' -- name + , 1 -- active + , 'ripplesipplenippletippledipplekipple' +); + +CALL fetchmetrics.p_dog_save_dog ( + 'nipples' + , 'ripplesipplenippletippledipplekipple' + , 1 + , 1 +); + + +select + * + -- COUNT(*) +-- delete +from fetchmetrics.DOG_Dog_Temp +; +select COUNT(*) +from fetchmetrics.DOG_Dog_Temp +; +select + * + -- COUNT(*) +-- delete +from fetchmetrics.DOG_Dog +; +select COUNT(*) +from fetchmetrics.DOG_Dog +; + +*/ \ No newline at end of file diff --git a/static/MySQL/71102_p_dog_save_command_category.sql b/static/MySQL/71102_p_dog_save_command_category.sql index ad186d8..aefeaf7 100644 --- a/static/MySQL/71102_p_dog_save_command_category.sql +++ b/static/MySQL/71102_p_dog_save_command_category.sql @@ -15,8 +15,9 @@ BEGIN DECLARE v_can_create BIT; DECLARE v_code_type_error_bad_data VARCHAR(100); DECLARE v_id_access_level_edit INT; + DECLARE v_id_access_level_view INT; DECLARE v_id_change_set INT; - DECLARE v_id_permission_dog_new INT; + DECLARE v_id_permission_command_edit INT; DECLARE v_id_type_error_bad_data INT; DECLARE v_time_start TIMESTAMP(6); @@ -72,8 +73,9 @@ 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_command_edit := (SELECT PERMISSION.id_permission FROM fetchmetrics.DOG_Permission PERMISSION WHERE PERMISSION.code = 'COMMAND_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); + 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 ); @@ -123,6 +125,7 @@ BEGIN , COALESCE( COMMAND_CATEGORY_T.code , COMMAND_CATEGORY.code + , UPPER(COMMAND_CATEGORY_T.name) ) AS code , COALESCE( COMMAND_CATEGORY_T.name @@ -361,7 +364,7 @@ BEGIN , 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_permission_command_edit -- ids_permission , v_id_access_level_edit -- ids_access_level , 0 -- a_show_errors , 0 -- a_debug @@ -435,25 +438,64 @@ BEGIN , COMMAND_CATEGORY.id_change_set = v_id_change_set ; - INSERT INTO fetchmetrics.DOG_Command_Category ( - code - , name - , active - , id_user_created_by - , created_on - ) - SELECT - t_COMMAND_CATEGORY.code AS code - , t_COMMAND_CATEGORY.name AS name - , t_COMMAND_CATEGORY.active AS active - , a_id_user AS created_by - , v_time_start AS created_on - FROM tmp_Command_Category t_COMMAND_CATEGORY - WHERE - t_COMMAND_CATEGORY.is_new = 1 - AND t_COMMAND_CATEGORY.active = 1 - ; - + IF EXISTS ( + SELECT * + FROM tmp_Command_Category t_COMMAND_CATEGORY + WHERE + t_COMMAND_CATEGORY.is_new = 1 + AND t_COMMAND_CATEGORY.active = 1 + LIMIT 1 + ) THEN + INSERT INTO fetchmetrics.DOG_Command_Category ( + id_temp + , code + , name + , active + , id_user_created_by + , created_on + ) + SELECT + t_COMMAND_CATEGORY.id_temp AS id_temp + , t_COMMAND_CATEGORY.code AS code + , t_COMMAND_CATEGORY.name AS name + , t_COMMAND_CATEGORY.active AS active + , a_id_user AS created_by + , v_time_start AS created_on + FROM tmp_Command_Category t_COMMAND_CATEGORY + WHERE + t_COMMAND_CATEGORY.is_new = 1 + AND t_COMMAND_CATEGORY.active = 1 + ; + + UPDATE tmp_Command_Category t_COMMAND_CATEGORY + INNER JOIN fetchmetrics.DOG_Command_Category COMMAND_CATEGORY ON t_COMMAND_CATEGORY.id_temp = COMMAND_CATEGORY.id_temp + SET t_COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY.id_command_category + WHERE + t_COMMAND_CATEGORY.is_new = 1 + AND t_COMMAND_CATEGORY.active = 1 + ; + + INSERT INTO fetchmetrics.DOG_Command_Category_User_Link ( + id_command_category + , id_user + , id_access_level + , active + , id_user_created_by + , created_on + ) + SELECT + t_COMMAND_CATEGORY.id_command_category + , a_id_user + , v_id_access_level_view + , 1 -- active + , a_id_user AS created_by + , v_time_start AS created_on + FROM tmp_Command_Category t_COMMAND_CATEGORY + WHERE + t_COMMAND_CATEGORY.is_new = 1 + AND t_COMMAND_CATEGORY.active = 1 + ; + END IF; COMMIT; END IF; @@ -484,6 +526,7 @@ BEGIN SELECT * FROM tmp_Command_Category; END IF; + DROP TEMPORARY TABLE tmp_Command_Category_Copy; DROP TEMPORARY TABLE tmp_Command_Category; DROP TEMPORARY TABLE tmp_Msg_Error; diff --git a/static/MySQL/71104_p_dog_calc_command.sql b/static/MySQL/71104_p_dog_calc_command.sql index a514339..2186144 100644 --- a/static/MySQL/71104_p_dog_calc_command.sql +++ b/static/MySQL/71104_p_dog_calc_command.sql @@ -78,20 +78,21 @@ BEGIN 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_Command t_ERROR - INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type - ; + 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_Command t_ERROR + INNER JOIN fetchmetrics.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type + ; + END IF; DROP TABLE IF EXISTS tmp_Msg_Error_Calc_Command; END; @@ -343,7 +344,7 @@ BEGIN , v_id_permission_command_view -- ids_permission , v_id_access_level_view -- ids_access_level , 0 -- a_show_errors - , a_debug -- a_debug + , 0 -- a_debug ; END IF; @@ -362,7 +363,7 @@ BEGIN , v_id_permission_command_view -- ids_permission , v_id_access_level_view -- ids_access_level , 0 -- a_show_errors - , a_debug -- a_debug + , 0 -- a_debug ); INSERT INTO tmp_Calc_User_Access_Calc_Command ( @@ -410,7 +411,7 @@ BEGIN -- Command Categories IF v_has_filter_command_category_id = 1 THEN - CALL fetchmetrics.p_core_split(a_guid, a_ids_command_category, ',', a_debug); + CALL fetchmetrics.p_core_split(a_guid, a_ids_command_category, ',', 0); SET sql_mode = ''; @@ -431,7 +432,7 @@ BEGIN END IF; IF v_has_filter_command_category_name = 1 THEN - CALL fetchmetrics.p_core_split(a_guid, a_names_command_category, ',', a_debug); + CALL fetchmetrics.p_core_split(a_guid, a_names_command_category, ',', 0); SET sql_mode = ''; @@ -584,7 +585,7 @@ BEGIN ( v_has_filter_command_category_name = 0 ) - OR COMMAND_CATEGORY_FILTERS.does_meet_name_filter = 1 + OR COMMAND_CATEGORY_FILTERS.does_meet_name_filter = 1 THEN 1 ELSE 0 END AS does_meet_non_id_filters FROM fetchmetrics.DOG_Command_Category COMMAND_CATEGORY LEFT JOIN Command_Category_Filters COMMAND_CATEGORY_FILTERS ON COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_FILTERS.id_command_category @@ -617,7 +618,7 @@ BEGIN -- Commands IF v_has_filter_command_id = 1 THEN - CALL fetchmetrics.p_core_split(a_guid, a_ids_command, ',', a_debug); + CALL fetchmetrics.p_core_split(a_guid, a_ids_command, ',', 0); SET sql_mode = ''; @@ -638,7 +639,7 @@ BEGIN END IF; IF v_has_filter_command_name = 1 THEN - CALL fetchmetrics.p_core_split(a_guid, a_names_command, ',', a_debug); + CALL fetchmetrics.p_core_split(a_guid, a_names_command, ',', 0); SET sql_mode = ''; @@ -659,7 +660,7 @@ BEGIN END IF; IF v_has_filter_command_hand_signal_default_description = 1 THEN - CALL fetchmetrics.p_core_split(a_guid, a_hand_signal_default_descriptions_command, ',', a_debug); + CALL fetchmetrics.p_core_split(a_guid, a_hand_signal_default_descriptions_command, ',', 0); SET sql_mode = ''; @@ -680,7 +681,7 @@ BEGIN END IF; IF v_has_filter_command_notes = 1 THEN - CALL fetchmetrics.p_core_split(a_guid, a_notes_command, ',', a_debug); + CALL fetchmetrics.p_core_split(a_guid, a_notes_command, ',', 0); SET sql_mode = ''; @@ -958,14 +959,13 @@ BEGIN DELETE t_COMMAND FROM tmp_Command_Calc_Command t_COMMAND LEFT JOIN tmp_Command_Category_Calc_Command t_COMMAND_CATEGORY ON t_COMMAND.id_command_category = t_COMMAND_CATEGORY.id_command_category - LEFT JOIN fetchmetrics.DOG_Command_Category_User_Link COMMAND_CATEGORY_USER_LINK ON t_COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_USER_LINK.id_command_category - LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER ON COMMAND_CATEGORY_USER_LINK.id_user = t_USER.id_user + LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER ON t_COMMAND_CATEGORY.id_user = t_USER.id_user WHERE ( a_require_all_id_search_filters_met = 1 AND ( t_COMMAND.does_meet_id_filters = 0 - OR t_COMMAND_CATEGORY.does_meet_id_filters = 0 + OR IFNULL(t_COMMAND_CATEGORY.does_meet_id_filters, 0) = 0 OR IFNULL(t_USER.does_meet_id_filters, 0) = 0 ) ) @@ -973,24 +973,24 @@ BEGIN a_require_all_non_id_search_filters_met = 1 AND ( t_COMMAND.does_meet_non_id_filters = 0 - OR t_COMMAND_CATEGORY.does_meet_non_id_filters = 0 + OR IFNULL(t_COMMAND_CATEGORY.does_meet_non_id_filters, 0) = 0 OR IFNULL(t_USER.does_meet_non_id_filters, 0) = 0 ) ) OR ( a_require_any_id_search_filters_met = 1 AND t_COMMAND.does_meet_id_filters = 0 - AND t_COMMAND_CATEGORY.does_meet_id_filters = 0 + AND IFNULL(t_COMMAND_CATEGORY.does_meet_id_filters, 0) = 0 AND IFNULL(t_USER.does_meet_id_filters, 0) = 0 ) OR ( a_require_any_non_id_search_filters_met = 1 AND t_COMMAND.does_meet_non_id_filters = 0 - AND t_COMMAND_CATEGORY.does_meet_non_id_filters = 0 + AND IFNULL(t_COMMAND_CATEGORY.does_meet_non_id_filters, 0) = 0 AND IFNULL(t_USER.does_meet_non_id_filters, 0) = 0 ) ; - + /* WITH Category_And_Best_Command AS ( SELECT @@ -1000,58 +1000,9 @@ BEGIN FROM tmp_Command_Calc_Command t_COMMAND GROUP BY t_COMMAND.id_command_category ) - /* - , Command_Category_Access AS ( - SELECT - COMMAND_CATEGORY.id_command_category - , CASE WHEN - v_is_super_user = 1 - OR ( - t_USER.id_user IS NOT NULL - AND IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none) <= v_priority_access_level_view - ) - THEN 1 ELSE 0 END AS can_user_access_command_category - , ROW_NUMBER() OVER ( - PARTITION BY COMMAND_CATEGORY.id_command_category - ORDER BY CASE WHEN - v_is_super_user = 1 - OR ( - t_USER.id_user IS NOT NULL - AND IFNULL(ACCESS_LEVEL.priority, v_priority_access_level_none) <= v_priority_access_level_view - ) - THEN 1 ELSE 0 END DESC - ) AS index_link_in_command_category - , t_USER.does_meet_id_filters AS does_user_meet_id_filters - , t_USER.does_meet_non_id_filters AS does_user_meet_non_id_filters - FROM fetchmetrics.DOG_Command_Category COMMAND_CATEGORY - LEFT JOIN fetchmetrics.DOG_Command_Category_User_Link COMMAND_CATEGORY_USER_LINK - ON COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_USER_LINK.id_command_category - AND ( - ( - a_get_inactive_command_category = 1 - AND a_get_inactive_user = 1 - ) - OR COMMAND_CATEGORY_USER_LINK.active = 1 - ) - LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER - ON COMMAND_CATEGORY_USER_LINK.id_user = t_USER.id_user - AND ( - a_get_inactive_user = 1 - OR t_USER.active = 1 - ) - LEFT JOIN fetchmetrics.DOG_Access_Level ACCESS_LEVEL - ON COMMAND_CATEGORY_USER_LINK.id_access_level = ACCESS_LEVEL.id_access_level - AND ACCESS_LEVEL.active = 1 - ) - */ - SELECT * + DELETE t_COMMAND_CATEGORY -- SELECT * FROM tmp_Command_Category_Calc_Command t_COMMAND_CATEGORY LEFT JOIN Category_And_Best_Command CATEGORY_BEST ON t_COMMAND_CATEGORY.id_command_category = CATEGORY_BEST.id_command_category - /* - LEFT JOIN Command_Category_Access COMMAND_CATEGORY_ACCESS - ON t_COMMAND_CATEGORY.id_command_category = COMMAND_CATEGORY_ACCESS.id_command_category - AND COMMAND_CATEGORY_ACCESS.index_link_in_command_category = 1 - */ LEFT JOIN tmp_Calc_User_Access_Calc_Command t_USER ON t_COMMAND_CATEGORY.id_user = t_USER.id_user WHERE ( @@ -1083,16 +1034,14 @@ BEGIN AND IFNULL(t_USER.does_meet_non_id_filters, 0) = 0 ) ; + */ END IF; IF a_debug = 1 THEN SELECT 'After filter Commands and Categories'; -- SELECT * FROM tmp_Command_Category_Calc_Command; -- SELECT * FROM tmp_Command_Calc_Command; - END IF; - - IF a_debug = 1 THEN - SELECT 'Before non-permitted data deletion'; + SELECT '(&) Before non-permitted data deletion'; SELECT * FROM tmp_Command_Category_Calc_Command; SELECT * FROM tmp_Command_Calc_Command; SELECT * FROM tmp_Msg_Error_Calc_Command; diff --git a/static/MySQL/71202_p_dog_save_location.sql b/static/MySQL/71202_p_dog_save_location.sql index 1c6d548..2319e8d 100644 --- a/static/MySQL/71202_p_dog_save_location.sql +++ b/static/MySQL/71202_p_dog_save_location.sql @@ -450,26 +450,66 @@ BEGIN , LOCATIONS.id_change_set = v_id_change_set ; - INSERT INTO fetchmetrics.DOG_Location ( - id_location_parent - , code - , name - , active - , id_user_created_by - , created_on - ) - SELECT - t_LOCATIONS.id_location_parent AS id_location_parent - , t_LOCATIONS.code AS code - , t_LOCATIONS.name AS name - , t_LOCATIONS.active AS active - , a_id_user AS created_by - , v_time_start AS created_on - FROM tmp_Location t_LOCATIONS - WHERE - t_LOCATIONS.is_new = 1 - AND t_LOCATIONS.active = 1 - ; + IF EXISTS ( + SELECT * + FROM tmp_Location t_LOCATIONS + WHERE + t_LOCATIONS.is_new = 1 + AND t_LOCATIONS.active = 1 + LIMIT 1 + ) THEN + INSERT INTO fetchmetrics.DOG_Location ( + id_temp + , id_location_parent + , code + , name + , active + , id_user_created_by + , created_on + ) + SELECT + t_LOCATIONS.id_temp + , t_LOCATIONS.id_location_parent AS id_location_parent + , t_LOCATIONS.code AS code + , t_LOCATIONS.name AS name + , t_LOCATIONS.active AS active + , a_id_user AS created_by + , v_time_start AS created_on + FROM tmp_Location t_LOCATIONS + WHERE + t_LOCATIONS.is_new = 1 + AND t_LOCATIONS.active = 1 + ; + + UPDATE tmp_Location t_LOCATIONS + INNER JOIN fetchmetrics.DOG_Location LOCATIONS ON t_LOCATIONS.id_temp = LOCATIONS.id_temp + SET t_LOCATIONS.id_location = LOCATIONS.id_location + WHERE + t_LOCATIONS.is_new = 1 + AND t_LOCATIONS.active = 1 + ; + + INSERT INTO fetchmetrics.DOG_Location_User_Link ( + id_location + , id_user + , id_access_level + , active + , id_user_created_by + , created_on + ) + SELECT + t_LOCATIONS.id_location + , a_id_user + , v_id_access_level_view + , 1 -- active + , a_id_user AS created_by + , v_time_start AS created_on + FROM tmp_Location t_LOCATIONS + WHERE + t_LOCATIONS.is_new = 1 + AND t_LOCATIONS.active = 1 + ; + END IF; COMMIT; END IF; diff --git a/static/MySQL/71620_p_ph_save_apply_founding_partner_form.sql b/static/MySQL/71620_p_ph_save_apply_founding_partner_form.sql index 58e925e..19b164f 100644 --- a/static/MySQL/71620_p_ph_save_apply_founding_partner_form.sql +++ b/static/MySQL/71620_p_ph_save_apply_founding_partner_form.sql @@ -58,6 +58,8 @@ BEGIN ; END; + SET a_id_user := NULLIF(a_id_user, 0); + SET v_time_start := CURRENT_TIMESTAMP(6); SET v_code_type_error_bad_data := 'BAD_DATA'; SET v_id_type_error_bad_data := (SELECT id_type FROM fetchmetrics.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data LIMIT 1); diff --git a/static/css/pages/dog/assessment.css b/static/css/pages/dog/assessment.css index c1e7aab..bd620c9 100644 --- a/static/css/pages/dog/assessment.css +++ b/static/css/pages/dog/assessment.css @@ -13,8 +13,9 @@ h2 { .container.save.button-cancel { position: fixed; - top: 10vh; - right: 10vh; + top: 1vh; + right: 5vh; + z-index: 2; } table.table-main tbody { diff --git a/static/css/pages/user/company.css b/static/css/pages/user/company.css index 0ff583c..95834e7 100644 --- a/static/css/pages/user/company.css +++ b/static/css/pages/user/company.css @@ -3,6 +3,13 @@ display: none; } +.container.save.button-cancel { + position: fixed; + top: 1vh; + right: 5vh; + z-index: 2; +} + .container-input { margin: 0 auto; } diff --git a/static/dist/css/dog_assessment.bundle.css b/static/dist/css/dog_assessment.bundle.css index 1771faf..28df593 100644 --- a/static/dist/css/dog_assessment.bundle.css +++ b/static/dist/css/dog_assessment.bundle.css @@ -79,8 +79,9 @@ h2 { .container.save.button-cancel { position: fixed; - top: 10vh; - right: 10vh; + top: 1vh; + right: 5vh; + z-index: 2; } table.table-main tbody { diff --git a/static/dist/css/dog_assessment.bundle.css.map b/static/dist/css/dog_assessment.bundle.css.map index ef8e6a1..cfaf104 100644 --- a/static/dist/css/dog_assessment.bundle.css.map +++ b/static/dist/css/dog_assessment.bundle.css.map @@ -1 +1 @@ -{"version":3,"file":"css/dog_assessment.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;;AChEA;IACI,4BAA4B;IAC5B,WAAW;AACf;;AAEA;IACI,aAAa;AACjB;AACA;IACI,iBAAiB;AACrB;;AAEA;IACI,eAAe;IACf,SAAS;IACT,WAAW;AACf;;AAEA;IACI,gBAAgB;AACpB;AACA;IACI,WAAW;AACf;;AAEA;;;;;;;;IAQI,cAAc;IACd,cAAc;AAClB;;AAEA;;IAEI,eAAe;IACf,eAAe;AACnB;;AAEA;;IAEI,eAAe;IACf,eAAe;AACnB;;AAEA;;IAEI,cAAc;IACd,cAAc;AAClB;AACA;;IAEI,oBAAoB;AACxB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;AACA;;;;;;;;IAQI,cAAc;IACd,cAAc;AAClB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;;;AAGA;;IAEI,eAAe;IACf,eAAe;IACf,mBAAmB;AACvB;;AAEA;IACI,YAAY;AAChB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/assessment.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","\nh2 {\n color: var(--colour-primary);\n width: 100%;\n}\n\n#formFilters {\n display: none;\n}\n.company-name {\n font-size: 2.5rem;\n}\n\n.container.save.button-cancel {\n position: fixed;\n top: 10vh;\n right: 10vh;\n}\n\ntable.table-main tbody {\n max-height: 28vh;\n}\ntable.table-main tbody tr td {\n height: 4vh;\n}\n\ntable.table-main.assessment thead tr th.active,\ntable.table-main.assessment tbody tr td.active,\ntable.table-main.distraction thead tr th.active,\ntable.table-main.distraction tbody tr td.active,\ntable.table-main.assessment_command_modality_link thead tr th.active,\ntable.table-main.assessment_command_modality_link tbody tr td.active,\ntable.table-main.assessment_response thead tr th.active,\ntable.table-main.assessment_response tbody tr td.active {\n max-width: 6vh;\n min-width: 6vh;\n}\n\ntable.table-main.assessment thead tr th,\ntable.table-main.assessment tbody tr td {\n max-width: 15vh;\n min-width: 15vh;\n}\n\ntable.table-main.distraction thead tr th,\ntable.table-main.distraction tbody tr td {\n max-width: 12vh;\n min-width: 12vh;\n}\n\ntable.table-main.assessment_command_modality_link thead tr th,\ntable.table-main.assessment_command_modality_link tbody tr td {\n max-width: 6vh;\n min-width: 6vh;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.ddl-preview div, \ntable.table-main.assessment_command_modality_link tbody tr td.ddl-preview select {\n padding: 0.5vh 0.5vw;\n}\ntable.table-main.assessment_command_modality_link thead tr th.command-category, \ntable.table-main.assessment_command_modality_link tbody tr td.command-category {\n min-width: 12vh;\n max-width: 12vh;\n}\ntable.table-main.assessment_command_modality_link thead tr th.is-in-hearing-range-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-hearing-range-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-in-scent-range-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-scent-range-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-in-sight-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-sight-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-on-lead,\ntable.table-main.assessment_command_modality_link tbody tr td.is-on-lead {\n max-width: 3vh;\n min-width: 3vh;\n}\ntable.table-main.assessment_command_modality_link thead tr th.notes,\ntable.table-main.assessment_command_modality_link tbody tr td.notes {\n max-width: 12vh;\n min-width: 12vh;\n}\n\n\ntable.table-main.assessment_command_modality_link thead tr th.assessment_response,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response {\n max-width: 60vh;\n min-width: 60vh;\n height: fit-content;\n}\n\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response div.ddl-preview div.row {\n border: none;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.response-quality-metric,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.response-quality-metric {\n max-width: 15vh;\n min-width: 15vh;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.obedience-level,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.obedience-level {\n max-width: 15vh;\n min-width: 15vh;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/dog_assessment.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;;AChEA;IACI,4BAA4B;IAC5B,WAAW;AACf;;AAEA;IACI,aAAa;AACjB;AACA;IACI,iBAAiB;AACrB;;AAEA;IACI,eAAe;IACf,QAAQ;IACR,UAAU;IACV,UAAU;AACd;;AAEA;IACI,gBAAgB;AACpB;AACA;IACI,WAAW;AACf;;AAEA;;;;;;;;IAQI,cAAc;IACd,cAAc;AAClB;;AAEA;;IAEI,eAAe;IACf,eAAe;AACnB;;AAEA;;IAEI,eAAe;IACf,eAAe;AACnB;;AAEA;;IAEI,cAAc;IACd,cAAc;AAClB;AACA;;IAEI,oBAAoB;AACxB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;AACA;;;;;;;;IAQI,cAAc;IACd,cAAc;AAClB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;;;AAGA;;IAEI,eAAe;IACf,eAAe;IACf,mBAAmB;AACvB;;AAEA;IACI,YAAY;AAChB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB;AACA;;IAEI,eAAe;IACf,eAAe;AACnB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/dog/assessment.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","\nh2 {\n color: var(--colour-primary);\n width: 100%;\n}\n\n#formFilters {\n display: none;\n}\n.company-name {\n font-size: 2.5rem;\n}\n\n.container.save.button-cancel {\n position: fixed;\n top: 1vh;\n right: 5vh;\n z-index: 2;\n}\n\ntable.table-main tbody {\n max-height: 28vh;\n}\ntable.table-main tbody tr td {\n height: 4vh;\n}\n\ntable.table-main.assessment thead tr th.active,\ntable.table-main.assessment tbody tr td.active,\ntable.table-main.distraction thead tr th.active,\ntable.table-main.distraction tbody tr td.active,\ntable.table-main.assessment_command_modality_link thead tr th.active,\ntable.table-main.assessment_command_modality_link tbody tr td.active,\ntable.table-main.assessment_response thead tr th.active,\ntable.table-main.assessment_response tbody tr td.active {\n max-width: 6vh;\n min-width: 6vh;\n}\n\ntable.table-main.assessment thead tr th,\ntable.table-main.assessment tbody tr td {\n max-width: 15vh;\n min-width: 15vh;\n}\n\ntable.table-main.distraction thead tr th,\ntable.table-main.distraction tbody tr td {\n max-width: 12vh;\n min-width: 12vh;\n}\n\ntable.table-main.assessment_command_modality_link thead tr th,\ntable.table-main.assessment_command_modality_link tbody tr td {\n max-width: 6vh;\n min-width: 6vh;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.ddl-preview div, \ntable.table-main.assessment_command_modality_link tbody tr td.ddl-preview select {\n padding: 0.5vh 0.5vw;\n}\ntable.table-main.assessment_command_modality_link thead tr th.command-category, \ntable.table-main.assessment_command_modality_link tbody tr td.command-category {\n min-width: 12vh;\n max-width: 12vh;\n}\ntable.table-main.assessment_command_modality_link thead tr th.is-in-hearing-range-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-hearing-range-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-in-scent-range-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-scent-range-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-in-sight-of-handler,\ntable.table-main.assessment_command_modality_link tbody tr td.is-in-sight-of-handler,\ntable.table-main.assessment_command_modality_link thead tr th.is-on-lead,\ntable.table-main.assessment_command_modality_link tbody tr td.is-on-lead {\n max-width: 3vh;\n min-width: 3vh;\n}\ntable.table-main.assessment_command_modality_link thead tr th.notes,\ntable.table-main.assessment_command_modality_link tbody tr td.notes {\n max-width: 12vh;\n min-width: 12vh;\n}\n\n\ntable.table-main.assessment_command_modality_link thead tr th.assessment_response,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response {\n max-width: 60vh;\n min-width: 60vh;\n height: fit-content;\n}\n\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response div.ddl-preview div.row {\n border: none;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.response-quality-metric,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.response-quality-metric {\n max-width: 15vh;\n min-width: 15vh;\n}\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response thead tr th.obedience-level,\ntable.table-main.assessment_command_modality_link tbody tr td.assessment_response tbody tr td.obedience-level {\n max-width: 15vh;\n min-width: 15vh;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/static/dist/css/user_company.bundle.css b/static/dist/css/user_company.bundle.css index 80f30f6..93c49d9 100644 --- a/static/dist/css/user_company.bundle.css +++ b/static/dist/css/user_company.bundle.css @@ -70,6 +70,13 @@ display: none; } +.container.save.button-cancel { + position: fixed; + top: 1vh; + right: 5vh; + z-index: 2; +} + .container-input { margin: 0 auto; } diff --git a/static/dist/css/user_company.bundle.css.map b/static/dist/css/user_company.bundle.css.map index b4582b3..a20a1ae 100644 --- a/static/dist/css/user_company.bundle.css.map +++ b/static/dist/css/user_company.bundle.css.map @@ -1 +1 @@ -{"version":3,"file":"css/user_company.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;;;AChEA;IACI,aAAa;AACjB;;AAEA;IACI,cAAc;AAClB;AACA;IACI,gBAAgB;IAChB,gBAAgB;AACpB;;AAEA;IACI,YAAY;AAChB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/user/company.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","\n#formFilters {\n display: none;\n}\n\n.container-input {\n margin: 0 auto;\n}\n.container-input input {\n max-width: 250px;\n padding: 1vh 1vw;\n}\n\n.container-input textarea {\n width: 300px;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"css/user_company.bundle.css","mappings":";;AAEA;IACI,gBAAgB;IAChB,oBAAoB;IACpB,cAAc;AAClB;;;AAGA,iBAAiB;AACjB;IACI,sBAAsB;AAC1B;;AAEA,eAAe;AACf;IACI,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,qBAAqB;IACrB,2BAA2B;IAC3B,aAAa;IACb,sBAAsB;IACtB,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,yBAAyB;AAC7B;;;AAGA,WAAW;AACX;IACI,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;IACT,eAAe;IACf,gBAAgB;IAChB,sCAAsC;IACtC,kBAAkB;IAClB,SAAS;IACT,WAAW;AACf;;AAEA;IACI;QACI,eAAe;QACf,mBAAmB;QACnB,eAAe;QACf,WAAW;QACX,eAAe;IACnB;IACA;QACI,eAAe;IACnB;IACA;QACI,cAAc;IAClB;AACJ;;AAEA;IACI,UAAU;IACV,SAAS;AACb,C;;;AChEA;IACI,aAAa;AACjB;;AAEA;IACI,eAAe;IACf,QAAQ;IACR,UAAU;IACV,UAAU;AACd;;AAEA;IACI,cAAc;AAClB;AACA;IACI,gBAAgB;IAChB,gBAAgB;AACpB;;AAEA;IACI,YAAY;AAChB,C","sources":["webpack://app/./static/css/sections/dog.css","webpack://app/./static/css/pages/user/company.css"],"sourcesContent":["\n\n.container-input > input {\n padding: 0vh 1vh;\n border-radius: 0.5vh;\n max-width: 7vh;\n}\n\n\n/* Right column */\n.rightcolumn {\n min-width: fit-content;\n}\n\n/* Main Table */\n#pageBody {\n max-height: 88vh;\n padding: 0 5vw;\n margin: 0;\n border: 0;\n align-content: center;\n justify-content: flex-start;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n overflow-y: auto;\n overflow-x: hidden;\n position: absolute;\n width: 90vw;\n color: var(--colour-text);\n}\n\n\n/* Footer */\n.footer {\n padding: 1vh 1vw;\n text-align: center;\n margin: 0;\n max-height: 5vh;\n overflow-y: auto;\n background-color: var(--colour-accent);\n position: absolute;\n bottom: 0;\n width: 98vw;\n}\n\n@media screen and (max-width: 400px) {\n .footer {\n max-height: 8vh;\n padding: 0.75vh 2vw;\n font-size: 10px; \n width: 96vw;\n max-width: 96vw;\n }\n .footer > h4 {\n font-size: 10px;\n }\n .footer > h5 {\n font-size: 9px;\n }\n}\n\n.footer > h4, h5 {\n padding: 0;\n margin: 0;\n}","\n#formFilters {\n display: none;\n}\n\n.container.save.button-cancel {\n position: fixed;\n top: 1vh;\n right: 5vh;\n z-index: 2;\n}\n\n.container-input {\n margin: 0 auto;\n}\n.container-input input {\n max-width: 250px;\n padding: 1vh 1vw;\n}\n\n.container-input textarea {\n width: 300px;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/templates/components/dog/_preview_DDL_image.html b/templates/components/dog/_preview_DDL_image.html index d0f5df0..296329d 100644 --- a/templates/components/dog/_preview_DDL_image.html +++ b/templates/components/dog/_preview_DDL_image.html @@ -2,6 +2,15 @@ {% with _attribute_text = '' if (attribute_text is not defined or attribute_text is none) else attribute_text %} {% set value_previous = '0' if (is_blank_row or (image_preview is not defined) or (image_preview is none) or (image_preview.id_image is none)) else image_preview.id_image %} {% set text_previous = '' if (is_blank_row or (image_preview is not defined) or (image_preview is none)) else model.format_null_string_as_blank(image_preview.name) %} + {% set path_previous = '' if (is_blank_row or (image_preview is not defined) or (image_preview is none)) else model.format_null_string_as_blank(image_preview.path) %} -
{{ text_previous }}
+
+ {{ text_previous }} + {# + Button icon + #} +
{% endwith %} \ No newline at end of file diff --git a/templates/layouts/_shared_scripts.html b/templates/layouts/_shared_scripts.html index 2ce6623..721c724 100644 --- a/templates/layouts/_shared_scripts.html +++ b/templates/layouts/_shared_scripts.html @@ -62,6 +62,7 @@ var flagForm = "{{ model.FLAG_FORM }}"; var flagFormFilters = "{{ model.FLAG_FORM_FILTERS }}"; var flagIcon = "{{ model.FLAG_ICON }}"; + var flagImage = "{{ model.FLAG_IMAGE }}"; var flagImageLogo = "{{ model.FLAG_IMAGE_LOGO }}"; var flagInitialised = "{{ model.FLAG_INITIALISED }}"; var flagIsChecked = "{{ model.FLAG_IS_CHECKED }}"; diff --git a/templates/pages/dog/_button_icons.html b/templates/pages/dog/_button_icons.html index 410eae2..60eea74 100644 --- a/templates/pages/dog/_button_icons.html +++ b/templates/pages/dog/_button_icons.html @@ -67,6 +67,7 @@ {% endblock %} \ No newline at end of file diff --git a/templates/pages/dog/_home.html b/templates/pages/dog/_home.html index 7e29605..71e2774 100644 --- a/templates/pages/dog/_home.html +++ b/templates/pages/dog/_home.html @@ -30,9 +30,11 @@ Locations + {#
Button Icons
+ #}
Command Button Links
@@ -40,9 +42,11 @@
Assessments
+ {#
Overdue Bills
+ #}