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.
 
 

183 lines
3.9 KiB

<?php
//Référence les fonctions utiles pour les consolidés
require_once("../../../modules/pmsi/import_rss_rsf/utils/import_functions.php");
global $environmentVars;
global $iCTI_connexion;
////////////////////// ANNEE ET MOIS //////////////////////
/**
* Transforme une année A3 en 202301
* @param string $year_AX doit être du type A2 ou 2023
* @return int
*/
function transform_AX_in_annee_mois($year_AX)
{
$annee = date("Y") - 2;
if (empty($year_AX)) {
return intval($annee . "01");
}
if (is_year_AX($year_AX)) {
//année en cours moins nombre années demandées
$annee = transform_AX_in_year($year_AX);
}
if (strlen($year_AX) === 4 && intval($year_AX)) {
// si années écrit en dur
$annee = $year_AX;
}
return intval($annee . "01");
}
/**
* Détermine si le paramètre est du type '202304'
* @return bool
*/
function is_annee_mois($annee_mois)
{
$annee_mois = trim($annee_mois);
if (strlen($annee_mois) <> 6) {
return false;
}
$annee_now = date("Y");
$annee = intval(substr($annee_mois, 0, 4));
$mois = intval(substr($annee_mois, -2));
if ($mois < 1 || $mois > 12) {
return false;
}
if ($annee > $annee_now) {
return false;
}
return true;
}
/**
* Détermine si le paramètre est une chaine de charatère du type '202304, 202305, 202306'
*/
function is_annee_mois_array($mois_forces)
{
$annee_mois_array = explode(",", $mois_forces);
foreach ($annee_mois_array as $annee_mois) {
if (!is_annee_mois($annee_mois)) {
return false;
}
}
return true;
}
function find_min_year($years)
{
$years_array = explode(',', $years);
function cast_to_int($year)
{
return intval($year);
};
$years_int = array_map('cast_to_int', $years_array);
return min($years_int);
}
/**
* Crée la liste au format string des annees mois '202201, 202202, 202203'
* des séjours présent après le parametre $annee_mois_force
*/
function get_list_annee_mois($annee_mois_force)
{
global $iCTI_connexion;
$mois_sortie_concat = "0";
$sqlcmd = " WITH w_mois AS
(
SELECT mois
FROM base.p_calendrier
WHERE mois BETWEEN $annee_mois_force AND TO_CHAR(NOW(), 'YYYYMM')
GROUP BY mois
ORDER BY mois
)
SELECT base.cti_group_concat(mois) AS mois_sortie_concat
FROM w_mois;";
$record = pg_fetch_array($iCTI_connexion->query($sqlcmd));
if ($record) {
$mois_sortie_concat = $record["mois_sortie_concat"];
}
return $mois_sortie_concat;
}
////////////////////// PARAMETRES DE COMMANDE //////////////////////
function create_mois_forces($cti_args)
{
// Paramètre --annee-mois-force
if (isset($cti_args->args["--annee-mois-force"]) || isset($cti_args->args["-af"])) {
$annee_mois_force = empty($cti_args->args["--annee-mois-force"]) ? $cti_args->args["-af"] : $cti_args->args["--annee-mois-force"];
if (is_year_AX($annee_mois_force)) {
$annee_mois_force = transform_AX_in_year($annee_mois_force) . "01";
}
if (!is_annee_mois($annee_mois_force)) {
logErrorMsg("L'année $annee_mois_force en paramètre de --annee-mois-force doit être du type: 202301 ou A3");
die_conso();
}
return get_list_annee_mois($annee_mois_force);
}
// Paramètre --moisforces
if (isset($cti_args->args["--moisforces"]) || isset($cti_args->args["-mf"])) {
$moisforces = empty($cti_args->args["--moisforces"]) ? $cti_args->args["-mf"] : $cti_args->args["--moisforces"];
if (!is_annee_mois_array($moisforces)) {
logErrorMsg("L'année en paramètre de -moisforces doit être du type: 202301");
die_conso();
}
return $moisforces;
}
return "0";
}
////////////////////// DATABASE //////////////////////
function nettoyage_sejours_bdd($year_to_delete){
$year_min = date("Y") - 2;
if ($year_to_delete && $year_to_delete <= $year_min) {
nettoyer_sejours_jusqua($year_to_delete);
} else {
nettoyer_sejours();
}
}
function die_conso()
{
logErrorMsg("Arrêt de la génération");
die();
}
function iCTI_disconnect()
{
global $iCTI_connexion;
$iCTI_connexion->close();
}