2017-09-22 09:58:29 +02:00
< ? php
switch ( $resource ) {
case 'sync' :
2018-05-12 10:50:51 +02:00
// Normalizzazione degli interventi a database
$dbo -> query ( 'UPDATE in_interventi_tecnici SET summary = (SELECT ragione_sociale FROM an_anagrafiche INNER JOIN in_interventi ON an_anagrafiche.idanagrafica=in_interventi.idanagrafica WHERE in_interventi.id=in_interventi_tecnici.idintervento) WHERE summary IS NULL' );
$dbo -> query ( 'UPDATE in_interventi_tecnici SET uid = id WHERE uid IS NULL' );
// Individuazione degli interventi
2018-07-17 08:05:19 +02:00
$query = 'SELECT in_interventi_tecnici.id AS idriga, in_interventi_tecnici.idintervento, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS cliente, richiesta, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, summary FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE CAST(orario_inizio AS DATE) BETWEEN CURDATE()-INTERVAL 7 DAY AND CURDATE()+INTERVAL 3 MONTH AND deleted_at IS NULL' ;
2017-09-22 09:58:29 +02:00
2018-03-27 18:01:45 +02:00
if ( ! empty ( $user [ 'idanagrafica' ])) {
2018-05-12 10:50:51 +02:00
$query .= ' AND in_interventi_tecnici.idtecnico = ' . prepare ( $user [ 'idanagrafica' ]);
2017-09-22 09:58:29 +02:00
}
2018-05-12 10:50:51 +02:00
2017-09-22 09:58:29 +02:00
$rs = $dbo -> fetchArray ( $query );
$results = [];
$results [ 'custom' ] = '' ;
$results [ 'custom' ] .= " BEGIN:VCALENDAR \n " ;
2018-05-12 10:50:51 +02:00
$results [ 'custom' ] .= 'VERSION:' . Update :: getVersion () . " \n " ;
2017-09-22 09:58:29 +02:00
$results [ 'custom' ] .= " PRODID:-// OpenSTAManager \n " ;
2018-05-12 10:50:51 +02:00
foreach ( $rs as $r ) {
$richiesta = str_replace ( " \r \n " , " \n " , $r [ 'richiesta' ]);
2017-09-22 09:58:29 +02:00
$richiesta = str_replace ( " \r " , " \n " , $richiesta );
$richiesta = str_replace ( " \n " , '\\n' , $richiesta );
2018-05-12 10:50:51 +02:00
$r [ 'summary' ] = str_replace ( " \r \n " , " \n " , $r [ 'summary' ]);
2017-09-22 09:58:29 +02:00
$results [ 'custom' ] .= " BEGIN:VEVENT \n " ;
2018-05-12 10:50:51 +02:00
$results [ 'custom' ] .= 'UID:' . $r [ 'idriga' ] . " \n " ;
2017-09-22 09:58:29 +02:00
$results [ 'custom' ] .= 'DTSTAMP:' . date ( 'Ymd' ) . 'T' . date ( 'His' ) . " \n " ;
2018-05-12 10:50:51 +02:00
//$results['custom'] .= 'ORGANIZER;CN='.$azienda.':MAILTO:'.$email."\n";
$results [ 'custom' ] .= 'DTSTART:' . date ( 'Ymd' , strtotime ( $r [ 'orario_inizio' ])) . 'T' . date ( 'His' , strtotime ( $r [ 'orario_inizio' ])) . " \n " ;
$results [ 'custom' ] .= 'DTEND:' . date ( 'Ymd' , strtotime ( $r [ 'orario_fine' ])) . 'T' . date ( 'His' , strtotime ( $r [ 'orario_fine' ])) . " \n " ;
$results [ 'custom' ] .= 'SUMMARY:' . html_entity_decode ( $r [ 'summary' ]) . " \n " ;
2017-09-22 09:58:29 +02:00
$results [ 'custom' ] .= 'DESCRIPTION:' . html_entity_decode ( $richiesta , ENT_QUOTES , 'UTF-8' ) . " \n " ;
$results [ 'custom' ] .= " END:VEVENT \n " ;
}
$results [ 'custom' ] .= " END:VCALENDAR \n " ;
break ;
2018-05-18 23:42:20 +02:00
// per APP ufficiale OpenSTAManager
case 'interventi' :
2018-06-26 14:30:26 +02:00
2018-05-18 23:42:20 +02:00
// periodo per selezionare interventi
// in questo modo recupero sempre tutti gli interventi che non vengono chiusi
// vedi anche lista degli stati intervento presenti nella query
// se un intervento è stato pre-chiuso dal tecnico oppure chiuso dall'ufficio non viene scaricato da APP
2018-06-26 14:30:26 +02:00
$today = date ( 'Y-m-d' );
$period_start = '2000-01-01' ;
$period_end = date ( 'Y-m-d' , strtotime ( $today . ' +7 days' ));
2018-05-18 23:42:20 +02:00
2018-07-17 08:05:19 +02:00
$q = " SELECT `in_interventi`.id,
`in_interventi` . codice ,
DATE_FORMAT ( MAX ( `in_interventi` . `data_richiesta` ), '%Y%m%d' ) AS `data_richiesta` ,
`in_interventi` . richiesta ,
`in_interventi` . descrizione ,
`in_interventi` . idtipointervento ,
`in_interventi` . idanagrafica ,
`an_anagrafiche` . idzona AS zona_anagrafica ,
`in_interventi` . idsede ,
2018-05-18 23:42:20 +02:00
`an_sedi` . idzona AS zona_sede ,
2018-07-17 08:05:19 +02:00
`in_interventi` . idstatointervento ,
`in_interventi` . informazioniaggiuntive ,
`in_interventi` . idsede ,
`in_interventi` . idclientefinale ,
`in_interventi` . firma_file ,
IF ( MAX ( firma_data ) = '0000-00-00 00:00:00' , '' , DATE_FORMAT ( MAX ( firma_data ), '%d/%m/%Y %T' ) ) AS `firma_data` ,
`in_interventi` . firma_nome ,
IFNULL (( SELECT GROUP_CONCAT ( CONCAT ( my_impianti . matricola , ' - ' , my_impianti . nome ) SEPARATOR ', ' )
FROM ( my_impianti_interventi INNER JOIN my_impianti ON my_impianti_interventi . idimpianto = my_impianti . id )
WHERE my_impianti_interventi . idintervento = `in_interventi` . `id` ), '' ) AS `impianti` ,
DATE_FORMAT ( MAX ( `orario_fine` ), '%Y%m%d' ) AS `data` ,
( SELECT GROUP_CONCAT ( ragione_sociale SEPARATOR ', ' ) FROM ( `in_interventi_tecnici` INNER JOIN `an_anagrafiche` ON `in_interventi_tecnici` . `idtecnico` = `an_anagrafiche` . `idanagrafica` ) WHERE `in_interventi_tecnici` . `idintervento` = `in_interventi` . `id` ) AS `tecnici` ,
`in_statiintervento` . `colore` AS `bgcolor` ,
`in_statiintervento` . `descrizione` AS `stato` ,
`in_interventi` . `idtipointervento` AS `tipo` ,
2018-05-18 23:42:20 +02:00
DATE_FORMAT ( MAX ( `orario_inizio` ), '%d/%m/%Y %T' ) AS `orario_inizio_leggibile` ,
2018-07-17 08:05:19 +02:00
DATE_FORMAT ( MAX ( `orario_fine` ), '%d/%m/%Y %T' ) AS `orario_fine_leggibile` ,
`orario_inizio` , `orario_fine`
FROM ( `in_interventi`
INNER JOIN `in_statiintervento` ON `in_interventi` . `idstatointervento` = `in_statiintervento` . `idstatointervento` )
INNER JOIN `in_interventi_tecnici` ON `in_interventi_tecnici` . `idintervento` = `in_interventi` . `id`
2018-05-18 23:42:20 +02:00
INNER JOIN `an_anagrafiche` ON `in_interventi` . `idanagrafica` = `an_anagrafiche` . `idanagrafica`
2018-07-17 08:05:19 +02:00
LEFT OUTER JOIN `an_sedi` ON `in_interventi` . `idsede` = `an_sedi` . `id`
GROUP BY `in_interventi` . `id`
HAVING ( DATE_FORMAT ( `orario_fine` , '%Y-%m-%d' ) >= '".$period_start."' AND
DATE_FORMAT ( `orario_fine` , '%Y-%m-%d' ) <= '".$period_end."' )
2018-05-18 23:42:20 +02:00
ORDER BY `orario_fine` DESC " ;
// TODO: rimosse seguenti clausole:
2018-06-26 14:30:26 +02:00
// WHERE `in_interventi`.idstatointervento IN(SELECT idstatointervento FROM in_statiintervento WHERE app_download=1)
2018-05-18 23:42:20 +02:00
// nel database ufficiale manca in_statiintervento.app_download
// AND `in_interventi_tecnici`.`idtecnico`='".$tecnico[0]['idanagrafica']."'
// nell'inner join con in_interventi_tecnici -> ad oggi 16-05-2018 non gestisco ancora idtecnico
2018-06-26 14:30:26 +02:00
$results = $dbo -> fetchArray ( $q );
2018-05-18 23:42:20 +02:00
break ;
2017-09-22 09:58:29 +02:00
}
return [
'sync' ,
2018-06-26 14:30:26 +02:00
'interventi' ,
];