';
// Stati intervento
$stati_sessione = session_get('dashboard.idstatiintervento', []);
$stati_intervento = $dbo->fetchArray('SELECT idstatointervento AS id, descrizione, colore FROM in_statiintervento WHERE deleted_at IS NULL ORDER BY descrizione ASC');
foreach ($stati_intervento as $stato) {
$attr = '';
if (in_array("'".$stato['id']."'", $stati_sessione)) {
$attr = 'checked="checked"';
}
echo '
';
}
echo '
';
// Tipi intervento
$tipi_sessione = session_get('dashboard.idtipiintervento', []);
$tipi_intervento = $dbo->fetchArray('SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC');
foreach ($tipi_intervento as $tipo) {
$attr = '';
if (in_array("'".$tipo['id']."'", $tipi_sessione)) {
$attr = 'checked="checked"';
}
echo '
';
}
echo '
';
$tecnici_sessione = session_get('dashboard.idtecnici', []);
$tecnici_disponibili = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica
LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id
WHERE an_anagrafiche.deleted_at IS NULL AND an_tipianagrafiche.descrizione='Tecnico' ".Modules::getAdditionalsQuery('Interventi').' GROUP BY an_anagrafiche.idanagrafica ORDER BY ragione_sociale ASC');
foreach ($tecnici_disponibili as $tecnico) {
$attr = '';
if (in_array("'".$tecnico['id']."'", $tecnici_sessione)) {
$attr = 'checked="checked"';
}
echo '
';
}
echo '
';
// Zone
$zone_sessione = session_get('dashboard.idzone', []);
$zone = $dbo->fetchArray('(SELECT 0 AS ordine, \'0\' AS id, \'Nessuna zona\' AS descrizione) UNION (SELECT 1 AS ordine, id, descrizione FROM an_zone) ORDER BY ordine, descrizione ASC');
foreach ($zone as $zona) {
$attr = '';
if (in_array("'".$zona['id']."'", $zone_sessione)) {
$attr = 'checked="checked"';
}
echo '
';
}
echo '
';
$solo_promemoria_assegnati = setting('Mostra promemoria attività ai soli Tecnici assegnati');
$id_tecnico = null;
if ($user['gruppo'] == 'Tecnici' && !empty($user['idanagrafica'])) {
$id_tecnico = $user['idanagrafica'];
}
$query_da_programmare = 'SELECT data_richiesta AS data FROM co_promemoria
INNER JOIN co_contratti ON co_promemoria.idcontratto = co_contratti.id
INNER JOIN an_anagrafiche ON co_contratti.idanagrafica = an_anagrafiche.idanagrafica
WHERE
idcontratto IN (SELECT id FROM co_contratti WHERE idstato IN (SELECT id FROM co_staticontratti WHERE is_pianificabile = 1))
AND idintervento IS NULL
UNION SELECT IF(data_scadenza IS NULL, data_richiesta, data_scadenza) AS data FROM in_interventi
INNER JOIN an_anagrafiche ON in_interventi.idanagrafica = an_anagrafiche.idanagrafica';
if (!empty($id_tecnico) && !empty($solo_promemoria_assegnati)) {
$query_da_programmare .= '
INNER JOIN in_interventi_tecnici_assegnati ON in_interventi.id = in_interventi_tecnici_assegnati.id_intervento AND id_tecnico = '.prepare($id_tecnico);
}
$query_da_programmare .= '
WHERE (SELECT COUNT(*) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id) = 0';
$risultati_da_programmare = $dbo->fetchArray($query_da_programmare);
if (!empty($risultati_da_programmare)) {
echo '
';
}
echo '
';
if (!empty($risultati_da_programmare)) {
echo '
'.tr('Promemoria da pianificare').'
';
// Controllo pianificazioni mesi precedenti
$query_mesi_precenti = 'SELECT co_promemoria.id FROM co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND idintervento IS NULL AND DATE_ADD(co_promemoria.data_richiesta, INTERVAL 1 DAY) <= NOW()
UNION SELECT in_interventi.id FROM in_interventi
INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica';
if (!empty($id_tecnico) && !empty($solo_promemoria_assegnati)) {
$query_mesi_precenti .= '
INNER JOIN in_interventi_tecnici_assegnati ON in_interventi.id = in_interventi_tecnici_assegnati.id_intervento AND id_tecnico = '.prepare($id_tecnico);
}
$query_mesi_precenti .= '
WHERE (SELECT COUNT(*) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id) = 0 AND DATE_ADD(IF(in_interventi.data_scadenza IS NULL, in_interventi.data_richiesta, in_interventi.data_scadenza), INTERVAL 1 DAY) <= NOW()';
$numero_mesi_precenti = $dbo->fetchNum($query_mesi_precenti);
if ($numero_mesi_precenti > 0) {
echo '
'.tr('Ci sono _NUM_ attività scadute', [
'_NUM_' => $numero_mesi_precenti,
]).'.
';
}
// Aggiunta della data corrente per visualizzare il mese corrente
$risultati_da_programmare[] = [
'data' => date('Y-m-d H:i:s'),
];
$mesi = collect($risultati_da_programmare)
->unique(function ($item) {
$data = new Carbon\Carbon($item['data']);
return $data->format('m-Y');
})
->sortBy('data');
echo '
';
}
$vista = setting('Vista dashboard');
if ($vista == 'mese') {
$def = 'month';
} elseif ($vista == 'giorno') {
$def = 'agendaDay';
} else {
$def = 'agendaWeek';
}
$modulo_interventi = Modules::get('Interventi');
echo '
';
// Prima selezione globale per tutti i filtri
if (!isset($_SESSION['dashboard']['idtecnici'])) {
$_SESSION['dashboard']['idtecnici'] = ["'-1'"];
echo '
';
}
if (!isset($_SESSION['dashboard']['idstatiintervento'])) {
$_SESSION['dashboard']['idstatiintervento'] = ["'-1'"];
echo '
';
}
if (!isset($_SESSION['dashboard']['idtipiintervento'])) {
$_SESSION['dashboard']['idtipiintervento'] = ["'-1'"];
echo '
';
}
if (!isset($_SESSION['dashboard']['idzone'])) {
$_SESSION['dashboard']['idzone'] = ["'-1'"];
echo '
';
}