pour déploiement auto v2 via gitlab
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

302 lines
7.2 KiB

<?php
require_once("../../base/php/startSession.php");
require_once("../../base/php/classDatabase.php");
require_once("../../base/php/Functions.php" );
require_once("../../base/php/WebAppLog.php");
global $database;
global $oids;
$oids = getPOST("oids");
$tableName = getPOST("tableName");
$sqlScript = "";
$database = new Database("iCTI");
switch($tableName) {
case "t_expert_controle" :
$sqlScript = getSqlScript_expert_controle();
break;
}
header("Content-type: text/plain");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: inline; filename=\"expert_controle.sql\"");
echo "$sqlScript";
// recherche des variables de session
function getSqlScript_expert_controle() {
global $database;
global $oids;
// Si un préfixe a été donné, recherche des oid correspondant
if (substr($oids,-1,1) == "%") {
$sqlcmd = "SELECT base.cti_group_concat(oid) AS oids FROM pmsi.t_expert_controle WHERE code LIKE '$oids' AND code <> '';";
$oids = "";
$result = $database->exec($sqlcmd);
if ($result != false) {
$record = $database->nextRecordInto();
if ($record != FALSE) {
$oids = trim($record[0]);
}
}
if ($oids == "") {
$oids = "0";
}
}
$sqlScript = "";
// Entetes des controles
$sqlScript = $sqlScript . "
DROP TABLE IF EXISTS w_dbsetup;";
$sqlScript = $sqlScript . "
CREATE TEMP TABLE w_dbsetup
(
code text,
texte text,
texte_court text,
texte_abrege text,
description text,
is_cti text,
is_datim text,
code_datim text,
date_validite_debut text,
date_validite_fin text,
is_hide text,
is_global text,
gravite_id text
);";
$sqlcmd = "SELECT
'INSERT INTO w_dbsetup VALUES(' ||
array_to_string(ARRAY[
quote_literal(code),
quote_literal(texte),
quote_literal(COALESCE(texte_court,texte)),
quote_literal(COALESCE(texte_abrege,texte_court,texte)),
quote_literal(description),
quote_literal(COALESCE(is_cti,'0')),
quote_literal(COALESCE(is_datim,'0')),
quote_literal(COALESCE(code_datim,0)::text),
quote_literal(COALESCE(date_validite_debut,'20100101'::date)::text),
quote_literal(COALESCE(date_validite_fin,'20991231'::date)::text),
quote_literal(COALESCE(is_hide,'0')),
quote_literal(COALESCE(is_global,'0')),
quote_literal(COALESCE(gravite_id,5)::text)
],',')
|| ');' AS cmd
FROM pmsi.t_expert_controle
WHERE code <> '' AND oid IN ($oids)
ORDER BY code
;";
$result = $database->exec($sqlcmd);
if ($result != false) {
// lignes
$ok = TRUE;
while ($ok == TRUE) {
$ok = FALSE;
$record = $database->nextRecordInto();
if ($record != FALSE) {
$ok = TRUE;
$r++;
$cmd = $record[0];
$sqlScript = $sqlScript . "\r\n\t\t$cmd";
}
}
}
if ($cmd == "") {
return "ERREUR. Cette classe ne peux être choisie (Vérifiez le code)";
}
$sqlScript = $sqlScript . "
UPDATE pmsi.t_expert_controle SET
texte = w_dbsetup.texte,
texte_court = w_dbsetup.texte_court,
texte_abrege = w_dbsetup.texte_abrege,
description = w_dbsetup.description,
code_datim = w_dbsetup.code_datim::numeric,
is_datim = w_dbsetup.is_datim,
is_cti = w_dbsetup.is_cti,
is_global = w_dbsetup.is_global,
date_validite_debut = w_dbsetup.date_validite_debut::date,
date_validite_fin = w_dbsetup.date_validite_fin::date
FROM w_dbsetup
WHERE t_expert_controle.code = w_dbsetup.code
AND (
t_expert_controle.texte IS DISTINCT FROM w_dbsetup.texte OR
t_expert_controle.texte_court IS DISTINCT FROM w_dbsetup.texte_court OR
t_expert_controle.texte_abrege IS DISTINCT FROM w_dbsetup.texte_abrege OR
t_expert_controle.description IS DISTINCT FROM w_dbsetup.description OR
t_expert_controle.code_datim IS DISTINCT FROM w_dbsetup.code_datim::numeric OR
t_expert_controle.is_datim IS DISTINCT FROM w_dbsetup.is_datim OR
t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.is_cti OR
t_expert_controle.is_global IS DISTINCT FROM w_dbsetup.is_global OR
t_expert_controle.date_validite_debut IS DISTINCT FROM w_dbsetup.date_validite_debut::date OR
t_expert_controle.date_validite_fin IS DISTINCT FROM w_dbsetup.date_validite_fin::date
);
INSERT INTO pmsi.t_expert_controle(
code,
texte,
texte_court,
is_datim,
code_datim,
date_validite_debut,
date_validite_fin,
is_global,
texte_abrege,
description,
is_cti,
gravite_id,
is_hide)
SELECT
code,
texte,
texte_court,
is_datim,
code_datim::numeric,
date_validite_debut::date,
date_validite_fin::date,
is_global,
texte_abrege,
description,
is_cti,
5,
'0'
FROM w_dbsetup
WHERE code NOT IN (SELECT code FROM pmsi.t_expert_controle WHERE code IS NOT NULL);
";
// Règles SQL
$sqlScript = $sqlScript . "
DROP TABLE IF EXISTS w_dbsetup;";
$sqlScript = $sqlScript . "
CREATE TEMP TABLE w_dbsetup
(
controle_code text,
numero text,
sqlcmd_where text,
sqlcmd_justificatif text
);";
$sqlcmd = "SELECT
'INSERT INTO w_dbsetup VALUES(' ||
array_to_string(ARRAY[
quote_literal(t_expert_controle.code),
quote_literal(COALESCE(t_expert_controle_rule.numero,1)::text),
quote_literal(COALESCE(t_expert_controle_rule.sqlcmd_where,'')),
quote_literal(COALESCE(t_expert_controle_rule.sqlcmd_justificatif,''))
],',')
|| ');' AS cmd
FROM pmsi.t_expert_controle_rule
JOIN pmsi.t_expert_controle ON controle_id = t_expert_controle.oid
WHERE t_expert_controle.code <> '' AND t_expert_controle.oid IN ($oids)
ORDER BY t_expert_controle.code, t_expert_controle_rule.numero
;";
$result = $database->exec($sqlcmd);
if ($result != false) {
// lignes
$ok = TRUE;
while ($ok == TRUE) {
$ok = FALSE;
$record = $database->nextRecordInto();
if ($record != FALSE) {
$ok = TRUE;
$r++;
$cmd = $record[0];
$sqlScript = $sqlScript . "\r\n\t\t$cmd";
}
}
}
$sqlScript = $sqlScript . "
UPDATE pmsi.t_expert_controle_rule
SET numero = 1
WHERE numero IS NULL or NUMERO NOT IN (1,2,3);
UPDATE pmsi.t_expert_controle_rule SET
sqlcmd_where = w_dbsetup.sqlcmd_where,
sqlcmd_justificatif = w_dbsetup.sqlcmd_justificatif
FROM w_dbsetup
JOIN pmsi.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code
WHERE t_expert_controle_rule.controle_id = t_expert_controle.oid AND
t_expert_controle_rule.numero = w_dbsetup.numero::numeric AND
(
t_expert_controle_rule.sqlcmd_where IS DISTINCT FROM w_dbsetup.sqlcmd_where OR
t_expert_controle_rule.sqlcmd_justificatif IS DISTINCT FROM w_dbsetup.sqlcmd_justificatif
);
INSERT INTO pmsi.t_expert_controle_rule (
controle_id,
numero,
sqlcmd_where,
sqlcmd_justificatif
)
SELECT
t_expert_controle.oid,
w_dbsetup.numero::numeric,
w_dbsetup.sqlcmd_where,
w_dbsetup.sqlcmd_justificatif
FROM w_dbsetup
JOIN pmsi.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code
LEFT JOIN pmsi.t_expert_controle_rule ON
t_expert_controle_rule.controle_id = t_expert_controle.oid AND
t_expert_controle_rule.numero = w_dbsetup.numero::numeric
WHERE t_expert_controle_rule.oid IS NULL;
";
return $sqlScript;
}
?>