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
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` ,
DATE_FORMAT ( `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` ,
`an_sedi` . `idzona` AS zona_sede ,
`in_interventi` . `idstatointervento` ,
`in_interventi` . `informazioniaggiuntive` ,
`in_interventi` . `idclientefinale` ,
`in_interventi` . `firma_file` ,
IF ( firma_data = '0000-00-00 00:00:00' , '' , DATE_FORMAT ( firma_data , '%d/%m/%Y %T' ) ) AS `firma_data` ,
`in_interventi` . firma_nome ,
( 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 DATE_FORMAT ( MAX ( `orario_fine` ), '%Y%m%d' ) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici` . `idintervento` = `in_interventi` . `id` ) 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`
FROM `in_interventi`
INNER JOIN `in_statiintervento` ON `in_interventi` . `idstatointervento` = `in_statiintervento` . `idstatointervento`
INNER JOIN `an_anagrafiche` ON `in_interventi` . `idanagrafica` = `an_anagrafiche` . `idanagrafica`
2018-07-27 15:06:21 +02:00
LEFT JOIN `an_sedi` ON `in_interventi` . `idsede` = `an_sedi` . `id`
2018-07-27 12:17:17 +02:00
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-27 15:06:21 +02:00
$results = $dbo -> fetchArray ( $query , $parameters . ' LIMIT ' . ( $page * $length ) . ', ' . $length );
2018-07-27 12:17:17 +02:00
$results [ 'records' ] = $database -> fetchNum ( $query , $parameters );
$results [ 'pages' ] = $results [ 'records' ] / $length ;
2018-06-26 14:30:26 +02:00
2018-07-28 17:57:01 +02:00
break ;
// Elenco sessioni dell'intervento per l'applicazione
case 'sessioni_intervento' :
2018-07-31 14:50:28 +02:00
$query = 'SELECT id, idintervento, orario_inizio, orario_fine FROM in_interventi_tecnici WHERE `idintervento` = :id_intervento' ;
2018-07-28 17:57:01 +02:00
2018-07-31 14:50:28 +02:00
if ( $user [ 'gruppo' ] == 'Tecnici' ) {
$query .= ' AND `idtecnico` = :id_tecnico' ;
}
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' ],
':id_tecnico' => $user [ 'idanagrafica' ],
2018-07-28 17:57:01 +02:00
];
$results = $dbo -> fetchArray ( $query , $parameters . ' LIMIT ' . ( $page * $length ) . ', ' . $length );
$results [ 'records' ] = $database -> fetchNum ( $query , $parameters );
$results [ 'pages' ] = $results [ 'records' ] / $length ;
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' ,
];