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.
 
 
 
 
 

501 righe
28 KiB

<?
if (isset($oe) && (isset($_SESSION["utente"]))) {
if ($_SESSION["utente"]->hasSuperPowers() || $_SESSION["utente"]->gerarchia === 1 || (!empty($_SESSION["utente"]->oe) && $oe["codice"] == $_SESSION["utente"]->oe["codice"])) {
$utente = oeManager::getUser($oe["codice"]);
$codice_ente = (isset($_SESSION["ente"])) ? $_SESSION["ente"]->codice : 0;
$forms = oeManager::getStandardForms($oe["tipo"],$codice_ente);
$cpvs = oeManager::getCpvs($oe["codice"]);
$validate = oeManager::validateUpdate(["oe"=>$oe,"user"=>$utente,"cpv"=>$cpvs]);
$status_generali = $status_cpv = "fa fa-exclamation-triangle text-danger";
if ($validate === true || (is_array($validate) && $validate[0] == "cpv")) {
$status_generali = "fa fa-check-circle text-success";
}
if (!empty($cpvs) === true) { $status_cpv = "fa fa-check-circle text-success"; }
$activeTab = $_SESSION["activeTab"] ?? null;
?>
<script src="/src/js/extra/password-generator.js"></script>
<script>
function setActiveTab(tab) {
if (typeof tab !== "undefined") {
$.ajax({
"url": "/oe/setActiveTab.php?tab=" + tab
});
}
}
</script>
<form action="/oe/save.php" rel="validate" method="post">
<input id="token" type="hidden" name="token" value="<?= tokenGen() ?>">
<input id="codice-oe" type="hidden" name="oe[codice]" value="<?= $oe["codice"] ?>">
<input id="codice" type="hidden" name="user[codice]" value="<?= $utente["codice"] ?>">
<div class="container-fluid px-5">
<div class="text-right py-3">
<button type="submit" class="btn btn-sm btn-primary"><span class="fa fa-save"></span> <?= __("Salva") ?></button>
</div>
<h1><?= $oe["ragione_sociale"] ?></h1>
<div class="card bg-light mb-3">
<div class="card-body">
<!-- Nav tabs -->
<ul class="nav nav-pills" id="tab-profilo-oe" role="tablist">
<li class="nav-item">
<a class="nav-link <?= ($activeTab == "generali-tab" || empty($activeTab)) ? "active" : "" ?>" onclick="setActiveTab('generali-tab')" id="generali-tab" data-toggle="tab" href="#generali" role="tab" aria-controls="generali" aria-selected="true">
<span class="<?= $status_generali ?>"></span>
<?= __("Generali") ?>
</a>
</li>
<li class="nav-item">
<a class="nav-link <?= ($activeTab == "cpv-tab") ? "active" : "" ?>" onclick="setActiveTab('cpv-tab')" id="cpv-tab" data-toggle="tab" href="#cpv" role="tab" aria-controls="cpv" aria-selected="false">
<span class="<?= $status_cpv ?>"></span>
<?= __("Categorie CPV") ?>
</a>
</li>
<?
$formsObjects = [];
if (!empty($forms)) {
foreach($forms AS $form) {
$form = FormManager::getInfoFromID($form,$codice_ente);
if (!empty($form)) {
$formManager = new FormManager;
$formManager->init($form["codice"],"oe",$oe["codice"]);
$validation = $formManager->validateData();
$status = "fa fa-exclamation-triangle text-danger";
if (is_array($validation) && empty($validation)) {
$valuesForm = $formManager->getValues();
$warningForm = !FormManager::existValues($valuesForm);
if ($warningForm) {
$status = "fa fa-check-circle text-warning";
} else {
$status = "fa fa-check-circle text-success";
}
}
$formsObjects[$form["codice"]] = ["info"=>$form,"manager"=>$formManager,"validation"=>$validation];
unset($formManager);
$titolo = json_decode($form["titolo"],true);
$titolo = $titolo[$_SESSION["language"]] ?? $titolo["IT"];
?>
<li class="nav-item">
<a class="nav-link <?= ($activeTab == "form-{$form["codice"]}-tab") ? "active" : "" ?>" onclick="setActiveTab('form-<?= $form["codice"] ?>-tab')" id="form-<?= $form["codice"] ?>-tab" data-toggle="tab" href="#form-<?= $form["codice"] ?>" role="tab" aria-controls="form-<?= $form["codice"] ?>" aria-selected="false">
<span class="<?= $status ?>"></span>
<?= $titolo ?>
</a>
</li>
<?
}
}
}
if ($oe["tipo"] == "IMP") {
$form = FormManager::getInfoFromID("soa",$codice_ente);
$status_soa = "fa fa-exclamation-triangle text-danger";
if (!empty($form)) {
$soaManager = new FormManager;
$soaManager->init($form["codice"],"oe",$oe["codice"]);
$validationSoa = $soaManager->validateData();
if (is_array($validationSoa) && empty($validationSoa)) {
$valuesSOA = $soaManager->getValues();
$warningSOA = !FormManager::existValues($valuesSOA);
if ($warningSOA) {
$status_soa = "fa fa-check-circle text-warning";
} else {
$status_soa = "fa fa-check-circle text-success";
}
}
}
?>
<li class="nav-item">
<a class="nav-link <?= ($activeTab == "soa-tab") ? "active" : "" ?>" onclick="setActiveTab('soa-tab')" id="soa-tab" data-toggle="tab" href="#soa" role="tab" aria-controls="soa" aria-selected="false">
<span class="<?= $status_soa ?>"></span>
<?= __("Attestazioni SOA e Fatturati") ?>
</a>
</li>
<?
}
$serviziTecnici = oeManager::getServiziTecnici($oe["codice"]);
?>
<li class="nav-item">
<a class="nav-link <?= ($activeTab == "servizi-tecnici-tab") ? "active" : "" ?>" onclick="setActiveTab('servizi-tecnici-tab')" id="servizi-tecnici-tab" data-toggle="tab" href="#servizi-tecnici" role="tab" aria-controls="servizi-tecnici" aria-selected="false">
<span class="fa fa-check-circle text-<?= (!empty($serviziTecnici)) ? "success" : "warning" ?>"></span>
<?= __("Servizi tecnici") ?>
</a>
</li>
<?
?>
</ul>
</div>
</div>
<? if ($oe["profilo_completo"] == "N") { ?>
<div class="alert alert-warning p-3 my-3">
<span class="fa fa-exclamation-triangle fa-2x align-middle"></span> <?= __("Il tuo profilo non è completo") ?>
</div>
<? } ?>
<div class="card mb-3">
<div class="card-body">
<div class="tab-content">
<div class="tab-pane <?= ($activeTab == "generali-tab" || empty($activeTab)) ? "active" : "" ?>" id="generali" role="tabpanel" aria-labelledby="generali-tab">
<div class="card mb-3">
<div class="card-header">
<h3 class="mb-0 font-weight-bold"><?= __("Dati generali") ?></h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label for="oe[ragione_sociale]"><?= __("Denominazione") ?> ** <small>(<?= __("Obbligatorio per Impresa") ?>)</small></label>
<input type="text" class="form-control" id="ragione_sociale" value="<?= $oe["ragione_sociale"] ?>" name="oe[ragione_sociale]" title="<?= __("Denominazione") ?>" rel="<?= ($oe["tipo"] == "IMP") ? "S" : "N" ?>;2;0;A">
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="oe[pec]"><?= __("Indirizzo PEC") ?> *</label>
<input type="pec" id="pec" data-codice="<?= $oe["codice"] ?>" class="form-control" value="<?= $oe["pec"] ?>" name="oe[pec]" title="<?= __("Indirizzo PEC") ?>" rel="S;2;0;E;/oe/check.php">
</div>
</div>
</div>
<div class="row">
<div class="col-lg-4">
<div class="form-group">
<label for="oe[stato]">
<?= __("stato") ?>*
</label>
<select name="oe[stato_legale]" class="form-control" title="<?= __("stato") ?>" rel="S;2;2;A">
<option value=""><?= __("seleziona") ?></option>
<?
$stati = getStati();
if (count($stati) > 0) {
foreach($stati AS $stato) {
?><option <?= ($oe["stato_legale"] == $stato["sigla"]) ? "selected" : "" ?> value="<?= $stato["sigla"] ?>"><?= $stato["stato"] ?></option><?
}
}
?>
</select>
</div>
</div>
<div class="col-lg-4">
<div class="form-group">
<label for="oe[codice_fiscale_impresa]"><?= __("Codice Fiscale Impresa / Professionista") ?>*</label>
<input type="text" class="form-control" value="<?= $oe["codice_fiscale_impresa"] ?>" name="oe[codice_fiscale_impresa]" title="<?= __("Codice Fiscale Impresa / Professionista") ?>" rel="S;2;0;PICF">
</div>
</div>
<div class="col-lg-4">
<div class="form-group">
<label for="oe[partita_iva]"><?= __("Partita IVA") ?></label>
<input type="text" class="form-control" value="<?= $oe["partita_iva"] ?>" name="oe[partita_iva]" title="<?= __("Partita IVA") ?>" rel="N;2;0;PI">
</div>
</div>
</div>
</div>
</div>
<div class="card mb-3">
<div class="card-header">
<h3 class="mb-0 font-weight-bold"><?= __("Credenziali") ?></h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-12 col-lg-6">
<div class="form-group">
<label for="email"><?= __("Indirizzo e-mail") ?>*</label>
<input name="user[email]" data-codice="<?= $utente["codice"] ?>" type="text" class="form-control" id="email" value="<?= $utente["email"] ?>" title="<?= __("Indirizzo e-mail") ?>" rel="S;2;100;E;/profilo/check.php">
</div>
</div>
<div class="col-12 col-lg-6">
<div class="form-group">
<label for="password"><?= __("Password") ?></label>
<? if (empty($utente["codice"])) {
$rel = "S;8;32;P;check-password;=";
$rel_check = "S;8;32;P";
$disabled = "";
} else { ?>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
<input type="checkbox" id="edit-password" onchange="change_password();"></span>
</div>
</div>
<?
$rel = "N;8;32;P";
$rel_check = "N;8;32;P";
$disabled = "disabled";
}
?>
<input name="user[password]" type="password" class="form-control" id="password" title="<?= __("Password") ?>" rel="<?= $rel ?>" <?= $disabled ?>>
<? if (!empty($utente["codice"])) { ?></div><? } ?>
</div>
<div class="form-group">
<input type="password" class="form-control" <? if (!empty($utente["codice"])) { ?>style="display:none"<? } ?> id="check-password" title="<?= __("Ripeti") ?> <?= __("password") ?>" rel="<?= $rel_check ?>" <?= $disabled ?>>
</div>
<pre id="suggest" class="p-1 bg-success text-white" style="display:none"></pre>
<button class="btn-block btn-sm" onClick="$('#suggest').html(customPassword()).slideDown(); return false;"><?= __("suggerisci") ?></button>
</div>
</div>
</div>
</div>
<? if ($utente["codice"] == $_SESSION["utente"]->codice) { ?>
<div class="card mb-3">
<div class="card-header">
<h3 class="mb-0 font-weight-bold"><?= __("Autenticazione a due fattori") ?></h3>
</div>
<div class="card-body">
<? if (!empty($utente["twoFactor_token"])) { ?>
<div class="alert alert-success text-center">
<span class="fa fa-check-circle fa-2x"></span><br>
<?= __("Attiva") ?>
</div>
<button type="button" class="btn btn-block btn-danger" onClick="eliminaP('<?= $utente["codice"] ?>','profilo/2fa');"><span class="fa fa-times"></span> <?= __("Disattiva autenticazione a due fattori") ?></button>
<? } else { ?>
<div class="alert alert-warning text-center">
<span class="fa fa-exclamation-circle fa-2x"></span><br>
<?= __("Disattiva") ?>
</div>
<button type="button" class="btn btn-block btn-success" onClick="showModalWithURL('/profilo/enable2FA.php');"><span class="fa fa-lock"></span> <?= __("Attiva autenticazione a due fattori") ?></button>
<? } ?>
</div>
</div>
<? } ?>
<div class="card mb-3">
<div class="card-header">
<h3 class="mb-0 font-weight-bold"><?= __("Anagrafica") ?></h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label for="cognome"><?= __("Cognome") ?>*</label>
<input name="user[cognome]" type="text" class="form-control" id="cognome" value="<?= $utente["cognome"] ?>" title="<?= __("Cognome") ?>" rel="S;2;50;A">
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label for="nome"><?= __("Nome") ?>*</label>
<input name="user[nome]" type="text" class="form-control" id="nome" value="<?= $utente["nome"] ?>" title="<?= __("Nome") ?>" rel="S;2;50;A">
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label for="cf"><?= __("codice Fiscale") ?></label>
<input name="user[cf]" type="text" class="form-control" id="cf" value="<?= $utente["cf"] ?>" title="<?= __("codice Fiscale") ?>" rel="N;16;16;CF">
<? if (empty($utente["cf"])) {
alertManager::printWarningCompact(__("Si consiglia di inserire il dato mancante"));
}?>
</div>
</div>
</div>
</div>
</div>
<div class="card mb-3">
<div class="card-header">
<h3 class="mb-0 font-weight-bold"><?= __("Residenza") ?></h3>
</div>
<div class="card-body">
<div class="form-group">
<label for="indirizzo"><?= __("Indirizzo") ?></label>
<input name="user[indirizzo]" type="text" class="form-control" id="indirizzo" value="<?= $utente["indirizzo"] ?>" title="<?= __("Indirizzo") ?>" rel="N;2;255;A">
</div>
<div class="row">
<div class="col-sm-8">
<div class="form-group">
<label for="citta"><?= __("Citta") ?></label>
<input name="user[citta]" class="form-control" id="citta" title="<?= __("citta") ?>" rel="N;1;255;A" value="<?= $utente["citta"] ?>">
</div>
</div>
<div class="form-group col-sm-2">
<label for="provincia"><?= __("Provincia") ?></label>
<input name="user[provincia]" class="form-control" id="provincia" title="<?= __("Provincia") ?>" rel="N;1;255;A" value="<?= $utente["provincia"] ?>">
</div>
<div class="form-group col-sm-2">
<label for="cap"><?= __("CAP") ?></label>
<input name="user[cap]" class="form-control" id="cap" title="<?= __("CAP") ?>" rel="N;1;255;A" value="<?= $utente["cap"] ?>">
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div class="form-group">
<label for="telefono"><?= __("Telefono") ?></label>
<input name="user[telefono]" type="text" class="form-control" id="telefono" value="<?= $utente["telefono"] ?>" title="<?= __("Telefono") ?>" rel="N;2;255;A">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label for="cellulare"><?= __("Cellulare") ?></label>
<input name="user[cellulare]" type="text" class="form-control" id="cellulare" value="<?= $utente["cellulare"] ?>" title="<?= __("Cellulare") ?>" rel="N;2;20;A">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane <?= ($activeTab == "cpv-tab") ? "active" : "" ?>" id="cpv" role="tabpanel" aria-labelledby="cpv-tab">
<div class="card mb-3">
<div class="card-header">
<h3 class="mb-0 font-weight-bold"><?= __("Categorie CPV") ?>*</h3>
</div>
<div class="card-body">
<?
cpvManager::printForm(["cpv"=>$cpvs]);
?>
</div>
</div>
</div>
<?
foreach($formsObjects AS $formID => $formInfo) {
?>
<div class="tab-pane <?= ($activeTab == "form-{$formID}-tab") ? "active" : "" ?>" id="form-<?= $formID ?>" role="tabpanel" aria-labelledby="form-<?= $formID ?>-tab">
<?
if (!empty($formInfo["validation"]) && ($formInfo["validation"][0] != "Errore validazione")) {
?>
<div class="alert alert-danger p-3">
<span class="fa fa-exclamation-triangle"></span> <?= __("Errori di validazione") ?><br>
<?= implode(" - ",$formInfo["validation"]) ?>
</div>
<?
}
$formInfo["manager"]->printForm(true,true);
?>
</div>
<?
}
if (!empty($soaManager)) {
?>
<div class="tab-pane <?= ($activeTab == "soa-tab") ? "active" : "" ?>" id="soa" role="tabpanel" aria-labelledby="soa-tab">
<?
if (!empty($validationSoa) && ($validationSoa[0] != "Errore validazione")) {
?>
<div class="alert alert-danger p-3">
<span class="fa fa-exclamation-triangle"></span> <?= __("Errori di validazione") ?><br>
<?= implode(" - ",$validationSoa) ?>
</div>
<?
}
$soaManager->printForm(true,true);
?>
<script>
function checkSOADelete() {
if ($('.tr-soa').length < 2) {
$(".soa-delete").hide();
} else {
$(".soa-delete").show();
}
}
</script>
<div id="categorie-soa" class="collapse">
<div class="card">
<div class="card-header">
<h3 class="card-title m-0"><?= __("Categorie") ?></h3>
</div>
<div class="card-body p-0">
<table class="table table-striped table-hover">
<thead>
<tr>
<th><?= __("Categoria") ?>*</th>
<th><?= __("Classifica") ?>*</th>
<th></th>
</tr>
</thead>
<tbody id="body-categorie-soa">
<?
$soa = oeManager::getSOA($oe["codice"]);
if (!empty($soa)) {
foreach($soa AS $id => $categoria) {
include(__DIR__."/tr-soa.php");
}
}
?>
</tbody>
</table>
</div>
<div class="card-footer">
<button type="button" id="add-soa" class="btn btn-block btn-info" onclick="aggiungi('/oe/tr-soa.php','#body-categorie-soa');return false;"><span class="fa fa-plus"></span> Aggiungi categoria</button>
</div>
</div>
</div>
<script>
setTimeout(() => {
if (!$(".conditional","#soa").hasClass("collapse")) { $("#categorie-soa").show(); }
$("select","#soa").first().on('change',function() {
if ($(this).val() == "S") {
$("#categorie-soa").slideDown('fast',function() {
$("#body-categorie-soa").html("");
$("#add-soa").trigger('click');
});
} else {
$("#categorie-soa").slideUp('fast',function() {
$("#body-categorie-soa").html("");
});
}
});
}, 500);
</script>
<div id="fatturati-soa">
<div class="card mt-2">
<div class="card-header">
<h3 class="card-title m-0"><?= __("Fatturati") ?></h3>
<small class="text-danger"><?= __("In assenza di attestazioni SOA è possibile inserire il fatturato degli ultimi 5 anni suddiviso per lavorazioni.
Attenzione: Il dato potrà essere utilizzato come criterio di selezione per l'invito a procedure di gara.");
?></small>
</div>
<div id="body-fatturato-soa" class="card-body">
<?
$fatturatoSoa = oeManager::getFatturatiSOA($oe["codice"]);
if (!empty($fatturatoSoa)) {
$id = 0;
foreach($fatturatoSoa AS $codice_categoria => $fatturati) {
$id++;
include(__DIR__."/fatturato-soa.php");
}
}
?>
</div>
<div class="card-footer">
<button type="button" id="add-soa" class="btn btn-block btn-info" onclick="aggiungi('/oe/fatturato-soa.php','#body-fatturato-soa');return false;"><span class="fa fa-plus"></span> Aggiungi categoria</button>
</div>
</div>
</div>
</div>
<? } ?>
<div class="tab-pane <?= ($activeTab == "servizi-tecnici-tab") ? "active" : "" ?>" id="servizi-tecnici" role="tabpanel" aria-labelledby="servizi-tecnici-tab">
<div class="card">
<div class="card-header">
<h3 class="card-title m-0"><?= __("Servizi Tecnici") ?></h3>
</div>
<div class="card-body" id="body-servizi-tecnici">
<?
if (!empty($serviziTecnici)) {
foreach($serviziTecnici AS $id => $servizio) {
include(__DIR__."/servizio-tecnico.php");
}
}
?>
</div>
<div class="card-footer">
<button type="button" id="add-soa" class="btn btn-block btn-info" onclick="aggiungi('/oe/servizio-tecnico.php','#body-servizi-tecnici');return false;"><span class="fa fa-plus"></span> Aggiungi nuovo servizio</button>
</div>
</div>
</div>
</div>
</div>
</div>
<button type="submit" class="btn btn-lg btn-block btn-primary"><span class="fa fa-save"></span> <?= __("Salva") ?></button>
</div>
</form>
<?
if ($utente["codice"] == $_SESSION["utente"]->codice && $_SESSION["ente"]->checkSPID()) {
?>
<div class="text-right py-3 px-5">
<?
if (!empty($utente["spidCode"])) {
?>
<button type="button" class="btn btn-block btn-danger" onClick="eliminaP('<?= $utente["codice"] ?>','profilo/spid');"><span class="fa fa-times"></span> <?= __("Disattiva autenticazione tramite SPID") ?></button>
<?
} else {
?>
<?= __("Effettua l'accesso con le tue credenziali SPID per collegare il tuo account e utilizzarle nei prossimi accessi alla piattaforma") ?>
<div class="mt-1">
<? SpidSA::printLoginButton(); ?>
</div>
<?
}
?>
</div>
<?
}
}
}
?>