Просмотр исходного кода

FixCrmProcesInitIdx add triggers to send msg to Msgs system

Piotr Labudda 10 лет назад
Родитель
Сommit
6fa7a42afc
1 измененных файлов с 171 добавлено и 0 удалено
  1. 171 0
      SE/se-lib/Route/FixCrmProcesInitIdx.php

+ 171 - 0
SE/se-lib/Route/FixCrmProcesInitIdx.php

@@ -511,10 +511,156 @@ BEGIN
 
 		replace into `CRM_CONFIG` (`conf_key`, `conf_val`) values (@conf_last_exec_lock_key, ''), (@conf_last_exec_end_key, NOW());
 
+		-- clear msg 'Update perms' from Msgs system
+		update `CRM_UI_MSGS`
+			set `A_STATUS`='OFF_HARD'
+				, `actionExecutedTime`=NOW()
+				, `A_RECORD_UPDATE_DATE`=NOW()
+				, `A_RECORD_UPDATE_AUTHOR`='update_proces_init_idx_rec'
+			where `A_STATUS`='WAITING'
+				and `app_className`='FixCrmProcesInitIdx'
+				and `msg`='Update perms'
+				and `uiTargetType`='default_db_table'
+				and `uiTargetName`='CRM_PROCES';
+
 	END ; END IF ;
 END ;
 
 SQL;
