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 );
2018-08-09 15:33:01 +02:00
$response [ 'custom' ] = '' ;
2017-09-22 09:58:29 +02:00
2018-08-09 15:33:01 +02:00
$response [ 'custom' ] .= " BEGIN:VCALENDAR \n " ;
$response [ 'custom' ] .= 'VERSION:' . Update :: getVersion () . " \n " ;
$response [ 'custom' ] .= " PRODID:-// OpenSTAManager \n " ;
2017-09-22 09:58:29 +02:00
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
2018-08-09 15:33:01 +02:00
$response [ 'custom' ] .= " BEGIN:VEVENT \n " ;
$response [ 'custom' ] .= 'UID:' . $r [ 'idriga' ] . " \n " ;
$response [ 'custom' ] .= 'DTSTAMP:' . date ( 'Ymd' ) . 'T' . date ( 'His' ) . " \n " ;
//$response['custom'] .= 'ORGANIZER;CN='.$azienda.':MAILTO:'.$email."\n";
$response [ 'custom' ] .= 'DTSTART:' . date ( 'Ymd' , strtotime ( $r [ 'orario_inizio' ])) . 'T' . date ( 'His' , strtotime ( $r [ 'orario_inizio' ])) . " \n " ;
$response [ 'custom' ] .= 'DTEND:' . date ( 'Ymd' , strtotime ( $r [ 'orario_fine' ])) . 'T' . date ( 'His' , strtotime ( $r [ 'orario_fine' ])) . " \n " ;
$response [ 'custom' ] .= 'SUMMARY:' . html_entity_decode ( $r [ 'summary' ]) . " \n " ;
$response [ 'custom' ] .= 'DESCRIPTION:' . html_entity_decode ( $richiesta , ENT_QUOTES , 'UTF-8' ) . " \n " ;
$response [ 'custom' ] .= " END:VEVENT \n " ;
2017-09-22 09:58:29 +02:00
}
2018-08-09 15:33:01 +02:00
$response [ 'custom' ] .= " END:VCALENDAR \n " ;
2017-09-22 09:58:29 +02:00
break ;
2018-05-18 23:42:20 +02:00
2018-07-27 12:17:17 +02:00
// Elenco interventi per l'applicazione (recupero sempre tutti gli interventi che non vengono chiusi)
2018-05-18 23:42:20 +02:00
case 'interventi' :
2018-07-27 12:17:17 +02:00
// Periodo per selezionare interventi
2018-06-26 14:30:26 +02:00
$today = date ( 'Y-m-d' );
$period_end = date ( 'Y-m-d' , strtotime ( $today . ' +7 days' ));
2018-05-18 23:42:20 +02:00
2018-07-27 12:17:17 +02:00
$query = " SELECT `in_interventi`.`id`,
`in_interventi` . `codice` ,
2018-08-01 15:15:14 +02:00
`in_interventi` . `data_richiesta` ,
2018-07-27 12:17:17 +02:00
`in_interventi` . `richiesta` ,
`in_interventi` . `descrizione` ,
`in_interventi` . `idtipointervento` ,
`in_interventi` . `idanagrafica` ,
2018-08-29 18:06:51 +02:00
`in_interventi` . `idautomezzo` ,
2018-07-27 12:17:17 +02:00
`in_interventi` . `idsede` ,
`in_interventi` . `idstatointervento` ,
`in_interventi` . `informazioniaggiuntive` ,
`in_interventi` . `idclientefinale` ,
`in_interventi` . `firma_file` ,
2018-08-01 15:15:14 +02:00
IF ( firma_data = '0000-00-00 00:00:00' , '' , firma_data ) AS `firma_data` ,
2018-07-27 12:17:17 +02:00
`in_interventi` . firma_nome ,
2018-08-29 18:06:51 +02:00
( 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` ,
( SELECT MAX ( `orario_fine` ) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici` . `idintervento` = `in_interventi` . `id` ) AS `data` ,
2018-08-31 17:33:33 +02:00
( SELECT GROUP_CONCAT ( DISTINCT 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` ,
2018-07-27 12:17:17 +02:00
`in_statiintervento` . `colore` AS `bgcolor` ,
`in_statiintervento` . `descrizione` AS `stato` ,
`in_interventi` . `idtipointervento` AS `tipo`
FROM `in_interventi`
2018-08-29 18:06:51 +02:00
INNER JOIN `in_statiintervento` ON `in_interventi` . `idstatointervento` = `in_statiintervento` . `idstatointervento`
INNER JOIN `an_anagrafiche` ON `in_interventi` . `idanagrafica` = `an_anagrafiche` . `idanagrafica`
LEFT JOIN `an_sedi` ON `in_interventi` . `idsede` = `an_sedi` . `id`
WHERE ( SELECT MAX ( `orario_fine` ) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici` . `idintervento` = `in_interventi` . `id` ) <= : period_end " ;
2018-05-18 23:42:20 +02:00
// 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-07-27 12:17:17 +02:00
$parameters = [
':period_end' => $period_end ,
];
2018-07-28 17:57:01 +02:00
break ;
// Elenco sessioni dell'intervento per l'applicazione
case 'sessioni_intervento' :
2018-07-31 18:12:02 +02:00
$query = 'SELECT id, idintervento AS id_intervento, orario_inizio, orario_fine FROM in_interventi_tecnici WHERE `idintervento` = :id_intervento' ;
2018-07-28 17:57:01 +02:00
// TODO: rimosse seguenti clausole:
// WHERE `in_interventi`.idstatointervento IN(SELECT idstatointervento FROM in_statiintervento WHERE app_download=1)
// nel database ufficiale manca in_statiintervento.app_download
$parameters = [
2018-07-31 14:50:28 +02:00
':id_intervento' => $request [ 'id_intervento' ],
2018-07-28 17:57:01 +02:00
];
2018-07-31 18:12:02 +02:00
if ( $user [ 'gruppo' ] == 'Tecnici' ) {
$query .= ' AND `idtecnico` = :id_tecnico' ;
$parameters [ ':id_tecnico' ] = $user [ 'idanagrafica' ];
}
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' ,
2018-07-31 18:12:02 +02:00
'sessioni_intervento' ,
2018-06-26 14:30:26 +02:00
];