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.
 
 
 
 
 

255 righe
13 KiB

<?php
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php";
include_once $configPath ;
if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice,$_GET["codice"])) {
$codice_round = $_GET["codice_round"] ?? null;
$gara = gara::init($_GET["codice"],$codice_round);
if ($gara !== false) {
$record = $gara->info;
$round = $gara->round;
$lotti = $gara->getLotti();
$extraInfoGara = $gara->getExtraInfo()["gara"];
$breadcrumb = array();
$breadcrumb["/".$radice."/"] = Modulo::getInfo($radice)["titolo"];
$breadcrumb[""] = __("Pannello");
include_once $beRoot."/layout/top.php";
$stati = gara::getStati();
$stato = $stati[$record["stato"]];
if ($record["stato"] == 20 && strtotime($round["pubblicazione"]) > time()) {
$stato["titolo"] = "Programmata pubblicazione";
}
$alertManager = new alertManager("gara-{$record["codice"]}");
$canCreate = $_SESSION["ente"]->checkLimite($radice,true);
if ($canCreate) {
if (!$_SESSION["utente"]->readOnly) {
$canCreate = $_SESSION["utente"]->permission("gare.insert");
} else {
$canCreate = false;
}
}
if ($gara->quickAvailable && !isset($extraInfoGara["quickPanel"]) && empty($gara->info["stato"])) {
?>
<div class="card">
<div class="card-header">
<span class="card-title h3"><?= __("Scelta pannello") ?></span>
</div>
<div class="card-body">
<? alertManager::printInfoBox(__("Procedura semplificata disponibile"),__("La procedura scelta permette l'accesso ad un pannello di gestione semplificato per assolvere ai soli obblighi di trasparenza, come vuoi procedere?")); ?>
<form action="/backend/gare/setQuickPanel.php" method="POST">
<input type="hidden" name="codice" value="<?= $record["codice"] ?>">
<input type="hidden" name="token" value="<?= tokenGen() ?>">
<input type="hidden" id="quickPanel" name="quickPanel" value="">
<div class="row">
<div class="col-12 col-lg-6">
<button type="submit" onClick="$('#quickPanel').val('S');" class="btn btn-warning btn-lg btn-block p-5">
<span class="fa fa-bolt fa-5x"></span><br>
<?= __("Pannello semplificato") ?>
</button>
</div>
<div class="col-12 col-lg-6">
<button type="submit" onClick="$('#quickPanel').val('N');" class="btn btn-primary btn-lg btn-block p-5">
<span class="fa fa-suitcase fa-5x"></span><br>
<?= __("Pannello completo") ?>
</button>
</div>
</div>
</form>
</div>
</div>
<?
} else {
?>
<div id="commands" class="mb-5">
<div class="commands container-fluid clearfix">
<? if ($gara->quickAvailable && $_SESSION["utente"]->isSupportoOrRoot()) { ?>
<form class="float-right mx-1" action="/backend/gare/setQuickPanel.php" method="POST">
<input type="hidden" name="codice" value="<?= $record["codice"] ?>">
<input type="hidden" name="token" value="<?= tokenGen() ?>">
<input type="hidden" id="quickPanel" name="quickPanel" value="">
<button type="submit" onClick="$('#quickPanel').val('<?= $gara->quickPanel ? 'N' : 'S' ?>');" class="btn btn-secondary">
<span class="fa fa-sync"></span> <?= __("Passa a") . ": " . __("Pannello " . (($gara->quickPanel) ? "completo" : "semplificato")); ?>
</button>
</form>
<? } ?>
<div class="btn-group flex-wrap float-right">
<? if ($_SESSION["utente"]->hasSuperPowers()) { ?>
<? if (!empty($record["stato"]) > 0) { ?>
<button class="btn btn-danger" onClick="showModalWithURL('/backend/gare/oneStepBehind.php?codice=<?= $record["codice"] ?>');"><span class="fa fa-undo-alt"></span> <?= __("Porta allo step precedente") ?></button>
<? } ?>
<? if (!empty($record["public_key"]) && !$gara->checkPartecipantiPresenti()) { ?>
<button class="btn btn-danger" onClick="if (confirm('<?= __("Sei sicuro di voler procedere?") ?>')) { showModalWithURL('/backend/gare/removePublic.php?codice=<?= $record["codice"] ?>'); }"><span class="fa fa-key"></span> <?= __("Rimuovi chiave") ?></button>
<? } ?>
<? } ?>
<? if ($_SESSION["utente"]->canAssignPermissions()) { ?>
<button type="button" class="btn btn-danger" onClick="managePermessi('gare','<?= $record["codice"] ?>','<?= $record["codice_ente"] ?>')">
<span class="fa fa-lock"></span> <?= __("Permessi") ?>
</button>
<? } ?>
<? $alertManager->printAlertModalButton() ?>
<button type="button" class="btn btn-info" onClick="showModalWithURL('/backend/calendar.php?month=<?= date('m') ?>&year=<?= date('Y') ?>&modal=1&modulo=gare&codice_elemento=<?= $record["codice"] ?>')">
<span class="fa fa-calendar"></span> <?= __("Scadenzario") ?>
</button>
<button type="button" class="btn btn-info" onClick="showModalWithURL('/backend/listAttivita.php?modal=1&modulo=gare&codice_elemento=<?= $record["codice"] ?>')">
<span class="fa fa-road"></span> <?= __("Roadmap") ?>
</button>
<button type="button" class="btn btn-primary" onClick="openChat('gare','<?= $record["codice"] ?>','<?= $record["codice_ente"] ?>')">
<span class="fa fa-envelope"></span> <?= __("Chat interna") ?>
<? $unread = Communicator::countUnreadInitiativeChat('gare',$record["codice"]); ?>
<span id="badge-chat" class="badge"><?= (!empty($unread)) ? $unread : "" ?></span>
</button>
<?php if ($canCreate): ?>
<a class="btn btn-default" href="/backend/gare/edit.php?codice=0&copy=<?= $record["codice"] ?>" title="<?= __("copia") ?>"><span class="fa fa-copy"></span> <?= __("Copia") ?></a>
<?php endif ?>
</div>
</div>
</div>
<?php if(!empty($gara->info["importata"])): ?>
<?php if($gara->info["importata"] === "BDNCP"): ?>
<div class="alert alert-warning my-2">
<h5>
<i class="fa fa-exclamation-triangle"></i>
<?= __("Gara importata da BDNCP") ?>
</h5>
<?= __("Si specifica che le informazioni disponibili in BDNCP non consentono la ricostruzione integrale del pannello di gara.") ?>
<p>
<?= __("Pertanto l'importazione è funzionale solo allo scopo di sincronizzazione delle schede trasmesse e alla compilazione delle successive schede previste dagli adempimenti e dai flussi ANAC.") ?>
</p>
<?php if ($gara->validaElaborazione() !== true && $gara->info["stato"] < 10) : ?>
<div class="alert alert-danger mb-0">
<strong><?= __("Attenzione:") ?></strong>
<?= __("Sarà necessario integrare le risposte mancanti nella sezione 'Elaborazione' per visualizzare il modulo ANAC") ?>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
<?php endif; ?>
<div class="mt-5">
<h1 style="border-bottom: 5px solid <?= $stato["color"] ?>" class="clearfix">
<?= __("Gara") ?> #<?= $record["id"] ?>
<small class="float-right"><?= __($stato["titolo"]); ?></small>
</h1>
</div>
<h3><?= $record["oggetto"] ?></h3>
<?
$rounds = $gara->getRounds();
if (count($rounds) > 1) {
?>
<div class="card card-body p-2 mb-2">
<div class="d-flex flex-row">
<?
$class = round(12 / count($rounds));
$procedura = $gara->getProcedura();
$cont = [];
foreach($rounds AS $rnd) {
if (!isset($cont[$rnd["id"]])) {
$cont[$rnd["id"]] = 0;
}
$cont[$rnd["id"]]++;
$infoFase = $procedura["fasi"][$rnd["id"]];
?>
<div class="mx-2 text-center">
<a href="/backend/gare/panel.php?codice=<?= $record["codice"] ?>&codice_round=<?= $rnd["codice"] ?>" class="btn py-2 px-5 btn-block <?= ($rnd["codice"] == $gara->round["codice"]) ? "btn-success" : "btn-secondary" ?>">
<span class="<?= ($rnd["codice"] == $gara->round["codice"]) ? "fa fa-check-circle" : "far fa-circle" ?>"></span> <?= __($infoFase["titolo"]) ?> <?= ($infoFase["ripetibile"]) ? (": " . $cont[$rnd["id"]]) : "" ?>
</a>
</div>
<?
}
?>
</div>
</div>
<?
}
$filtri = [];
$filtri["scaduta"] = false;
$filtri["apertura"] = false;
if ($gara->privata) {
$filtri["privata"] = true;
}
if ($gara->getModalita()["online"]) {
$filtri["online"] = true;
} else {
$filtri["offline"] = true;
}
if (!empty($gara->round["infoFase"])) {
if ($gara->round["infoFase"]["graduatoria"]) {
$filtri["graduatoria"] = true;
} else {
$filtri["istanza_semplice"] = true;
}
}
if (strtotime($round["scadenza"])<=time() || $gara->quickPanel) { unset($filtri["scaduta"]); }
if (strtotime($round["apertura"])<=time() || $gara->quickPanel) { unset($filtri["apertura"]); }
$ris_tipi = gara::getTipologie();
if (count($ris_tipi) > 0) {
?>
<div class="card card-body">
<div class="row">
<?
foreach($ris_tipi AS $id_tipo => $rec_tipo) {
$filtri["tipo"] = $id_tipo;
$stati = $gara->getStatoPannello();
$statoMin = $stati["min"];
$statoMax = $stati["max"];
$ris_comandi = gara::getModuli($filtri,$statoMax,null,$gara->quickPanel);
if (count($ris_comandi) > 0) {
$class = 12 / count($ris_tipi);
$class= "col-sm-".$class;
$tipo = __($rec_tipo["titolo"]);
?>
<div class="col-12 <?= $class ?>">
<span class="h3">
<? echo ucfirst($tipo) ?>
</span>
<?
foreach($ris_comandi AS $id_comando => $rec) {
$badge = "";
$show = true;
$folder = explode("/",$rec["link"]);
$temp = array_pop($folder);
$folder = implode("/",$folder);
$hrefComando = $rec["link"];
$hrefComando .= (strpos($rec["link"], "?") === false) ? "?" : "&";
$hrefComando .= "codice={$record["codice"]}&codice_round={$round["codice"]}";
if (file_exists($root.$folder."/check.php")) { include($root.$folder."/check.php"); }
$lock = $gara->checkLock($id_comando,$statoMin);
$status = "";
if (file_exists($root.$folder."/_status.php") && ($show || empty($rec["stato_minimo"]) || $rec["stato_minimo"] <= 20)) {
include($root.$folder."/_status.php");
}
if ($show && $_SESSION["utente"]->permission($radice,$_GET["codice"],$id_comando) && $_SESSION["utente"]->permission($rec["modulo_riferimento"])) {
?>
<a class="btn my-1 <?= $status ?> btn-block btn-<?=($lock==true) ? "secondary" : "info"?>" href="<?= $hrefComando ?>" title="<?= __($rec["descrizione"] ?? $rec["titolo"]) ?>">
<span class="float-left"><?= __($rec["titolo"]) ?></span>
<? if ($rec["badge"] != "") {
if (file_exists($root.$rec["badge"])) { include($root.$rec["badge"]); }
} ?>
<div class="clearfix"></div>
</a>
<?
}
} ?>
</div>
<? }
}
if (!empty($alertManager->alerts)) {
$alertManager->printModal();
}
?>
</div>
</div>
<?
}
include_once ($beRoot."/layout/bottom.php");
}
} else {
echo '<meta http-equiv="refresh" content="0;URL=/backend/index.php">';
die();
}
} else {
echo '<meta http-equiv="refresh" content="0;URL=/backend/index.php">';
die();
}