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.
 
 
 
 
 

303 righe
18 KiB

<?
$configPath = substr(__DIR__,0,strpos(__DIR__,"/public_html"))."/config.php";
include_once($configPath);
$id_modulo = "criteri";
$cmd_info = concorso::getInfoModulo($id_modulo);
if (!empty($_SESSION["utente"]) && $_SESSION["utente"]->permission($radice,$_GET["codice"],$id_modulo) && $_SESSION["utente"]->permission($cmd_info["modulo_riferimento"])) {
$codice_round = $_GET["codice_round"] ?? NULL;
$concorso = concorso::init($_GET["codice"],$codice_round);
if (!empty($concorso)) {
$record = $concorso->info;
$round = $concorso->round;
$lotti = $concorso->getLotti();
$partial = false;
$multiLotto = (count($concorso->getLotti()) > 1);
$sogliaAttiva = (($concorso->getRisposteElaborazione()["sogliaMinima"] ?? "N") != "N");
$lock = $concorso->checkLock($cmd_info["id"]);
$titolo_modulo = __($cmd_info["titolo"]);
if (!empty($round)) { $titolo_modulo .= " - " . __("Fase") . " " . $round["numero"]; }
$macro = null;
if (!empty($_GET["codice_padre"])) {
$macro = $concorso->getCriteri($_GET["codice_padre"])[0] ?? null;
$form = $concorso->getFormCriterio($macro["codice"]);
}
$breadcrumb = array();
$breadcrumb["/".$radice."/"] = Modulo::getInfo($radice)["titolo"];
$breadcrumb["/".$radice."/panel.php?codice=".$record["codice"]."&codice_round=".$round["codice"]] = __("Pannello");
if (!empty($_GET["codice_lotto"]) && $multiLotto) {
$breadcrumb["/".$radice."/criteri/index.php?codice=".$record["codice"]."&codice_round=".$round["codice"]] = __("Selezione lotto");
}
if (!empty($macro)) { $breadcrumb["/".$radice."/criteri/index.php?codice=".$record["codice"]."&codice_round=".$round["codice"]."&codice_lotto=".$_GET["codice_lotto"]] = __("Macro criteri"); }
$breadcrumb[""] = $titolo_modulo;
include_once ($beRoot."/layout/top.php");
?><h1><?= $titolo_modulo ?></h1><?
if ($concorso->chooseLotto($_GET["codice_lotto"] ?? false,"{$_SERVER["PHP_SELF"]}?codice=".$record["codice"]."&codice_round=".$round["codice"])) {
$lotto = $concorso->lotto;
if (!empty($macro)) {
if (empty($form)) {
$criteri = $concorso->getSubCriteri($macro["codice"]);
}
} else {
$criteri = $concorso->getMacroCriteri();
}
?>
<?= ($macro !== null) ? "<h4><span class='fa fa-sitemap'></span> {$macro["denominazione"]}</h4>" : "" ?>
<?= (!empty($lotto)) ? "<h4><span class='fa fa-list'></span> {$lotto["oggetto"]}</h4>" : "" ?>
<?
if (!$lock && ($lotto["stato"] == 95 || $lotto["stato"] == 99)) {
alertManager::printAlertBox(__("Lotto incompatibile"));
} else {
?>
<div id="commands" class="mb-5">
<div class="commands container-fluid">
<div class="row">
<div class="col-12 text-right">
<? if (!empty($criteri) && (!$multiLotto || !empty($lotto))) { ?>
<a target="_blank" href='export.php?codice_concorso=<?= $record["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>' class="btn btn-warning" title="<?= __('Esporta') ?>"><span class="fa fa-download"></span> <?= __('Esporta') ?></a>
<? } ?>
<? if (!$lock) { ?>
<button onClick="showModalWithURL('edit.php?codice_concorso=<?= $record["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice=0<?= ($macro !== null) ? "&codice_padre={$macro["codice"]}" : "" ?>')" class="btn btn-success" title="<?= __('Aggiungi nuovo') ?>"><span class="fa fa-plus-circle"></span> <?= __('Aggiungi nuovo') ?></button>
<? } ?>
</div>
</div>
</div>
</div>
<?
if (!empty($criteri)) {
$formule = concorso::getFormule();
?>
<div class="card mb-2">
<div class="card-body">
<table class="table table-striped table-hover m-0">
<thead>
<tr>
<th width="10"></th>
<th width="10"></th>
<th><?= __("descrizione") ?></th>
<th class="text-center" width="100"><?= __("tipologia") ?></th>
<th class="text-center" width="10%"><?= __("peso") ?></th>
<? if ($sogliaAttiva) { ?><th class="text-center" width="10%"><?= __("soglia") ?></th><? } ?>
<? if ($multiLotto && empty($macro)) { ?>
<th width="200"></th>
<? } ?>
<th width="10"></th>
</tr>
</thead>
<tbody id="listCriteri">
<?
$somma = 0;
$form = $pdo->prepare("SELECT codice FROM b_concorsi_form WHERE codice_criterio = :criterio");
$sub = $pdo->prepare("SELECT codice, peso FROM b_concorso_criteri_valutazione WHERE codice_padre = :criterio");
$preview_tecnica = false;
foreach($criteri AS $criterio) {
$btnErrorClass = "";
$somma += $criterio["peso"];
$status = "bg-success";
$badge = 0;
$badge_sub = 0;
$badgeEP = 0;
$note = "";
$sub = $concorso->getSubCriteri($criterio["codice"]);
if (!empty($sub)) {
$badge_sub = count($sub);
$totale_sub = 0;
foreach($sub AS $s) {
$totale_sub += $s["peso"];
$form->bindValue(":criterio",$s["codice"]);
$form->execute();
if ($form->rowCount()) { $preview_tecnica = true; }
if ($s["auto"] != "") {
$preview_tecnica = true;
}
}
if ($totale_sub != $criterio["peso"]) {
$status = "bg-warning";
$note .= __("Totale sub-criteri errato");
}
}
if ($criterio["tipologia"] == "Q") {
$form->bindValue(":criterio",$criterio["codice"]);
$form->execute();
$badge = $form->rowCount();
if ($badge > 0) {
$preview_tecnica = true;
}
}
if ($criterio["auto"] != "") {
$preview_tecnica = true;
}
$totalBadge = $badge + $badge_sub + $badgeEP;
?>
<tr class="rowCritero">
<td width="10" class="handle"><span class="text-disabled fa fa-bars"></span></td>
<td width="10"><div class="status_flag <?= $status ?>"></div></td>
<td>
<input class="ordinamento" type="hidden" name="ordinamento-criteri[<?= $criterio["codice"] ?>]" value="<?= $criterio["ordinamento"] ?>">
<strong><?= $criterio["denominazione"] ?></strong>
<? if (!empty($formule[$criterio["auto"]])) { ?>
<span class="badge badge-info"><span class="fa fa-magic"></span> <?= __($formule[$criterio["auto"]]["titolo"]) ?></span>
<? } else if ($criterio["tipologia"] != "Q") { ?>
<span class="badge badge-secondary"><?= __("Valutazione automatica disattiva") ?></span>
<? } ?>
<? if (!empty($note)) { ?>
<span class="badge badge-<?= $btnErrorClass ?>"><?= $note ?></span>
<? } ?>
<br><small><?= $criterio["descrizione"] ?></td>
<td class="text-center">
<?
switch($criterio["tipologia"]) {
case "Q": echo __("Discrezionale"); break;
case "N": echo __("Quantitativo"); break;
case "E": echo __("Elenco prezzi"); break;
default: echo __("Configurazione errata");
}
?>
</td>
<td class="text-center" width="10%"><?= $criterio["peso"] ?></td>
<? if ($sogliaAttiva) { ?><td class="text-center" width="10%"><?= $criterio["soglia"] ?></td><? } ?>
<? if ($multiLotto && empty($macro)) {
$selezionati = $concorso->getLottiFromCriterio($criterio["codice"]);
$label = __("Errore");
$color = "danger";
if (!empty($selezionati)) {
if (empty($selezionati[0])) {
$label = __("Tutti i lotti");
$color = "success";
} else {
$partial = true;
$color = "warning";
$label = count($selezionati) . "/" . count($lotti) . " " . __("Lotti");
}
}
?>
<td>
<button onClick="showModalWithURL('lotti.php?_disableRefresh=1&codice_concorso=<?= $record["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice=<?= $criterio["codice"] ?>')" class="btn btn-block btn-sm btn-<?= $color ?>" title="<?= __('Lotti') ?>"><?= $label ?></button>
</td>
<? } ?>
<td>
<div class="dropdown">
<button title='<?= __("gestione") ?>' class='btn btn-block btn-sm btn-<?= (!empty($btnErrorClass)) ? $btnErrorClass : "info" ?> dropdown-toggle' type="button" id="menuAzioni<?= $criterio["codice"] ?>" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class='fa fa-cog'></span> <?= __("Operazioni") ?>
<? if ($totalBadge > 0) { ?><span class="badge badge-danger"><?= $totalBadge ?></span><? } ?>
</button>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="menuAzioni<?= $criterio["codice"] ?>">
<a href="#" onClick="showModalWithURL('edit.php?codice_concorso=<?= $record["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice=<?= $criterio["codice"] ?>')" class="dropdown-item" title="<?= __('modifica') ?>"><span class="fa fa-edit"></span> <?= __("Dettagli") ?></a>
<? if ($criterio["tipologia"] == "E" && !empty($criterio["auto"])) {
$modal = "elencoPrezzi.php";
$label = __("Elenco prezzi");
?>
<a href="#" onClick="showModalWithURL('<?= $modal ?>?codice_concorso=<?= $record["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice=<?= $criterio["codice"] ?>')" class="dropdown-item" title="<?= $label ?>">
<? if ($badgeEP > 0) { ?>
<span class="fa fa-clipboard-list"></span> <?= $label ?>
<span class="badge badge-danger"><?= $badgeEP ?></span>
<? } else { ?>
<span class="text-warning"><span class="fa fa-exclamation-triangle"></span> <?= $label ?></span>
<? } ?>
</a>
<?
}
if ($criterio["tipologia"] == "Q" && $badge_sub == 0) {
$modal = "form.php";
$label = __("Form");
?>
<a href="#" onClick="showModalWithURL('<?= $modal ?>?codice_concorso=<?= $record["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice=<?= $criterio["codice"] ?>')" class="dropdown-item" title="<?= $label ?>">
<span class="fa fa-list"></span> <?= $label ?>
<? if ($badge > 0) { ?><span class="badge badge-danger"><?= $badge ?></span><? } ?>
</a>
<? } ?>
<? if (empty($macro) && $badge == 0 && empty($criterio["auto"])) { ?>
<a class="dropdown-item" href="/backend/concorsi/criteri/index.php?codice=<?= $concorso->info["codice"] ?>&codice_round=<?= $concorso->round["codice"] ?>&codice_padre=<?= $criterio["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>">
<span class="fa fa-sitemap"></span>
<?= __("Subcriteri") ?>
<? if ($badge_sub > 0) { ?><span class="badge badge-danger"><?= $badge_sub ?></span><? } ?>
</a>
<? } ?>
<? if (empty($lock)) { ?>
<a href="#" title="<?= __("elimina") ?>" class="dropdown-item text-danger" onclick="elimina('<?= $criterio["codice"] ?>','concorsi/criteri');"><span class='fa fa-times'></span> <?= __("Elimina") ?></a>
<? } ?>
</div>
</div>
</td>
</tr>
<?
}
?>
</tbody>
<? if (!$multiLotto || !empty($lotto)) {
$totale = ($macro === null) ? 100 : $macro["peso"];
$differenza = $totale - $somma;
?>
<tfoot>
<tr>
<th class="text-right" colspan="<?= $sogliaAttiva ? 3 : 4 ?>"><?= __("Totale") ?></th>
<th class="text-center <?= (!empty($differenza)) ? "text-danger" : "" ?>">
<?= $somma ?> / <?= $totale ?>
<? if (!empty($differenza)) {
echo "<br>". __("Differenza")." ". $differenza;
} ?>
</th>
<th></th>
</tr>
</tfoot>
<? } ?>
</table>
</div>
<?
if ($preview_tecnica) {
?>
<div class="card-footer">
<? if ((!$multiLotto || !empty($lotto))) { ?>
<? if ($preview_tecnica) { ?>
<button class="btn btn-info float-right" onClick="showModalWithURL('preview.php?codice_concorso=<?= $record["codice"] ?>&codice_round=<?= $round["codice"] ?>&codice_lotto=<?= $lotto["codice"] ?>')">
<span class="fa fa-search"></span> <?= __("Anteprima form Tecnico") ?></button>
</button>
<? } ?>
<? } else { ?>
<div class="text-right p-2">
<a href="#" onClick="showModalWithURL('selectLotto.php?codice_concorso=<?= $record["codice"] ?>&codice_round=<?= $round["codice"] ?>')" class="alert alert-warning text-right"><?= __("Seleziona un lotto per visualizzare l'anteprima") ?></a>
</div>
<? } ?>
</div>
<?
}
?>
</div>
<?
if (!$lock) {
?>
<script>
$( "#listCriteri" ).sortable({
handle: ".handle",
update: function( event, ui ) {
$(".rowCritero","#listCriteri").each(function(index, el) {
$(this).find('.ordinamento').val(index);
});
$.ajax({
type: "POST",
url: '/backend/concorsi/criteri/save-order.php',
data: $('.ordinamento').serialize(),
async: true
});
}
});
</script>
<?
}
} else {
alertManager::printWarningBox(__("Nessun risultato"));
}
}
}
include_once ($beRoot."/layout/bottom.php");
} else {
echo '<meta http-equiv="refresh" content="0;URL=/index.php">';
die();
}
} else {
echo '<meta http-equiv="refresh" content="0;URL=/index.php">';
die();
}
?>