+		$sqlList['RemoveTrigger_AfterInsertProces'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_PROCES_AFTER_INSERT`";
+		$sqlList['CreateTrigger_AfterInsertProces'] = "
+			CREATE TRIGGER `FixCrmProcesInitIdx_CRM_PROCES_AFTER_INSERT` AFTER INSERT ON `CRM_PROCES`
+				FOR EACH ROW BEGIN
+					-- only when PARENT_ID changes and PARENT_ID exists in `CRM_PROCES_idx`
+					IF NEW.`PARENT_ID` IS NOT NULL AND NEW.`PARENT_ID`>0 AND (select count(*) from `CRM_PROCES_idx` where `ID`=NEW.`PARENT_ID` limit 1)>0 THEN
+						-- throw warning to update perms
+						IF (select count(1) from `CRM_UI_MSGS` where `app_className`='FixCrmProcesInitIdx'
+									and `msg`='Update perms'
+									and `uiTargetType`='default_db_table'
+									and `uiTargetName`='CRM_PROCES'
+									and `A_STATUS`='WAITING'
+								) = 0 THEN
+							INSERT INTO `CRM_UI_MSGS` (`ID`
+									, `app_className`, `msg`, `msgType`
+									, `uiTargetType`, `uiTargetName`
+									, `userTargetType`
+									, `A_RECORD_CREATE_DATE`, `A_RECORD_CREATE_AUTHOR`)
+								VALUES (NULL
+									, 'FixCrmProcesInitIdx', 'Update perms', 'danger'
+									, 'default_db_table', 'CRM_PROCES'
+									, 'everyone'
+									, NOW(), coalesce(NEW.A_RECORD_UPDATE_AUTHOR,'trigger:FixCrmProcesInitIdx_CRM_PROCES_AFTER_INSERT')
+								);
+						END IF;
+						UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1;
+					END IF;
+				END
+		";
+		$sqlList['RemoveTrigger_AfterUpdateProces'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_PROCES_AFTER_UPDATE`";
+		$sqlList['CreateTrigger_AfterUpdateProces'] = "
+			CREATE TRIGGER `FixCrmProcesInitIdx_CRM_PROCES_AFTER_UPDATE` AFTER UPDATE ON `CRM_PROCES`
+				FOR EACH ROW BEGIN
+					-- only when PARENT_ID changes and ID exists in `CRM_PROCES_idx`
+					IF NEW.`PARENT_ID`!=OLD.`PARENT_ID` AND (select count(*) from `CRM_PROCES_idx` where `ID` in(NEW.`ID`, NEW.`PARENT_ID`, OLD.`PARENT_ID`) limit 1)>0 THEN
+						-- throw warning to update perms
+						IF (select count(1) from `CRM_UI_MSGS` where `app_className`='FixCrmProcesInitIdx'
+									and `msg`='Update perms'
+									and `uiTargetType`='default_db_table'
+									and `uiTargetName`='CRM_PROCES'
+									and `A_STATUS`='WAITING'
+								) = 0 THEN
+							INSERT INTO `CRM_UI_MSGS` (`ID`
+									, `app_className`, `msg`, `msgType`
+									, `uiTargetType`, `uiTargetName`
+									, `userTargetType`
+									, `A_RECORD_CREATE_DATE`, `A_RECORD_CREATE_AUTHOR`)
+								VALUES (NULL
+									, 'FixCrmProcesInitIdx', 'Update perms', 'danger'
+									, 'default_db_table', 'CRM_PROCES'
+									, 'everyone'
+									, NOW(), coalesce(NEW.A_RECORD_UPDATE_AUTHOR,'trigger:FixCrmProcesInitIdx_CRM_PROCES_AFTER_UPDATE')
+								);
+						END IF;
+						UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1;
+					END IF;
+				END
+		";
+		$sqlList__TODO__['__TODO__CreateTrigger_AfterUpdateWskaznik'] = "";// if add/remove group to proces (STANOWISKO, ...)
+		$sqlList['RemoveTrigger_AfterInsertWskaznik'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_INSERT`";
+		$sqlList['CreateTrigger_AfterInsertWskaznik'] = "
+			CREATE TRIGGER `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_INSERT` AFTER INSERT ON `CRM_WSKAZNIK`
+				FOR EACH ROW BEGIN
+					-- only when ID_PROCES exists in `CRM_PROCES_idx`
+					-- only when ID_ZASOB is group
+					-- only when ID_PRZYPADEK  has perm 'X'
+					IF NEW.`ID_PROCES`>0
+							AND NEW.`ID_ZASOB`>0
+							AND NEW.`ID_PRZYPADEK`>0
+							AND (select count(*) from `CRM_PROCES_idx` where `ID`=NEW.`ID_PROCES` limit 1)>0
+							AND (select count(*) from `CRM_LISTA_ZASOBOW` z where z.`ID`=NEW.`ID_ZASOB` and z.`TYPE` in('STANOWISKO','DZIAL','PODMIOT') limit 1)>0
+							AND (select count(*) from `CRM_PRZYPADEK` przyp where przyp.`ID`=NEW.`ID_PRZYPADEK` and przyp.`FORM_TREAT` & 8 limit 1)>0
+						THEN
+						-- throw warning to update perms
+						IF (select count(1) from `CRM_UI_MSGS` where `app_className`='FixCrmProcesInitIdx'
+									and `msg`='Update perms'
+									and `uiTargetType`='default_db_table'
+									and `uiTargetName`='CRM_PROCES'
+									and `A_STATUS`='WAITING'
+								) = 0 THEN
+							INSERT INTO `CRM_UI_MSGS` (`ID`
+									, `app_className`, `msg`, `msgType`
+									, `uiTargetType`, `uiTargetName`
+									, `userTargetType`
+									, `A_RECORD_CREATE_DATE`, `A_RECORD_CREATE_AUTHOR`)
+								VALUES (NULL
+									, 'FixCrmProcesInitIdx', 'Update perms', 'danger'
+									, 'default_db_table', 'CRM_PROCES'
+									, 'everyone'
+									, NOW(), coalesce(NEW.A_RECORD_UPDATE_AUTHOR,'trigger:FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_INSERT')
+								);
+						END IF;
+						UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1;
+					END IF;
+				END
+		";
+		$sqlList['RemoveTrigger_AfterUpdateWskaznik'] = "DROP TRIGGER IF EXISTS `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_UPDATE`";
+		$sqlList['CreateTrigger_AfterUpdateWskaznik'] = "
+			CREATE TRIGGER `FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_UPDATE` AFTER UPDATE ON `CRM_WSKAZNIK`
+				FOR EACH ROW BEGIN
+					-- only when old or new ID_PROCES exists in `CRM_PROCES_idx`
+					-- only when old or new ID_ZASOB is group
+					-- only when old or new ID_PRZYPADEK  has perm 'X'
+					IF (NEW.`ID_PROCES`!=OLD.`ID_PROCES` or NEW.`ID_ZASOB`!=OLD.`ID_ZASOB` or NEW.`ID_PRZYPADEK`!=OLD.`ID_PRZYPADEK`)
+							AND (NEW.`ID_PROCES`>0 or OLD.`ID_PROCES`>0)
+							AND (NEW.`ID_ZASOB`>0 or OLD.`ID_ZASOB`>0)
+							AND (NEW.`ID_PRZYPADEK`>0 or OLD.`ID_PRZYPADEK`>0)
+					--		AND (select count(*) from `CRM_PROCES_idx` where `ID` in(NEW.`ID_PROCES`,OLD.`ID_PROCES`) limit 1)>0
+							AND (select count(*) from `CRM_LISTA_ZASOBOW` z where z.`ID` in(NEW.`ID_ZASOB`,OLD.`ID_ZASOB`) and z.`TYPE` in('STANOWISKO','DZIAL','PODMIOT') limit 1)>0
+							AND (select count(*) from `CRM_PRZYPADEK` przyp where przyp.`ID` in(NEW.`ID_PRZYPADEK`,OLD.`ID_PRZYPADEK`) and przyp.`FORM_TREAT` & 8 limit 1)>0
+						THEN
+						-- throw warning to update perms
+						IF (select count(1) from `CRM_UI_MSGS` where `app_className`='FixCrmProcesInitIdx'
+									and `msg`='Update perms'
+									and `uiTargetType`='default_db_table'
+									and `uiTargetName`='CRM_PROCES'
+									and `A_STATUS`='WAITING'
+								) = 0 THEN
+							INSERT INTO `CRM_UI_MSGS` (`ID`
+									, `app_className`, `msg`, `msgType`
+									, `uiTargetType`, `uiTargetName`
+									, `userTargetType`
+									, `A_RECORD_CREATE_DATE`, `A_RECORD_CREATE_AUTHOR`)
+								VALUES (NULL
+									, 'FixCrmProcesInitIdx', 'Update perms', 'danger'
+									, 'default_db_table', 'CRM_PROCES'
+									, 'everyone'
+									, NOW(), coalesce(NEW.A_RECORD_UPDATE_AUTHOR,'trigger:FixCrmProcesInitIdx_CRM_WSKAZNIK_AFTER_UPDATE')
+								);
+						END IF;
+						UPDATE `P5-MSG:Route_FixCrmProcesInitIdx:ERROR: Update perms` SET x=1;
+					END IF;
+				END
+		";
 		$db = DB::getDB();
 		if ($db->has_errors()) {
 			throw new Exception("DB Errors: " . implode("\n<br>", $db->get_errors()));
@@ -536,8 +682,33 @@ SQL;
 				$msg = "Aktualizacja uprawnień została już uruchomiona przez inną osobę";
 				break;
 			}
+			case 'ERROR: Update perms': {
+				$msg = "Wymagana aktualizacja uprawnień";
+				break;
+			}
+		}
+		return $msg;
+	}
+
+	public function parseMessageFromMsgsSystem($msg) {
+		switch ($msg) {
+			case 'Update perms': {
+				$msg = "Wymagana aktualizacja uprawnień";
+				break;
+			}
 		}
 		return $msg;
 	}
 
+	public function runByMessageFromMsgsSystem($msg, &$execNotes) {
+		switch ($msg) {
+			case 'Update perms': {
+				$execNotes .= 'Wymagana aktualizacja uprawnień';
+				$this->_callProcedure();
+				$execNotes .= ' done';
+				break;
+			}
+		}
+	}
+
 }