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
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; ?>
|