2017-09-22 09:58:29 +02:00
< ? php
switch ( $resource ) {
2018-04-08 09:37:45 +02:00
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' );
// Interpretazione degli eventi
2017-09-22 09:58:29 +02:00
$idtecnico = $user [ 'idanagrafica' ];
2018-04-08 09:37:45 +02:00
$response = API :: getRequest ( true );
2017-09-22 09:58:29 +02:00
$ical = new iCalEasyReader ();
$events = $ical -> load ( $response );
2018-05-12 10:50:51 +02:00
foreach ( $events [ 'VEVENT' ] as $event ) {
$description = $event [ 'DESCRIPTION' ];
2018-04-08 09:37:45 +02:00
2018-05-12 10:50:51 +02:00
// Individuazione idriga di in_interventi_tecnici
if ( str_contains ( $event [ 'UID' ], '-' )) {
2017-09-22 09:58:29 +02:00
$idriga = 'NEW' ;
} else {
2018-05-12 10:50:51 +02:00
$idriga = $event [ 'UID' ];
2017-09-22 09:58:29 +02:00
}
2018-05-12 10:50:51 +02:00
// Timestamp di inizio
$orario_inizio = DateTime :: createFromFormat ( 'Ymd\\THi' , $event [ 'DTSTART' ]) -> format ( Intl\Formatter :: getStandardFormats ()[ 'timestamp' ]);
2017-09-22 09:58:29 +02:00
2018-05-12 10:50:51 +02:00
// Timestamp di fine
$orario_fine = DateTime :: createFromFormat ( 'Ymd\\THi' , $event [ 'DTEND' ]) -> format ( Intl\Formatter :: getStandardFormats ()[ 'timestamp' ]);
2017-09-22 09:58:29 +02:00
// Descrizione
2018-05-12 10:50:51 +02:00
$richiesta = $event [ 'DESCRIPTION' ];
2017-09-22 09:58:29 +02:00
$richiesta = str_replace ( '\\r\\n' , " \n " , $richiesta );
$richiesta = str_replace ( '\\n' , " \n " , $richiesta );
2018-05-12 10:50:51 +02:00
$summary = trim ( $event [ 'SUMMARY' ]);
$summary = str_replace ( '\\r\\n' , " \n " , $summary );
$summary = str_replace ( '\\n' , " \n " , $summary );
2017-09-22 09:58:29 +02:00
// Nuova attività
if ( $idriga == 'NEW' ) {
2018-05-12 10:50:51 +02:00
$rs_copie = $dbo -> fetchArray ( 'SELECT * FROM in_interventi_tecnici WHERE uid = ' . prepare ( $event [ 'UID' ]));
2017-09-22 09:58:29 +02:00
2018-05-12 10:50:51 +02:00
if ( ! empty ( $rs_copie )) {
$idintervento = $rs_copie [ 0 ][ 'idintervento' ];
2017-09-22 09:58:29 +02:00
2018-05-12 10:50:51 +02:00
$dbo -> update ( 'in_interventi_tecnici' , [
'orario_inizio' => $orario_inizio ,
'orario_fine' => $orario_fine ,
'summary' => $summary ,
], [
'uid' => $event [ 'UID' ],
'idtecnico' => $idtecnico ,
]);
2017-09-22 09:58:29 +02:00
2018-05-12 10:50:51 +02:00
$dbo -> query ( 'UPDATE in_interventi SET richiesta=' . prepare ( $richiesta ) . ', oggetto=' . prepare ( $summary ) . ' WHERE idintervento = (SELECT idintervento FROM in_interventi_tecnici WHERE idintervento = ' . prepare ( $idintervento ) . ' AND idtecnico = ' . prepare ( $idtecnico ) . ' LIMIT 0,1)' );
2017-09-22 09:58:29 +02:00
$idriga = $rs_copie [ 0 ][ 'id' ];
} else {
$idintervento = get_new_idintervento ();
2018-05-12 10:50:51 +02:00
$dbo -> insert ( 'in_interventi' , [
'idintervento' => $idintervento ,
'#idanagrafica' => " (SELECT valore FROM zz_impostazioni WHERE nome='Azienda predefinita') " ,
'#data_richiesta' => 'NOW()' ,
'richiesta' => $richiesta ,
'idtipointervento' => 0 ,
'idstatointervento' => 'CALL' ,
'oggetto' => $summary ,
]);
$dbo -> insert ( 'in_interventi' , [
'idintervento' => $idintervento ,
'idtecnico' => $idtecnico ,
'orario_inizio' => $orario_inizio ,
'orario_fine' => $orario_fine ,
'summary' => $summary ,
'uid' => $event [ 'UID' ],
]);
$idriga = $dbo -> lastInsertedID ();
2017-09-22 09:58:29 +02:00
}
}
// Modifica attività esistente
else {
2018-05-12 10:50:51 +02:00
$dbo -> update ( 'in_interventi_tecnici' , [
'orario_inizio' => $orario_inizio ,
'orario_fine' => $orario_fine ,
'summary' => $summary ,
], [
'id' => $idriga ,
'idtecnico' => $idtecnico ,
]);
$query = 'UPDATE in_interventi SET richiesta=' . prepare ( $richiesta ) . ', oggetto=' . prepare ( $summary ) . ' WHERE idintervento = (SELECT idintervento FROM in_interventi_tecnici WHERE id = ' . prepare ( $idriga ) . ' AND idtecnico = ' . prepare ( $idtecnico ) . ' LIMIT 0,1)' ;
2017-09-22 09:58:29 +02:00
$dbo -> query ( $query );
}
array_push ( $allsession , $idriga );
}
// Eliminazione attività
/*
$rs_sessioni = $dbo -> fetchArray ( " SELECT * FROM in_interventi_tecnici " );
for ( $i = 0 ; $i < sizeof ( $rs_sessioni ); $i ++ ){
if ( ! in_array ( $rs_sessioni [ $i ][ 'id' ], $allsession )){
$idintervento = $rs_sessioni [ $i ][ 'idintervento' ];
$dbo -> query ( " DELETE FROM in_interventi_tecnici WHERE id=' " . $rs_sessioni [ $i ][ 'id' ] . " ' " );
$rs_per_intervento = $dbo -> fetchArray ( " SELECT * FROM in_interventi_tecnici WHERE idintervento=' " . $idintervento . " ' " );
if ( sizeof ( $rs_per_intervento ) == 0 ){
$dbo -> query ( " UPDATE in_interventi SET deleted=1 WHERE idintervento=' " . $idintervento . " ' " );
}
}
}
*/
break ;
}
return [
2018-04-08 09:37:45 +02:00
'sync' ,
2017-09-22 09:58:29 +02:00
];