2017-09-22 09:58:29 +02:00
< ? php
2018-10-31 16:22:19 +01:00
use Carbon\Carbon ;
2017-09-22 09:58:29 +02:00
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 ,
2018-09-24 10:51:48 +02:00
'idanagrafica' => setting ( 'Azienda predefinita' ),
2018-10-31 16:22:19 +01:00
'data_richiesta' => Carbon :: now (),
2018-05-12 10:50:51 +02:00
'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 );
}
}
2018-07-31 14:50:28 +02:00
break ;
case 'intervento' :
$data = $request [ 'data' ];
$dbo -> update ( 'in_interventi' , [
2018-08-31 15:58:35 +02:00
'idstatointervento' => $data [ 'id_stato_intervento' ],
2018-07-31 14:50:28 +02:00
'descrizione' => $data [ 'descrizione' ],
2018-08-31 16:20:59 +02:00
'informazioniaggiuntive' => $data [ 'informazioni_aggiuntive' ],
2018-07-31 14:50:28 +02:00
], [ 'id' => $data [ 'id' ]]);
break ;
case 'firma_intervento' :
$data = $request [ 'data' ];
$dbo -> update ( 'in_interventi' , [
'firma_file' => $data [ 'firma_file' ],
'firma_data' => $data [ 'firma_data' ],
'firma_nome' => $data [ 'firma_nome' ],
], [ 'id' => $data [ 'id' ]]);
2017-09-22 09:58:29 +02:00
break ;
}
return [
2018-04-08 09:37:45 +02:00
'sync' ,
2018-07-31 14:50:28 +02:00
'intervento' ,
'firma_intervento' ,
2017-09-22 09:58:29 +02:00
];