Cases List Cache Builder display

This commit is contained in:
girish
2011-03-12 12:54:31 +00:00
parent 8b9912eb65
commit 81ff933f7e
6 changed files with 438 additions and 32 deletions

View File

@@ -872,7 +872,13 @@ class AppCacheView extends BaseAppCacheView {
function getMySQLVersion() {
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$sql = "select version() ";
$connection = $con->getDSN();
$sqlType = $connection['phptype'];
if($sqlType == 'mssql')
$sql = "SELECT SERVERPROPERTY('productversion')"; // Added by Ankit for mssql.}
else
$sql = "select version()";
$rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);
$rs1->next();
$row = $rs1->getRow();
@@ -888,20 +894,26 @@ class AppCacheView extends BaseAppCacheView {
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$sql = "select CURRENT_USER(), USER() ";
$connection = $con->getDSN();
$sqlType = $connection['phptype'];
if($sqlType == 'mssql')
$sql = "SELECT SYSTEM_USER, USER"; // Added by Ankit for mssql
else
$sql = "select CURRENT_USER(), USER() ";
$rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);
$rs1->next();
$row = $rs1->getRow();
$mysqlUser = str_replace('@', "'@'", $row[0] );
$super = false;
$sql = "SELECT * FROM `information_schema`.`USER_PRIVILEGES` where GRANTEE = \"'$mysqlUser'\" and PRIVILEGE_TYPE = 'SUPER' ";
$rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
$rs1->next();
$row = $rs1->getRow();
if ( is_array($row = $rs1->getRow() ) ) {
// $super = false;
// $sql = "SELECT * FROM `information_schema`.`USER_PRIVILEGES` where GRANTEE = \"'$mysqlUser'\" and PRIVILEGE_TYPE = 'SUPER' ";
// $rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
// $rs1->next();
// $row = $rs1->getRow();
// if ( is_array($row = $rs1->getRow() ) ) {
$super = true;
}
//}
return array( 'user' => $mysqlUser, 'super' => $super );
}
@@ -932,9 +944,16 @@ class AppCacheView extends BaseAppCacheView {
function checkAppCacheView () {
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$connection = $con->getDSN();
$sqlType = $connection['phptype'];
//check if table APP_CACHE_VIEW exists
$sql="SHOW TABLES";
if($sqlType == 'mssql'){
//$sql = "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';"; //Added by Ankit for mssql
$sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES";
}
else
$sql="SHOW TABLES";
$rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);
$rs1->next();
$found = false;
@@ -945,6 +964,47 @@ class AppCacheView extends BaseAppCacheView {
$rs1->next();
}
$needCreateTable = $found == false;
//if exists the APP_CACHE_VIEW Table, we need to check if it has the correct number of fields, if not recreate the table
$tableRecreated = false;
if ( $found ) {
if($sqlType == 'mssql')
$sql = "SELECT * FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'APP_CACHE_VIEW'"; //Added by Ankit for mssql
else
$sql="SHOW FIELDS FROM APP_CACHE_VIEW";
$rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);
$rs1->next();
$fields = array();
while ( is_array($row = $rs1->getRow() ) ) {
$fields[] = $row[0];
$rs1->next();
}
if ( count($fields) != 31 ) {
$needCreateTable = true;
}
}
if ( $needCreateTable ) {
if($sqlType == 'mssql'){
$stmt->executeQuery( "IF EXISTS(SELECT 1 FROM sys.objects WHERE OBJECT_ID = OBJECT_ID(N'APP_CACHE_VIEW') AND type = (N'U'))
DROP TABLE APP_CACHE_VIEW");//Added by Ankit for msssql
$filenameSql = $this->pathToAppCacheFiles . 'app_cache_view_mssql.sql';
}
else{
$stmt->executeQuery( "DROP TABLE IF EXISTS `APP_CACHE_VIEW`; ");
$filenameSql = $this->pathToAppCacheFiles . 'app_cache_view.sql';}
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file app_cache_view_mssql.sql doesn't exists ") );
$sql = file_get_contents ( $filenameSql );
$stmt->executeQuery($sql);
$tableRecreated = true;
$found = true;
}
//now count how many records there are ..
$count = '-';
if ( $found ) {
@@ -976,7 +1036,7 @@ class AppCacheView extends BaseAppCacheView {
$stmt->executeQuery($val);
}
$sql = "select count(*) as CANT from APP_CACHE_VIEW ";
$sql = "select count(*) as CANT from APP_CACHE_VIEW";
$rs1 = $stmt->executeQuery($sql, ResultSet::FETCHMODE_ASSOC);
$rs1->next();
$row1 = $rs1->getRow();
@@ -994,14 +1054,30 @@ class AppCacheView extends BaseAppCacheView {
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$rs = $stmt->executeQuery('Show TRIGGERS', ResultSet::FETCHMODE_ASSOC);
$connection = $con->getDSN();
$sqlType = $connection['phptype'];
//check if table APP_CACHE_VIEW exists
if($sqlType == 'mssql'){
$rs = $stmt->executeQuery("select tablename = object_name(parent_obj),* from sysobjects
where type = 'tr'", ResultSet::FETCHMODE_ASSOC);}
else{
$rs = $stmt->executeQuery('Show TRIGGERS', ResultSet::FETCHMODE_ASSOC);
}
$rs->next();
$row = $rs->getRow();
$found = false;
while ( is_array ( $row ) ) {
if ( strtolower($row['Trigger'] == 'APP_DELEGATION_INSERT') && strtoupper($row['Table']) == 'APP_DELEGATION' ) {
$found = true;
if($sqlType=='mssql')
{
if ( strtolower($row['name'] == 'APP_DELEGATION_INSERT') && strtoupper($row['tablename']) == 'APP_DELEGATION' ) {
$found = true;
}
}
else{
if ( strtolower($row['Trigger'] == 'APP_DELEGATION_INSERT') && strtoupper($row['Table']) == 'APP_DELEGATION' ) {
$found = true;
}
}
$rs->next();
$row = $rs->getRow();
}
@@ -1010,9 +1086,23 @@ class AppCacheView extends BaseAppCacheView {
$found = false;
}
if ( ! $found ) {
$filenameSql = $this->pathToAppCacheFiles . 'triggerAppDelegationInsert.sql';
if($sqlType == 'mssql')
{
$filenameSql = $this->pathToAppCacheFiles . 'triggerAppDelegationInsert_mssql.sql';
}
else{
$filenameSql = $this->pathToAppCacheFiles . 'triggerAppDelegationInsert.sql';
}
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file triggerAppDelegationInsert.sql doesn't exists ") );
{
if($sqlType == 'mssql')
{
throw ( new Exception ( "file triggerAppDelegationInsert_mssql.sql doesn't exists ") );
}
else{
throw ( new Exception ( "file triggerAppDelegationInsert.sql doesn't exists ") );
}
}
$sql = file_get_contents ( $filenameSql );
$sql = str_replace('{lang}', $lang, $sql);
$stmt->executeQuery($sql);
@@ -1030,14 +1120,30 @@ class AppCacheView extends BaseAppCacheView {
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC);
$connection = $con->getDSN();
$sqlType = $connection['phptype'];
//check if table APP_CACHE_VIEW exists
if($sqlType == 'mssql'){
$rs = $stmt->executeQuery("select tablename = object_name(parent_obj),* from sysobjects
where type = 'tr'", ResultSet::FETCHMODE_ASSOC);}
else{
$rs = $stmt->executeQuery('Show TRIGGERS', ResultSet::FETCHMODE_ASSOC);
}
$rs->next();
$row = $rs->getRow();
$found = false;
while ( is_array ( $row ) ) {
if ( strtolower($row['Trigger'] == 'APP_DELEGATION_UPDATE') && strtoupper($row['Table']) == 'APP_DELEGATION' ) {
$found = true;
if($sqlType=='mssql')
{
if ( strtolower($row['name'] == 'APP_DELEGATION_UPDATE') && strtoupper($row['tablename']) == 'APP_DELEGATION' ) {
$found = true;
}
}
else{
if ( strtolower($row['Trigger'] == 'APP_DELEGATION_UPDATE') && strtoupper($row['Table']) == 'APP_DELEGATION' ) {
$found = true;
}
}
$rs->next();
$row = $rs->getRow();
}
@@ -1048,9 +1154,21 @@ class AppCacheView extends BaseAppCacheView {
}
if ( ! $found ) {
$filenameSql = $this->pathToAppCacheFiles . '/triggerAppDelegationUpdate.sql';
if($sqlType == 'mssql')
{
$filenameSql = $this->pathToAppCacheFiles . '/triggerAppDelegationUpdate_mssql.sql';
}
else{
$filenameSql = $this->pathToAppCacheFiles . '/triggerAppDelegationUpdate.sql';
}
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file triggerAppDelegationUpdate.sql doesn't exists ") );
if($sqlType == 'mssql')
{
throw ( new Exception ( "file triggerAppDelegationUpdate_mssql.sql doesn't exists ") );
}
else{
throw ( new Exception ( "file triggerAppDelegationUpdate.sql doesn't exists ") );
}
$sql = file_get_contents ( $filenameSql );
$sql = str_replace('{lang}', $lang, $sql);
$stmt->executeQuery($sql);
@@ -1067,14 +1185,31 @@ class AppCacheView extends BaseAppCacheView {
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC);
$connection = $con->getDSN();
$sqlType = $connection['phptype'];
//check if table APP_CACHE_VIEW exists
if($sqlType == 'mssql'){
$rs = $stmt->executeQuery("select tablename = object_name(parent_obj),* from sysobjects
where type = 'tr'", ResultSet::FETCHMODE_ASSOC);}
else{
$rs = $stmt->executeQuery('Show TRIGGERS', ResultSet::FETCHMODE_ASSOC);
}
$rs->next();
$row = $rs->getRow();
$found = false;
while ( is_array ( $row ) ) {
if ( strtolower($row['Trigger'] == 'APPLICATION_UPDATE') && strtoupper($row['Table']) == 'APPLICATION' ) {
$found = true;
if($sqlType=='mssql')
{
if ( strtolower($row['name'] == 'APPLICATION_UPDATE') && strtoupper($row['tablename']) == 'APPLICATION' ) {
$found = true;
}
}
else{
if ( strtolower($row['Trigger'] == 'APPLICATION_UPDATE') && strtoupper($row['Table']) == 'APPLICATION' ) {
$found = true;
}
}
$rs->next();
$row = $rs->getRow();
}
@@ -1084,9 +1219,16 @@ class AppCacheView extends BaseAppCacheView {
}
if ( ! $found ) {
$filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationUpdate.sql';
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file triggerAppDelegationUpdate.sql doesn't exists ") );
if($sqlType=='mssql'){
$filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationUpdate_mssql.sql';
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file triggerAppDelegationUpdate_mssql.sql doesn't exists ") );
}
else{
$filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationUpdate.sql';
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file triggerAppDelegationUpdate.sql doesn't exists ") );
}
$sql = file_get_contents ( $filenameSql );
$sql = str_replace('{lang}', $lang, $sql);
$stmt->executeQuery($sql);
@@ -1103,14 +1245,31 @@ class AppCacheView extends BaseAppCacheView {
$con = Propel::getConnection("workflow");
$stmt = $con->createStatement();
$rs = $stmt->executeQuery("Show TRIGGERS", ResultSet::FETCHMODE_ASSOC);
$connection = $con->getDSN();
$sqlType = $connection['phptype'];
//check if table APP_CACHE_VIEW exists
if($sqlType == 'mssql'){
$rs = $stmt->executeQuery("select tablename = object_name(parent_obj),* from sysobjects
where type = 'tr'", ResultSet::FETCHMODE_ASSOC);}
else{
$rs = $stmt->executeQuery('Show TRIGGERS', ResultSet::FETCHMODE_ASSOC);
}
$rs->next();
$row = $rs->getRow();
$found = false;
while ( is_array ( $row ) ) {
if ( strtolower($row['Trigger'] == 'APPLICATION_DELETE') && strtoupper($row['Table']) == 'APPLICATION' ) {
$found = true;
if($sqlType=='mssql')
{
if ( strtolower($row['name'] == 'APPLICATION_DELETE') && strtoupper($row['tablename']) == 'APPLICATION' ) {
$found = true;
}
}
else{
if ( strtolower($row['Trigger'] == 'APPLICATION_DELETE') && strtoupper($row['Table']) == 'APPLICATION' ) {
$found = true;
}
}
$rs->next();
$row = $rs->getRow();
}
@@ -1121,9 +1280,16 @@ class AppCacheView extends BaseAppCacheView {
}
if ( ! $found ) {
if($sqlType=='mssql'){
$filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationDelete_mssql.sql';
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file triggerApplicationDelete_mssql.sql doesn't exists ") );
}
else{
$filenameSql = $this->pathToAppCacheFiles . '/triggerApplicationDelete.sql';
if ( !file_exists ( $filenameSql ) )
throw ( new Exception ( "file triggerAppDelegationDelete.sql doesn't exists ") );
}
$sql = file_get_contents ( $filenameSql );
$sql = str_replace('{lang}', $lang, $sql);
$stmt->executeQuery($sql);
@@ -1202,4 +1368,4 @@ class AppCacheView extends BaseAppCacheView {
return $aRows;
}
} // AppCacheView
}// AppCacheView

View File

@@ -0,0 +1,37 @@
CREATE TABLE APP_CACHE_VIEW
(
APP_UID VARCHAR(32) default '' NOT NULL,
DEL_INDEX INTEGER default 0 NOT NULL,
APP_NUMBER INTEGER default 0 NOT NULL,
APP_STATUS VARCHAR(32) default '' NOT NULL,
USR_UID VARCHAR(32) default '' NOT NULL,
PREVIOUS_USR_UID VARCHAR(32) default '' NOT NULL,
TAS_UID VARCHAR(32) default '' NOT NULL,
PRO_UID VARCHAR(32) default '' NOT NULL,
DEL_DELEGATE_DATE VARCHAR(10) default '' NOT NULL,
DEL_INIT_DATE DATETIME,
DEL_TASK_DUE_DATE DATETIME,
DEL_FINISH_DATE DATETIME,
DEL_THREAD_STATUS VARCHAR(32) default 'OPEN' NOT NULL,
APP_THREAD_STATUS VARCHAR(32) default 'OPEN' NOT NULL,
APP_TITLE VARCHAR(255) default '' NOT NULL,
APP_PRO_TITLE VARCHAR(255) default '' NOT NULL,
APP_TAS_TITLE VARCHAR(255) default '' NOT NULL,
APP_CURRENT_USER VARCHAR(128) default '' NOT NULL,
APP_DEL_PREVIOUS_USER VARCHAR(128) default '' NOT NULL,
DEL_PRIORITY VARCHAR(32) default '3' NOT NULL,
DEL_DURATION BIGINT default 0,
DEL_QUEUE_DURATION BIGINT default 0,
DEL_DELAY_DURATION BIGINT default 0,
DEL_STARTED TINYINT default 0,
DEL_FINISHED TINYINT default 0,
DEL_DELAYED TINYINT default 0,
APP_CREATE_DATE DATETIME NOT NULL,
APP_FINISH_DATE DATETIME NULL,
APP_UPDATE_DATE DATETIME NOT NULL,
APP_OVERDUE_PERCENTAGE BIGINT NOT NULL default 0,
APP_LAST_USER VARCHAR(128) default '' NOT NULL,
PRIMARY KEY (APP_UID,DEL_INDEX),
UNIQUE (APP_NUMBER),
UNIQUE (USR_UID, APP_STATUS)
)

View File

@@ -0,0 +1,107 @@
CREATE TRIGGER APP_DELEGATION_INSERT
ON APP_DELEGATION
INSTEAD OF INSERT
AS
BEGIN
DECLARE @DEFAULT_LANG VARCHAR(2);
DECLARE @APP_NUMBER INT;
DECLARE @APP_STATUS VARCHAR(32);
DECLARE @APP_CREATE_DATE DATETIME;
DECLARE @APP_TITLE VARCHAR(255);
DECLARE @APP_PRO_TITLE VARCHAR(255);
DECLARE @APP_TAS_TITLE VARCHAR(255);
DECLARE @APP_CURRENT_USER VARCHAR(255);
DECLARE @PREVIOUS_USR_UID VARCHAR(32);
DECLARE @APP_DEL_PREVIOUS_USER VARCHAR(255);
DECLARE @APP_THREAD_STATUS VARCHAR(32);
SET @DEFAULT_LANG = '{lang}';
SELECT TOP 1 APPLICATION.APP_NUMBER into APP_NUMBER FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 APPLICATION.APP_STATUS into APP_STATUS FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 APPLICATION.APP_CREATE_DATE into APP_CREATE_DATE FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE 'NEW.APP_UID'=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = '{lang}';
IF ( @APP_TITLE IS NULL )
SET @APP_TITLE = '';
SELECT TOP 1 CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE 'NEW.PRO_UID'=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = '{lang}';
SELECT TOP 1 CONTENT.CON_VALUE into APP_TAS_TITLE FROM CONTENT WHERE 'NEW.TAS_UID'=CON_ID AND CON_CATEGORY='TAS_TITLE' and CON_LANG = '{lang}';
SELECT TOP 1 (USERS.USR_LASTNAME+''+ USERS.USR_FIRSTNAME) as USR_NAME INTO APP_CURRENT_USER FROM USERS WHERE USR_UID = 'NEW.USR_UID';
IF ( @APP_CURRENT_USER IS NULL )
SET @APP_CURRENT_USER = '';
IF ( 'NEW.DEL_PREVIOUS' > 0 )
SELECT TOP 1 USR_UID INTO PREVIOUS_USR_UID FROM APP_DELEGATION WHERE APP_UID = 'NEW.APP_UID' AND DEL_INDEX = 'NEW.DEL_PREVIOUS';
SELECT TOP 1 (USERS.USR_LASTNAME+''+USERS.USR_FIRSTNAME) as USR_NAME INTO APP_DEL_PREVIOUS_USER FROM USERS WHERE USR_UID = @PREVIOUS_USR_UID;
IF ( @APP_DEL_PREVIOUS_USER IS NULL )
SET @APP_DEL_PREVIOUS_USER = '';
ELSE
SET @APP_DEL_PREVIOUS_USER = '';
SET @PREVIOUS_USR_UID = '';
SELECT TOP 1 APP_THREAD_STATUS INTO APP_THREAD_STATUS FROM APP_THREAD WHERE APP_UID = 'NEW.APP_UID' AND DEL_INDEX = 'NEW.DEL_PREVIOUS';
IF ( @APP_THREAD_STATUS IS NULL )
SET @APP_THREAD_STATUS = 'OPEN';
INSERT INTO APP_CACHE_VIEW (
APP_UID,
DEL_INDEX,
APP_NUMBER,
APP_STATUS,
USR_UID,
PREVIOUS_USR_UID,
TAS_UID,
PRO_UID,
DEL_DELEGATE_DATE,
DEL_INIT_DATE,
DEL_TASK_DUE_DATE,
DEL_FINISH_DATE,
DEL_THREAD_STATUS,
APP_THREAD_STATUS,
APP_TITLE,
APP_PRO_TITLE,
APP_TAS_TITLE,
APP_CURRENT_USER,
APP_DEL_PREVIOUS_USER,
DEL_PRIORITY,
DEL_DURATION,
DEL_QUEUE_DURATION,
DEL_DELAY_DURATION,
DEL_STARTED,
DEL_FINISHED,
DEL_DELAYED,
APP_CREATE_DATE,
APP_FINISH_DATE,
APP_UPDATE_DATE,
APP_OVERDUE_PERCENTAGE
)
VALUES (
'NEW.APP_UID',
'NEW.DEL_INDEX',
@APP_NUMBER,
@APP_STATUS,
'NEW.USR_UID',
@PREVIOUS_USR_UID,
'NEW.TAS_UID',
'NEW.PRO_UID',
substring('NEW.DEL_DELEGATE_DATE',1,10),
substring('NEW.DEL_INIT_DATE',1,10),
substring('NEW.DEL_TASK_DUE_DATE',1,10),
substring('NEW.DEL_FINISH_DATE',1,10),
'NEW.DEL_THREAD_STATUS',
@APP_THREAD_STATUS,
@APP_TITLE,
@APP_PRO_TITLE,
@APP_TAS_TITLE,
@APP_CURRENT_USER,
@APP_DEL_PREVIOUS_USER,
'NEW.DEL_PRIORITY',
'NEW.DEL_DURATION',
'NEW.DEL_QUEUE_DURATION',
'NEW.DEL_DELAY_DURATION',
'NEW.DEL_STARTED',
'NEW.DEL_FINISHED',
'NEW.DEL_DELAYED',
@APP_CREATE_DATE,
NULL,
GETDATE(),
'NEW.APP_OVERDUE_PERCENTAGE'
);
END

View File

@@ -0,0 +1,77 @@
CREATE TRIGGER APP_DELEGATION_UPDATE
ON APP_DELEGATION
INSTEAD OF UPDATE
AS
BEGIN
DECLARE @DEFAULT_LANG VARCHAR(2);
DECLARE @APP_NUMBER INT;
DECLARE @APP_STATUS VARCHAR(32);
DECLARE @APP_CREATE_DATE DATETIME;
DECLARE @APP_TITLE VARCHAR(255);
DECLARE @APP_PRO_TITLE VARCHAR(255);
DECLARE @APP_TAS_TITLE VARCHAR(255);
DECLARE @APP_CURRENT_USER VARCHAR(255);
DECLARE @PREVIOUS_USR_UID VARCHAR(32);
DECLARE @APP_DEL_PREVIOUS_USER VARCHAR(255);
DECLARE @APP_THREAD_STATUS VARCHAR(32);
SET @DEFAULT_LANG = '{lang}';
SELECT TOP 1 APPLICATION.APP_NUMBER into APP_NUMBER FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 APPLICATION.APP_STATUS into APP_STATUS FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 APPLICATION.APP_CREATE_DATE into APP_CREATE_DATE FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
SELECT TOP 1 CONTENT.CON_VALUE into APP_TITLE FROM CONTENT WHERE 'NEW.APP_UID'=CON_ID AND CON_CATEGORY='APP_TITLE' and CON_LANG = '{lang}';
IF ( @APP_TITLE IS NULL )
SET @APP_TITLE = '';
SELECT TOP 1 CONTENT.CON_VALUE into APP_PRO_TITLE FROM CONTENT WHERE 'NEW.PRO_UID'=CON_ID AND CON_CATEGORY='PRO_TITLE' and CON_LANG = '{lang}';
SELECT TOP 1 CONTENT.CON_VALUE into APP_TAS_TITLE FROM CONTENT WHERE 'NEW.TAS_UID'=CON_ID AND CON_CATEGORY='TAS_TITLE' and CON_LANG = '{lang}';
SELECT TOP 1 (USERS.USR_LASTNAME + ' ' + USERS.USR_FIRSTNAME) as USR_NAME INTO APP_CURRENT_USER FROM USERS WHERE USR_UID = 'NEW.USR_UID';
IF ( @APP_CURRENT_USER IS NULL )
SET @APP_CURRENT_USER = '';
IF ( 'NEW.DEL_PREVIOUS' > 0 )
SELECT TOP 1 USR_UID INTO PREVIOUS_USR_UID FROM APP_DELEGATION WHERE APP_UID = 'NEW.APP_UID' AND DEL_INDEX = 'NEW.DEL_PREVIOUS';
SELECT TOP 1(USERS.USR_LASTNAME + ' ' + USERS.USR_FIRSTNAME) as USR_NAME INTO APP_DEL_PREVIOUS_USER FROM USERS WHERE USR_UID = @PREVIOUS_USR_UID;
IF ( @APP_DEL_PREVIOUS_USER IS NULL )
SET @APP_DEL_PREVIOUS_USER = '';
ELSE
SET @APP_DEL_PREVIOUS_USER = '';
SET @PREVIOUS_USR_UID = '';
SELECT TOP 1 APP_THREAD_STATUS INTO APP_THREAD_STATUS FROM APP_THREAD WHERE APP_UID = 'NEW.APP_UID' AND DEL_INDEX = 'NEW.DEL_PREVIOUS';
IF ( @APP_THREAD_STATUS IS NULL )
SET @APP_THREAD_STATUS = 'OPEN';
UPDATE APP_CACHE_VIEW
SET
APP_NUMBER = @APP_NUMBER,
APP_STATUS = @APP_STATUS,
USR_UID = 'NEW.USR_UID',
PREVIOUS_USR_UID = @PREVIOUS_USR_UID,
TAS_UID = 'NEW.TAS_UID',
PRO_UID = 'NEW.PRO_UID',
DEL_DELEGATE_DATE = substring('NEW.DEL_DELEGATE_DATE',1,10),
DEL_INIT_DATE = substring('NEW.DEL_INIT_DATE',1,10),
DEL_TASK_DUE_DATE = substring('NEW.DEL_TASK_DUE_DATE',1,10),
DEL_FINISH_DATE = substring('NEW.DEL_FINISH_DATE',1,10),
DEL_THREAD_STATUS = 'NEW.DEL_THREAD_STATUS',
APP_THREAD_STATUS = @APP_THREAD_STATUS,
APP_TITLE = @APP_TITLE,
APP_PRO_TITLE = @APP_PRO_TITLE,
APP_TAS_TITLE = @APP_TAS_TITLE,
APP_CURRENT_USER = @APP_CURRENT_USER,
APP_DEL_PREVIOUS_USER = @APP_DEL_PREVIOUS_USER,
DEL_PRIORITY = 'NEW.DEL_PRIORITY',
DEL_DURATION = 'NEW.DEL_DURATION',
DEL_QUEUE_DURATION = 'NEW.DEL_QUEUE_DURATION',
DEL_DELAY_DURATION = 'NEW.DEL_DELAY_DURATION',
DEL_STARTED = 'NEW.DEL_STARTED',
DEL_FINISHED = 'NEW.DEL_FINISHED',
DEL_DELAYED = 'NEW.DEL_DELAYED',
APP_FINISH_DATE = NULL,
APP_UPDATE_DATE = GETDATE(),
APP_OVERDUE_PERCENTAGE = 'NEW.APP_OVERDUE_PERCENTAGE'
WHERE
APP_UID = 'NEW.APP_UID'
AND DEL_INDEX = 'NEW.DEL_INDEX';
END

View File

@@ -0,0 +1,7 @@
CREATE TRIGGER APPLICATION_DELETE
ON APPLICATION
INSTEAD OF DELETE
AS
BEGIN
DELETE FROM APP_CACHE_VIEW WHERE APP_UID = 'OLD.APP_UID';
END

View File

@@ -0,0 +1,12 @@
CREATE TRIGGER APPLICATION_UPDATE
ON APPLICATION
INSTEAD OF UPDATE
AS
BEGIN
DECLARE @APP_STATUS VARCHAR(32);
SELECT TOP 1 APPLICATION.APP_STATUS into APP_STATUS FROM APPLICATION WHERE APP_UID = 'NEW.APP_UID';
IF('OLD.APP_STATUS'<>'NEW.APP_STATUS')
SET @APP_STATUS = 'NEW.APP_STATUS';
UPDATE APP_CACHE_VIEW SET APP_STATUS = @APP_STATUS WHERE APP_UID = 'NEW.APP_UID';
END