2017-08-04 16:28:16 +02:00
< ? php
include_once __DIR__ . '/../../core.php' ;
// Impostazione filtri di default a tutte le selezioni la prima volta
if ( ! isset ( $_SESSION [ 'dashboard' ][ 'idtecnici' ])) {
2018-07-17 08:05:19 +02:00
$rs = $dbo -> fetchArray ( " SELECT an_anagrafiche.idanagrafica AS id 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 WHERE deleted_at IS NULL AND descrizione='Tecnico' " );
2017-08-04 16:28:16 +02:00
$_SESSION [ 'dashboard' ][ 'idtecnici' ] = [ " '-1' " ];
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$_SESSION [ 'dashboard' ][ 'idtecnici' ][] = " ' " . $rs [ $i ][ 'id' ] . " ' " ;
}
}
if ( ! isset ( $_SESSION [ 'dashboard' ][ 'idstatiintervento' ])) {
2018-07-17 08:05:19 +02:00
$rs = $dbo -> fetchArray ( 'SELECT idstatointervento AS id, descrizione FROM in_statiintervento WHERE deleted_at IS NULL' );
2017-08-04 16:28:16 +02:00
$_SESSION [ 'dashboard' ][ 'idstatiintervento' ] = [ " '-1' " ];
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$_SESSION [ 'dashboard' ][ 'idstatiintervento' ][] = " ' " . $rs [ $i ][ 'id' ] . " ' " ;
}
}
if ( ! isset ( $_SESSION [ 'dashboard' ][ 'idtipiintervento' ])) {
$rs = $dbo -> fetchArray ( 'SELECT idtipointervento AS id, descrizione FROM in_tipiintervento' );
$_SESSION [ 'dashboard' ][ 'idtipiintervento' ] = [ " '-1' " ];
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$_SESSION [ 'dashboard' ][ 'idtipiintervento' ][] = " ' " . $rs [ $i ][ 'id' ] . " ' " ;
}
}
if ( ! isset ( $_SESSION [ 'dashboard' ][ 'idzone' ])) {
$rs = $dbo -> fetchArray ( 'SELECT id, descrizione FROM an_zone' );
$_SESSION [ 'dashboard' ][ 'idzone' ] = [ " '-1' " ];
2018-03-02 20:34:32 +01:00
2018-05-11 10:22:38 +02:00
// "Nessuna zona" di default
2018-02-20 14:50:09 +01:00
$_SESSION [ 'dashboard' ][ 'idzone' ][] = " '0' " ;
2017-08-04 16:28:16 +02:00
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$_SESSION [ 'dashboard' ][ 'idzone' ][] = " ' " . $rs [ $i ][ 'id' ] . " ' " ;
}
}
// Stati intervento
$checks = '' ;
$count = 0 ;
$total = 0 ;
2018-07-17 08:05:19 +02:00
$rs = $dbo -> fetchArray ( 'SELECT idstatointervento AS id, descrizione, colore FROM in_statiintervento WHERE deleted_at IS NULL ORDER BY descrizione ASC' );
2017-08-04 16:28:16 +02:00
$total = count ( $rs );
$allchecksstati = '' ;
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$attr = '' ;
foreach ( $_SESSION [ 'dashboard' ][ 'idstatiintervento' ] as $idx => $val ) {
if ( $val == " ' " . $rs [ $i ][ 'id' ] . " ' " ) {
$attr = 'checked="checked"' ;
++ $count ;
}
}
2018-02-18 19:53:23 +01:00
2018-06-23 15:41:32 +02:00
$checks .= " <li><input type='checkbox' id='idstato_ " . $rs [ $i ][ 'id' ] . " ' value= \" " . $rs [ $i ][ 'id' ] . '" ' . $attr . " onclick= \" $ .when ( session_set_array( 'dashboard,idstatiintervento', ' " . $rs [ $i ][ 'id' ] . " ' ) ).promise().then(function( ) { $ ('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idstati_count', $ ('#idstati_ul').find('input:checked').length ); \" > <label for='idstato_ " . $rs [ $i ][ 'id' ] . " '> <span class='badge' style= \" color: " . color_inverse ( $rs [ $i ][ 'colore' ]) . '; background:' . $rs [ $i ][ 'colore' ] . ';">' . $rs [ $i ][ 'descrizione' ] . " </span></label></li> \n " ;
2017-08-04 16:28:16 +02:00
$allchecksstati .= " session_set_array( 'dashboard,idstatiintervento', ' " . $rs [ $i ][ 'id' ] . " ', 0 ); " ;
}
if ( $count == $total ) {
$class = 'btn-success' ;
} elseif ( $count == 0 ) {
$class = 'btn-danger' ;
} else {
$class = 'btn-warning' ;
}
if ( $total == 0 ) {
$class = 'btn-primary disabled' ;
}
?>
<!-- Filtri -->
< div class = " row " >
<!-- STATI INTERVENTO -->
< div class = " dropdown col-md-3 " >
2019-12-05 19:38:00 +01:00
< a class = " btn <?php echo $class ; ?> btn-block " data - toggle = " dropdown " href = " javascript:; " id = " idstati_count " >< i class = " fa fa-filter " ></ i > < ? php echo tr ( 'Stati attività' ); ?> (<?php echo $count.'/'.$total; ?>) <i class="caret"></i></a>
2017-08-04 16:28:16 +02:00
< ul class = " dropdown-menu " role = " menu " id = " idstati_ul " >
2018-02-18 19:53:23 +01:00
< ? php echo $checks ; ?>
2017-08-04 16:28:16 +02:00
< div class = " btn-group pull-right " >
2017-09-04 12:02:29 +02:00
< button id = " selectallstati " onclick = " <?php echo $allchecksstati ; ?> " class = " btn btn-primary btn-xs " type = " button " >< ? php echo tr ( 'Tutti' ); ?> </button>
2017-08-04 16:28:16 +02:00
< button id = " deselectallstati " class = " btn btn-danger btn-xs " type = " button " >< i class = " fa fa-times " ></ i ></ button >
</ div >
</ ul >
</ div >
< ? php
// Tipi intervento
$checks = '' ;
$count = 0 ;
$total = 0 ;
$rs = $dbo -> fetchArray ( 'SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC' );
$total = count ( $rs );
$allcheckstipi = '' ;
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$attr = '' ;
foreach ( $_SESSION [ 'dashboard' ][ 'idtipiintervento' ] as $idx => $val ) {
if ( $val == " ' " . $rs [ $i ][ 'id' ] . " ' " ) {
$attr = 'checked="checked"' ;
++ $count ;
}
}
2018-02-18 19:53:23 +01:00
2018-02-16 18:27:15 +01:00
$checks .= " <li><input type='checkbox' id='idtipo_ " . $rs [ $i ][ 'id' ] . " ' value= \" " . $rs [ $i ][ 'id' ] . '" ' . $attr . " onclick= \" $ .when ( session_set_array( 'dashboard,idtipiintervento', ' " . $rs [ $i ][ 'id' ] . " ' ) ).promise().then(function( ) { $ ('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtipi_count', $ ('#idtipi_ul').find('input:checked').length ); \" > <label for='idtipo_ " . $rs [ $i ][ 'id' ] . " '> " . $rs [ $i ][ 'descrizione' ] . " </label></li> \n " ;
2017-08-04 16:28:16 +02:00
$allcheckstipi .= " session_set_array( 'dashboard,idtipiintervento', ' " . $rs [ $i ][ 'id' ] . " ', 0 ); " ;
}
if ( $count == $total ) {
$class = 'btn-success' ;
} elseif ( $count == 0 ) {
$class = 'btn-danger' ;
} else {
$class = 'btn-warning' ;
}
if ( $total == 0 ) {
$class = 'btn-primary disabled' ;
}
?>
<!-- TIPI DI INTERVENTO -->
< div class = " dropdown col-md-3 " >
2019-12-05 19:38:00 +01:00
< a class = " btn <?php echo $class ; ?> btn-block " data - toggle = " dropdown " href = " javascript:; " id = " idtipi_count " >< i class = " fa fa-filter " ></ i > < ? php echo tr ( 'Tipi attività' ); ?> (<?php echo $count.'/'.$total; ?>) <i class="caret"></i></a>
2017-08-04 16:28:16 +02:00
< ul class = " dropdown-menu " role = " menu " id = " idtipi_ul " >
2018-02-18 19:53:23 +01:00
< ? php echo $checks ; ?>
2017-08-04 16:28:16 +02:00
< div class = " btn-group pull-right " >
2017-09-04 12:02:29 +02:00
< button id = " selectalltipi " onclick = " <?php echo $allcheckstipi ; ?> " class = " btn btn-primary btn-xs " type = " button " >< ? php echo tr ( 'Tutti' ); ?> </button>
2017-08-04 16:28:16 +02:00
< button id = " deselectalltipi " class = " btn btn-danger btn-xs " type = " button " >< i class = " fa fa-times " ></ i ></ button >
</ div >
</ ul >
</ div >
< ? php
// Tecnici
$checks = '' ;
$count = 0 ;
$total = 0 ;
$totale_tecnici = 0 ; // conteggia tecnici eliminati e non
2018-06-07 19:15:17 +02:00
$rs = $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
2018-02-20 16:46:23 +01:00
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
2018-07-17 08:05:19 +02:00
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');
2017-08-04 16:28:16 +02:00
$total = count ( $rs );
$totale_tecnici += $total ;
$allchecktecnici = '' ;
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$attr = '' ;
foreach ( $_SESSION [ 'dashboard' ][ 'idtecnici' ] as $idx => $val ) {
if ( $val == " ' " . $rs [ $i ][ 'id' ] . " ' " ) {
$attr = 'checked="checked"' ;
++ $count ;
}
}
2018-06-23 15:41:32 +02:00
$checks .= " <li><input type='checkbox' id='tech_ " . $rs [ $i ][ 'id' ] . " ' value= \" " . $rs [ $i ][ 'id' ] . '" ' . $attr . " onclick= \" $ .when ( session_set_array( 'dashboard,idtecnici', ' " . $rs [ $i ][ 'id' ] . " ' ) ).promise().then(function( ) { $ ('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtecnici_count', $ ('#idtecnici_ul').find('input:checked').length ); \" > <label for='tech_ " . $rs [ $i ][ 'id' ] . " '><span class='badge' style= \" color:#000; background:transparent; border: 1px solid " . $rs [ $i ][ 'colore' ] . ';">' . $rs [ $i ][ 'ragione_sociale' ] . " </span></label></li> \n " ;
2017-08-04 16:28:16 +02:00
$allchecktecnici .= " session_set_array( 'dashboard,idtecnici', ' " . $rs [ $i ][ 'id' ] . " ', 0 ); " ;
}
2018-06-06 00:00:22 +02:00
// TECNICI ELIMINATI CON ALMENO 1 INTERVENTO
2018-07-17 08:05:19 +02:00
$rs = $dbo -> fetchArray ( " SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale 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 INNER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica WHERE deleted_at IS NOT NULL AND descrizione='Tecnico' GROUP BY an_anagrafiche.idanagrafica ORDER BY ragione_sociale ASC " );
2017-08-04 16:28:16 +02:00
$total = count ( $rs );
$totale_tecnici += $total ;
if ( $total > 0 ) {
$checks .= " <li><hr>Tecnici eliminati:</li> \n " ;
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$attr = '' ;
foreach ( $_SESSION [ 'dashboard' ][ 'idtecnici' ] as $idx => $val ) {
if ( $val == " ' " . $rs [ $i ][ 'id' ] . " ' " ) {
$attr = 'checked="checked"' ;
++ $count ;
}
}
2018-02-18 19:53:23 +01:00
2018-02-16 18:27:15 +01:00
$checks .= " <li><input type='checkbox' id='tech_ " . $rs [ $i ][ 'id' ] . " ' value= \" " . $rs [ $i ][ 'id' ] . '" ' . $attr . " onclick= \" $ .when ( session_set_array( 'dashboard,idtecnici', ' " . $rs [ $i ][ 'id' ] . " ' ) ).promise().then(function( ) { $ ('#calendar').fullCalendar('refetchEvents'); }); update_counter( 'idtecnici_count', $ ('#idtecnici_ul').find('input:checked').length ); \" > <label for='tech_ " . $rs [ $i ][ 'id' ] . " '> " . $rs [ $i ][ 'ragione_sociale' ] . " </label></li> \n " ;
2017-08-04 16:28:16 +02:00
$allchecktecnici .= " session_set_array( 'dashboard,idtecnici', ' " . $rs [ $i ][ 'id' ] . " ', 0 ); " ;
} // end for
} // end if
if ( $count == $totale_tecnici ) {
$class = 'btn-success' ;
} elseif ( $count == 0 ) {
$class = 'btn-danger' ;
} else {
$class = 'btn-warning' ;
}
if ( $totale_tecnici == 0 ) {
$class = 'btn-primary disabled' ;
}
?>
<!-- TECNICI -->
< div class = " dropdown col-md-3 " >
2018-02-18 19:53:23 +01:00
< a class = " btn <?php echo $class ; ?> btn-block " data - toggle = " dropdown " href = " javascript:; " id = " idtecnici_count " >< i class = " fa fa-filter " ></ i > < ? php echo tr ( 'Tecnici' ); ?> (<?php echo $count.'/'.$totale_tecnici; ?>) <i class="caret"></i></a>
2017-08-04 16:28:16 +02:00
< ul class = " dropdown-menu " role = " menu " id = " idtecnici_ul " >
2018-02-18 19:53:23 +01:00
< ? php echo $checks ; ?>
2017-08-04 16:28:16 +02:00
< div class = " btn-group pull-right " >
2017-09-04 12:02:29 +02:00
< button id = " selectalltecnici " onclick = " <?php echo $allchecktecnici ; ?> " class = " btn btn-primary btn-xs " type = " button " >< ? php echo tr ( 'Tutti' ); ?> </button>
2017-08-04 16:28:16 +02:00
< button id = " deselectalltecnici " class = " btn btn-danger btn-xs " type = " button " >< i class = " fa fa-times " ></ i ></ button >
</ div >
</ ul >
</ div >
< ? php
// Zone
2018-06-23 15:41:32 +02:00
$allcheckzone = null ;
2017-08-04 16:28:16 +02:00
$checks = '' ;
$count = 0 ;
$total = 0 ;
2018-02-20 14:57:24 +01:00
$rs = $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' );
2017-08-04 16:28:16 +02:00
$total = count ( $rs );
for ( $i = 0 ; $i < count ( $rs ); ++ $i ) {
$attr = '' ;
foreach ( $_SESSION [ 'dashboard' ][ 'idzone' ] as $idx => $val ) {
if ( $val == " ' " . $rs [ $i ][ 'id' ] . " ' " ) {
$attr = 'checked="checked"' ;
++ $count ;
}
}
2018-02-16 18:15:36 +01:00
$checks .= " <li><input type='checkbox' id='idzone_ " . $rs [ $i ][ 'id' ] . " ' value= \" " . $rs [ $i ][ 'id' ] . '" ' . $attr . " onclick= \" $ .when ( session_set_array( 'dashboard,idzone', ' " . $rs [ $i ][ 'id' ] . " ' ) ).promise().then(function( ) { $ ('#calendar').fullCalendar('refetchEvents'); update_counter( 'idzone_count', $ ('#idzone_ul').find('input:checked').length ); }); \" > <label for='idzone_ " . $rs [ $i ][ 'id' ] . " '> " . $rs [ $i ][ 'descrizione' ] . " </label></li> \n " ;
2017-08-04 16:28:16 +02:00
2018-06-23 15:41:32 +02:00
$allcheckzone = " session_set_array( 'dashboard,idzone', ' " . $rs [ $i ][ 'id' ] . " ', 0 ); " ;
2017-08-04 16:28:16 +02:00
}
if ( $count == $total ) {
$class = 'btn-success' ;
} elseif ( $count == 0 ) {
$class = 'btn-danger' ;
} else {
$class = 'btn-warning' ;
}
if ( $total == 0 ) {
$class = 'btn-primary disabled' ;
}
?>
<!-- ZONE -->
< div class = " dropdown col-md-3 " >
2018-02-18 19:53:23 +01:00
< a class = " btn <?php echo $class ; ?> btn-block " data - toggle = " dropdown " href = " javascript:; " id = " idzone_count " >< i class = " fa fa-filter " ></ i > < ? php echo tr ( 'Zone' ); ?> (<?php echo $count.'/'.$total; ?>) <i class="caret"></i></a>
2017-08-04 16:28:16 +02:00
< ul class = " dropdown-menu " role = " menu " id = " idzone_ul " >
2018-02-18 19:53:23 +01:00
< ? php echo $checks ; ?>
2017-08-04 16:28:16 +02:00
< div class = " btn-group pull-right " >
2017-09-04 12:02:29 +02:00
< button id = " selectallzone " onclick = " <?php echo $allcheckzone ; ?> " class = " btn btn-primary btn-xs " type = " button " >< ? php echo tr ( 'Tutti' ); ?> </button>
2017-08-04 16:28:16 +02:00
< button id = " deselectallzone " class = " btn btn-danger btn-xs " type = " button " >< i class = " fa fa-times " ></ i ></ button >
</ div >
</ ul >
</ div >
</ div >
< br >
< ? php
2019-03-22 11:35:26 +01:00
$qp = ' SELECT MONTH ( data_richiesta ) AS mese , YEAR ( data_richiesta ) AS anno 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
2018-09-20 09:21:34 +02:00
2019-03-22 11:35:26 +01:00
UNION SELECT MONTH ( data_scadenza ) AS mese , YEAR ( data_scadenza ) AS anno FROM ( co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio . 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
2018-09-20 09:21:34 +02:00
2019-12-09 16:44:07 +01:00
UNION SELECT MONTH ( IF ( data_scadenza IS NULL , data_richiesta , data_scadenza )) AS mese , YEAR ( IF ( data_scadenza IS NULL , data_richiesta , data_scadenza )) AS anno FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi . idanagrafica = an_anagrafiche . idanagrafica WHERE ( SELECT COUNT ( * ) FROM in_interventi_tecnici WHERE in_interventi_tecnici . idintervento = in_interventi . id ) = 0 ORDER BY anno , mese ' ;
2017-08-04 16:28:16 +02:00
$rsp = $dbo -> fetchArray ( $qp );
2017-08-31 10:09:06 +02:00
if ( ! empty ( $rsp )) {
2017-08-04 16:28:16 +02:00
echo '
< div class = " row " >
2018-02-20 16:46:23 +01:00
< div class = " col-md-10 " > ' ;
2017-08-04 16:28:16 +02:00
}
echo '
< div id = " calendar " ></ div > ' ;
2017-08-31 10:09:06 +02:00
if ( ! empty ( $rsp )) {
2017-08-04 16:28:16 +02:00
echo '
</ div >
< div id = " external-events " class = " hidden-xs hidden-sm col-md-2 " >
2018-10-23 12:50:02 +02:00
< h4 > '.tr(' Promemoria da pianificare ').' </ h4 > ' ;
2018-05-11 10:22:38 +02:00
2018-06-06 00:00:22 +02:00
// Controllo pianificazioni mesi precedenti
2019-03-22 11:35:26 +01:00
$qp_old = ' 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 ()
2018-09-20 09:21:34 +02:00
2019-03-22 11:35:26 +01:00
UNION SELECT co_ordiniservizio . id FROM co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio . idcontratto = co_contratti . id WHERE idstato IN ( SELECT id FROM co_staticontratti WHERE is_pianificabile = 1 ) AND idintervento IS NULL AND DATE_ADD ( co_ordiniservizio . data_scadenza , INTERVAL 1 DAY ) <= NOW ()
2018-09-20 09:21:34 +02:00
2019-12-09 16:44:07 +01:00
UNION SELECT in_interventi . id FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi . idanagrafica = an_anagrafiche . idanagrafica 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 () ' ;
2018-06-06 00:00:22 +02:00
$rsp_old = $dbo -> fetchNum ( $qp_old );
2018-05-11 10:22:38 +02:00
2018-06-06 00:00:22 +02:00
if ( $rsp_old > 0 ) {
2019-05-24 15:43:51 +02:00
echo '<div class="alert alert-warning alert-dismissible text-sm" role="alert"><i class="fa fa-exclamation-triangle"></i><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> ' . tr ( 'Ci sono ' . $rsp_old . ' attività scadute.' ) . '</div>' ;
2018-03-22 18:34:33 +01:00
}
2019-12-13 10:08:17 +01:00
2018-09-20 16:42:35 +02:00
$mesi = months ();
2018-05-11 10:22:38 +02:00
// Creo un array con tutti i mesi che contengono interventi
$mesi_interventi = [];
for ( $i = 0 ; $i < sizeof ( $rsp ); ++ $i ) {
2018-09-20 16:42:35 +02:00
$mese_n = $rsp [ $i ][ 'mese' ] . $rsp [ $i ][ 'anno' ];
$mese_t = $mesi [ intval ( $rsp [ $i ][ 'mese' ])] . ' ' . $rsp [ $i ][ 'anno' ];
2018-03-22 18:34:33 +01:00
$mesi_interventi [ $mese_n ] = $mese_t ;
}
2018-05-11 10:22:38 +02:00
// Aggiungo anche il mese corrente
$mesi_interventi [ date ( 'm' ) . date ( 'Y' )] = $mesi [ intval ( date ( 'm' ))] . ' ' . date ( 'Y' );
// Rimuovo i mesi doppi
array_unique ( $mesi_interventi );
2018-10-24 16:49:02 +02:00
// Ordino l'array per anno
2018-10-25 16:57:39 +02:00
foreach ( $mesi_interventi as $key => & $data ) {
ksort ( $data );
}
2018-05-11 10:22:38 +02:00
2018-03-22 18:34:33 +01:00
echo '<select class="superselect" id="select-intreventi-pianificare">' ;
2018-05-11 10:22:38 +02:00
foreach ( $mesi_interventi as $key => $mese_intervento ) {
2018-03-22 18:34:33 +01:00
echo '<option value="' . $key . '">' . $mese_intervento . '</option>' ;
2017-08-31 10:09:06 +02:00
}
2018-05-11 10:22:38 +02:00
2018-03-22 18:34:33 +01:00
echo '</select>' ;
2018-05-11 10:22:38 +02:00
2018-03-22 18:34:33 +01:00
echo '<div id="interventi-pianificare"></div>' ;
2017-08-04 16:28:16 +02:00
echo '
</ div >
</ div > ' ;
}
2018-07-08 18:11:17 +02:00
$vista = setting ( 'Vista dashboard' );
2017-08-04 16:28:16 +02:00
if ( $vista == 'mese' ) {
$def = 'month' ;
} elseif ( $vista == 'giorno' ) {
$def = 'agendaDay' ;
} else {
$def = 'agendaWeek' ;
}
?>
< script type = " text/javascript " >
2019-07-29 13:16:55 +02:00
2019-05-13 19:21:46 +02:00
function load_interventi_da_pianificare ( mese ){
2019-07-29 13:16:55 +02:00
2019-05-13 19:21:46 +02:00
if ( mese == undefined ){
// Seleziono il mese corrente per gli interventi da pianificare
var date = new Date ();
var mese ;
date . setDate ( date . getDate ());
//Note: January is 0, February is 1, and so on.
mese = ( '0' + ( date . getMonth () + 1 )) . slice ( - 2 ) + date . getFullYear ();
$ ( '#select-intreventi-pianificare option[value=' + mese + ']' ) . attr ( 'selected' , 'selected' ) . trigger ( 'change' );
}
2019-07-29 13:16:55 +02:00
2019-05-13 19:21:46 +02:00
$ ( '#interventi-pianificare' ) . html ( '<center><br><br><i class=\'fa fa-refresh fa-spin fa-2x fa-fw\'></i></center>' );
$ . get ( '<?php echo $rootdir; ?>/modules/dashboard/actions.php' , { op : 'load_intreventi' , mese : mese }, function ( data ){
2019-07-29 13:16:55 +02:00
2019-05-13 19:21:46 +02:00
})
. done ( function ( data ) {
$ ( '#interventi-pianificare' ) . html ( data );
$ ( '#external-events .fc-event' ) . each ( function () {
2018-03-22 18:34:33 +01:00
$ ( this ) . draggable ({
zIndex : 999 ,
revert : true ,
revertDuration : 0
});
});
2019-07-29 13:16:55 +02:00
2019-05-13 19:21:46 +02:00
});
2019-07-29 13:16:55 +02:00
2019-05-13 19:21:46 +02:00
}
$ ( '#select-intreventi-pianificare' ) . change ( function (){
var mese = $ ( this ) . val ();
load_interventi_da_pianificare ( mese );
2018-03-22 18:34:33 +01:00
});
2017-08-04 16:28:16 +02:00
$ ( document ) . ready ( function () {
2019-07-29 13:16:55 +02:00
2019-05-13 19:21:46 +02:00
load_interventi_da_pianificare ();
2018-05-11 10:22:38 +02:00
2017-08-04 16:28:16 +02:00
// Comandi seleziona tutti
$ ( '#selectallstati' ) . click ( function ( event ) {
2018-02-20 16:46:23 +01:00
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function ( i ) { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = true ;
2018-02-16 18:27:15 +01:00
$ . when ( session_set_array ( 'dashboard,idstatiintervento' , this . value , 0 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
2018-02-20 16:46:23 +01:00
2018-02-16 18:15:36 +01:00
i ++ ;
update_counter ( 'idstati_count' , i );
2017-08-04 16:28:16 +02:00
});
});
$ ( '#selectalltipi' ) . click ( function ( event ) {
2018-02-20 16:46:23 +01:00
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function ( i ) { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = true ;
2018-02-16 18:27:15 +01:00
$ . when ( session_set_array ( 'dashboard,idtipiintervento' , this . value , 0 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
i ++ ;
update_counter ( 'idtipi_count' , i );
2018-02-20 16:46:23 +01:00
});
2017-08-04 16:28:16 +02:00
});
$ ( '#selectalltecnici' ) . click ( function ( event ) {
2018-02-20 16:46:23 +01:00
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function ( i ) { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = true ;
2018-02-20 16:46:23 +01:00
$ . when ( session_set_array ( 'dashboard,idtecnici' , this . value , 0 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
i ++ ;
update_counter ( 'idtecnici_count' , i );
2017-08-04 16:28:16 +02:00
});
2018-02-20 16:46:23 +01:00
2017-08-04 16:28:16 +02:00
});
$ ( '#selectallzone' ) . click ( function ( event ) {
2018-02-20 16:46:23 +01:00
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function ( i ) { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = true ;
2019-05-24 16:31:00 +02:00
$ . when ( session_set_array ( 'dashboard,idzone' , this . value , 0 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
2018-02-20 16:46:23 +01:00
2018-02-16 18:15:36 +01:00
i ++
update_counter ( 'idzone_count' , i );
2017-08-04 16:28:16 +02:00
2018-02-16 18:15:36 +01:00
});
2018-02-20 16:46:23 +01:00
2017-08-04 16:28:16 +02:00
});
// Comandi deseleziona tutti
$ ( '#deselectallstati' ) . click ( function ( event ) {
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function () { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = false ;
2019-05-24 16:31:00 +02:00
$ . when ( session_set_array ( 'dashboard,idstatiintervento' , this . value , 1 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
2018-02-20 16:46:23 +01:00
2018-02-16 18:15:36 +01:00
update_counter ( 'idstati_count' , 0 );
});
2018-02-20 16:46:23 +01:00
2017-08-04 16:28:16 +02:00
});
$ ( '#deselectalltipi' ) . click ( function ( event ) {
2018-02-20 16:46:23 +01:00
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function () { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = false ;
2019-05-24 16:31:00 +02:00
$ . when ( session_set_array ( 'dashboard,idtipiintervento' , this . value , 1 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
2018-02-20 16:46:23 +01:00
2018-02-16 18:15:36 +01:00
update_counter ( 'idtipi_count' , 0 );
2017-08-04 16:28:16 +02:00
2018-02-16 18:15:36 +01:00
});
2018-02-20 16:46:23 +01:00
2017-08-04 16:28:16 +02:00
});
$ ( '#deselectalltecnici' ) . click ( function ( event ) {
2018-02-20 16:46:23 +01:00
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function () { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = false ;
2019-05-24 16:31:00 +02:00
$ . when ( session_set_array ( 'dashboard,idtecnici' , this . value , 1 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
2018-02-20 16:46:23 +01:00
2018-02-16 18:15:36 +01:00
update_counter ( 'idtecnici_count' , 0 );
2017-08-04 16:28:16 +02:00
});
});
$ ( '#deselectallzone' ) . click ( function ( event ) {
2018-02-20 16:46:23 +01:00
2018-05-11 10:22:38 +02:00
$ ( this ) . parent () . parent () . find ( 'li input[type=checkbox]' ) . each ( function () { // loop through each checkbox
2018-02-16 18:15:36 +01:00
this . checked = false ;
2018-02-20 16:46:23 +01:00
$ . when ( session_set_array ( 'dashboard,idzone' , this . value , 1 )) . promise () . then ( function () {
2018-02-16 18:15:36 +01:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
update_counter ( 'idzone_count' , 0 );
2017-08-04 16:28:16 +02:00
});
});
// Creazione del calendario
create_calendar ();
2018-05-11 10:22:38 +02:00
// Data di default
2018-04-16 17:49:09 +02:00
$ ( '.fc-prev-button, .fc-next-button, .fc-today-button' ) . click ( function (){
var date_start = $ ( '#calendar' ) . fullCalendar ( 'getView' ) . start . format ( 'YYYY-MM-DD' );
date_start = moment ( date_start );
2018-05-11 10:22:38 +02:00
2018-04-16 17:49:09 +02:00
if ( '<?php echo $def; ?>' == 'month' ){
if ( date_start . date () > 1 ){
date_start = moment ( date_start ) . add ( 1 , 'M' ) . startOf ( 'month' );
}
}
2018-05-11 10:22:38 +02:00
2018-04-16 17:49:09 +02:00
date_start = date_start . format ( 'YYYY-MM-DD' );
setCookie ( 'calendar_date_start' , date_start , 365 );
});
2018-05-11 10:22:38 +02:00
2018-04-16 17:49:09 +02:00
calendar_date_start = getCookie ( 'calendar_date_start' );
2018-05-14 19:17:14 +02:00
if ( calendar_date_start != '' )
$ ( '#calendar' ) . fullCalendar ( 'gotoDate' , calendar_date_start );
2018-05-11 10:22:38 +02:00
2017-08-04 16:28:16 +02:00
});
function create_calendar (){
$ ( '#external-events .fc-event' ) . each ( function () {
// store data so the calendar knows to render an event upon drop
$ ( this ) . data ( 'event' , {
title : $ . trim ( $ ( this ) . text ()), // use the element's text as the event title
stick : false // maintain when user navigates (see docs on the renderEvent method)
});
// make the event draggable using jQuery UI
$ ( this ) . draggable ({
zIndex : 999 ,
2018-08-11 15:49:46 +02:00
revert : true , // will cause the event to go back to its
2017-08-04 16:28:16 +02:00
revertDuration : 0 // original position after the drag
});
});
var calendar = $ ( '#calendar' ) . fullCalendar ({
locale : globals . locale ,
2020-02-03 09:58:38 +01:00
height : " auto " ,
2017-08-04 16:28:16 +02:00
< ? php
2018-07-08 18:11:17 +02:00
$domenica = setting ( 'Visualizzare la domenica sul calendario' );
2017-12-31 16:00:23 +01:00
if ( empty ( $domenica )) {
2017-08-04 16:28:16 +02:00
echo '
hiddenDays : [ 0 ], ' ;
}
?>
header : {
left : 'prev,next today' ,
center : 'title' ,
right : 'month,agendaWeek,agendaDay'
},
timeFormat : 'H:mm' ,
slotLabelFormat : " H:mm " ,
slotDuration : '00:15:00' ,
defaultView : '<?php echo $def; ?>' ,
< ? php
2018-09-18 17:58:15 +02:00
echo "
2020-01-30 11:20:22 +01:00
minTime : '".setting(' Ora inizio sul calendario ')."' ,
maxTime : '".((setting(' Ora fine sul calendario ') != ' 00 : 00 : 00 ' and !empty(setting(' Ora fine sul calendario '))) ? setting(' Ora fine sul calendario ') : ' 23 : 59 : 59 ')."' ,
2018-09-18 17:58:15 +02:00
" ;
2017-08-04 16:28:16 +02:00
?>
2017-08-30 11:50:46 +02:00
lazyFetching : true ,
2019-12-12 13:03:37 +01:00
slotEventOverlap : false ,
2017-08-04 16:28:16 +02:00
selectHelper : true ,
eventLimit : false , // allow "more" link when too many events
allDaySlot : false ,
2017-08-30 11:50:46 +02:00
loading : function ( isLoading , view ) {
if ( isLoading ) {
2017-09-01 12:55:48 +02:00
$ ( '#tiny-loader' ) . fadeIn ();
2017-08-30 11:50:46 +02:00
} else {
2017-09-01 12:55:48 +02:00
$ ( '#tiny-loader' ) . hide ();
2017-08-30 11:50:46 +02:00
}
},
2017-09-07 18:58:41 +02:00
< ? php
2017-09-12 14:40:26 +02:00
if ( Modules :: getPermission ( 'Interventi' ) == 'rw' ) {
2017-08-31 10:09:06 +02:00
?>
2017-09-01 12:55:48 +02:00
droppable : true ,
2017-08-04 16:28:16 +02:00
drop : function ( date , jsEvent , ui , resourceId ) {
data = moment ( date ) . format ( " YYYY-MM-DD " );
ora_dal = moment ( date ) . format ( " HH:mm " );
ora_al = moment ( date ) . add ( 1 , 'hours' ) . format ( " HH:mm " );
2018-09-20 09:21:34 +02:00
ref = $ ( this ) . data ( 'ref' );
if ( ref == 'ordine' ) {
name = 'idordineservizio' ;
2018-10-25 16:17:52 +02:00
} else if ( ref == 'promemoria' ) {
2018-09-20 09:21:34 +02:00
name = 'idcontratto_riga' ;
} else {
name = 'id_intervento' ;
}
2017-08-04 16:28:16 +02:00
2019-07-29 13:16:55 +02:00
launch_modal ( '<?php echo tr(' Pianifica intervento '); ?>' , globals . rootdir + '/add.php?id_module=<?php echo Modules::get(' Interventi ')[' id ']; ?>&data=' + data + '&orario_inizio=' + ora_dal + '&orario_fine=' + ora_al + '&ref=dashboard&idcontratto=' + $ ( this ) . data ( 'idcontratto' ) + '&' + name + '=' + $ ( this ) . data ( 'id' ));
2017-08-04 16:28:16 +02:00
$ ( this ) . remove ();
2017-08-31 10:09:06 +02:00
2020-02-05 12:40:44 +01:00
$ ( '#modals > div' ) . on ( 'hidden.bs.modal' , function () {
2017-08-31 10:09:06 +02:00
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
});
},
2017-09-01 12:55:48 +02:00
selectable : true ,
2017-08-04 16:28:16 +02:00
select : function ( start , end , allDay ) {
data = moment ( start ) . format ( " YYYY-MM-DD " );
ora_dal = moment ( start ) . format ( " HH:mm " );
ora_al = moment ( end ) . format ( " HH:mm " );
2019-07-29 13:16:55 +02:00
launch_modal ( '<?php echo tr(' Aggiungi intervento '); ?>' , globals . rootdir + '/add.php?id_module=<?php echo Modules::get(' Interventi ')[' id ']; ?>&ref=dashboard&data=' + data + '&orario_inizio=' + ora_dal + '&orario_fine=' + ora_al );
2017-08-04 16:28:16 +02:00
$ ( '#calendar' ) . fullCalendar ( 'unselect' );
},
2017-09-01 12:55:48 +02:00
editable : true ,
eventDrop : function ( event , dayDelta , minuteDelta , revertFunc ) {
2018-07-19 12:47:28 +02:00
$ . get ( globals . rootdir + " /modules/dashboard/actions.php?op=update_intervento&id= " + event . id + " &idintervento= " + event . idintervento + " &timeStart= " + moment ( event . start ) . format ( " YYYY-MM-DD HH:mm " ) + " &timeEnd= " + moment ( event . end ) . format ( " YYYY-MM-DD HH:mm " ), function ( data , response ){
2017-08-04 16:28:16 +02:00
if ( response == " success " ){
data = $ . trim ( data );
2017-09-01 12:55:48 +02:00
if ( data != " ok " ){
2017-08-04 16:28:16 +02:00
alert ( data );
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
revertFunc ();
}
else {
return false ;
}
}
});
},
2017-09-01 12:55:48 +02:00
eventResize : function ( event , dayDelta , minuteDelta , revertFunc ) {
2018-07-19 12:47:28 +02:00
$ . get ( globals . rootdir + " /modules/dashboard/actions.php?op=update_intervento&id= " + event . id + " &idintervento= " + event . idintervento + " &timeStart= " + moment ( event . start ) . format ( " YYYY-MM-DD HH:mm " ) + " &timeEnd= " + moment ( event . end ) . format ( " YYYY-MM-DD HH:mm " ), function ( data , response ){
2017-08-04 16:28:16 +02:00
if ( response == " success " ){
data = $ . trim ( data );
2017-09-01 12:55:48 +02:00
if ( data != " ok " ){
2017-08-04 16:28:16 +02:00
alert ( data );
$ ( '#calendar' ) . fullCalendar ( 'refetchEvents' );
revertFunc ();
}
else {
return false ;
}
}
});
},
2017-09-07 18:58:41 +02:00
< ? php
2017-09-01 12:55:48 +02:00
}
2017-09-07 18:58:41 +02:00
?>
2017-08-30 11:50:46 +02:00
eventAfterRender : function ( event , element ) {
2017-08-04 16:28:16 +02:00
element . find ( '.fc-title' ) . html ( event . title );
2017-09-07 18:58:41 +02:00
< ? php
2017-09-01 12:55:48 +02:00
2018-07-08 18:11:17 +02:00
if ( setting ( 'Utilizzare i tooltip sul calendario' ) == '1' ) {
2017-09-07 18:58:41 +02:00
?>
2020-01-09 19:09:49 +01:00
element . tooltipster ({
content : '<?php echo tr(' Caricamento ... '); ?>' ,
animation : 'grow' ,
2020-01-09 19:12:04 +01:00
updateAnimation : 'grow' ,
2020-01-09 19:09:49 +01:00
contentAsHTML : true ,
hideOnClick : true ,
speed : 200 ,
delay : 300 ,
maxWidth : 400 ,
theme : 'tooltipster-shadow' ,
touchDevices : true ,
trigger : 'hover' ,
position : 'left' ,
functionBefore : function ( instance , helper ) {
var $origin = $ ( helper . origin );
// we set a variable so the data is only loaded once via Ajax, not every time the tooltip opens
if ( $origin . data ( 'loaded' ) !== true ) {
$ . get ( globals . rootdir + " /modules/dashboard/actions.php?op=get_more_info&id= " + event . idintervento , function ( data ) {
// call the 'content' method to update the content of our tooltip with the returned data.
// note: this content update will trigger an update animation (see the updateAnimation option)
instance . content ( data );
// to remember that the data has been loaded
$origin . data ( 'loaded' , true );
});
}
}
});
2017-09-07 18:58:41 +02:00
< ? php
2017-09-01 12:55:48 +02:00
}
2017-09-07 18:58:41 +02:00
?>
},
2017-09-01 12:55:48 +02:00
events : {
2018-07-19 12:47:28 +02:00
url : globals . rootdir + " /modules/dashboard/actions.php?op=get_current_month " ,
2017-09-01 12:55:48 +02:00
type : 'GET' ,
error : function () {
2017-09-04 12:02:29 +02:00
alert ( '<?php echo tr(' Errore durante la creazione degli eventi '); ?>' );
2017-09-01 12:55:48 +02:00
}
2017-08-04 16:28:16 +02:00
}
});
}
</ script >