gestione gare pubbliche
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 
 

141 righe
7.1 KiB

<?php if (!empty($npa) && !empty($_SESSION["utente"]) && $_SESSION["utente"]->permission("npa")) : ?>
<script type="text/javascript">
let calcTimelineFillingLine = function() {
let offset = $('#timeline-event-selected').offset().left - $('#timeline-events-list').offset().left + 75;
$('.filling-line').css('width', offset);
}
$(window).on("resize", function() {
calcTimelineFillingLine();
}).ready(function() {
calcTimelineFillingLine();
});
</script>
<div class="card mb-3">
<div class="card-body">
<div class="cd-horizontal-timeline loaded">
<div class="timeline">
<div class="events-wrapper">
<div class="events" style="width: 100%;">
<ol id="timeline-events-list" class="d-flex justify-content-around">
<?php
parse_str($_SERVER['QUERY_STRING'], $current_query);
// Verifica che la scheda sia una rettifica
$is_rettifica = !empty($npa->scheda["codice_rettifica"]);
// Verifica che la scheda abbia una rettifica
$rettifica_codice = NuovaPiattaformaAppalti::cardHasRectifyCard($npa->scheda);
// Verifica che la scheda sia una modifica
$is_modifica = !empty($npa->scheda["codice_modifica"]);
// Verifica che la scheda abbia una modifica
$modifica_codice = NuovaPiattaformaAppalti::cardHasModifyCard($npa->scheda);
$stati = NuovaPiattaformaAppalti::listAvailableStatusList();
$stati_by_group = array_group_by($stati, "group");
if(!NuovaPiattaformaAppalti::hasToBePublished($npa->scheda)) { unset($stati_by_group[4]); }
$info_stato = $stati[$npa->scheda["stato"]] ?? null;
if ($info_stato["group"] < 0) {
?>
<li id="timeline-event-selected" class="text-<?= $info_stato['color'] ?>">
<a href="javascript:void(0)" class="text-decoration-none selected">
<span class="d-block text-center text-<?= $info_stato["color"] ?>"><span class="<?= $info_stato["icon"] ?>"></span></span>
<strong class="text-secondary"><?= $info_stato["title"] ?></strong>
</a>
</li>
<?php
} else {
foreach ($stati_by_group as $position => $stati_disponibili) {
if ($position < 0) continue;
$toRender = null;
$class = "";
$first_stato = reset($stati_disponibili);
$last_stato = end($stati_disponibili);
// Se la scheda è in questo gruppo, renderizziamo questo
if ($info_stato["group"] == $position) {
$toRender = $info_stato;
$class = "selected";
if ($npa->scheda["errore"] == "SI") {
$toRender["class"] = "danger";
$toRender["icon"] = "fas fa-times-circle";
if (isset($alertManager)) {
$operazione = $npa->getLastOperation(null, null, "KO");
$dictionary = $npa->getErrorsDictionary();
if (!empty($operazione) && $operazione["esito"] == "KO") {
$errori = unserialize($operazione["risultato"]) ?? null;
if (isset($errori->errori)) {
$errori = $errori->errori;
}
if (!is_array($errori)) {
$errori = [$errori];
}
foreach ($errori as $errore) {
//dump($errore, $operazione);
$codice = $errore->codice ?? "SCONOSCIUTO";
$errorInfo = $dictionary[$errore->codice ?? null] ?? [];
$errorMessage = $errorInfo["descrizione"]["it"] ?? "Errore sconosciuto " . json_encode($errore, JSON_PRETTY_PRINT);
if($errorInfo["external"] ?? false) {
$errorMessage .= <<<ANAC
<div class="alert alert-warning mt-2 ml-3">
<i class="fa fa-info mr-2"></i>
Questo errore è relativo ai servizi ANAC o
ad esso collegati e non alla piattaforma in uso.<br>
<b>Si prega dunque di riprovare più tardi.</b>
</div>
ANAC;
}
$detail = $errore->dettaglio ?? null;
if (!empty($detail)) {
$errorMessage .= "<br>{$detail}";
}
$timestamp = mysql2datetime($operazione["timestamp"]);
$tipoOperazione = ucfirst(strtolower(str_replace("_", " ", $operazione["operazione"])));
$message = "<strong>{$codice}</strong> - {$errorMessage}";
$message .= "<p class='mt-2 pb-0 mb-0'> <i><i class='fa fa-clock mr-2'></i>Errore registrato il <strong>{$timestamp}</strong> in fase di <strong>{$tipoOperazione}</strong></i></p>";
$alertManager->addDangerAlert($message);
}
}
}
}
// Stato già superato
} elseif ($info_stato["group"] > $position) {
$toRender = $last_stato;
$class = "older-event";
$toRender["class"] = "success";
$toRender["icon"] = "fas fa-check-circle";
// Stato ancora da raggiungere
} else {
$toRender = $first_stato;
$toRender["title"] = str_replace(" richiesta", "", $toRender["title"]);
$toRender["class"] = "secondary";
$toRender["icon"] = "fas fa-ellipsis-h";
}
?>
<li id="timeline-event-<?= $class ?>" class="text-<?= $toRender["class"] ?>">
<a href="javascript:void(0)" class="text-decoration-none <?= $class ?>">
<span class="d-block text-center text-<?= $toRender["class"] ?>"><span class="<?= $toRender["icon"] ?>"></span></span>
<strong class="text-secondary"><?= $toRender["title"] ?></strong>
</a>
</li>
<?
}
}
?>
</ol>
<span class="filling-line" aria-hidden="true" style="width: 0"></span>
</div>
</div>
</div>
</div>
</div>
</div>
<?php require __DIR__ . "/notifications.php" ?>
<?php endif; ?>