openstamanager/modules/interventi/api/retrieve.php

132 lines
6.9 KiB
PHP
Raw Normal View History

<?php
switch ($resource) {
case 'sync':
// 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-09-14 11:13:38 +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 DATE(orario_inizio) BETWEEN CURDATE() - INTERVAL 7 DAY AND CURDATE() + INTERVAL 3 MONTH AND deleted_at IS NULL';
2018-03-27 18:01:45 +02:00
if (!empty($user['idanagrafica'])) {
$query .= ' AND in_interventi_tecnici.idtecnico = '.prepare($user['idanagrafica']);
}
$rs = $dbo->fetchArray($query);
$response['custom'] = '';
$response['custom'] .= "BEGIN:VCALENDAR\n";
$response['custom'] .= 'VERSION:'.Update::getVersion()."\n";
$response['custom'] .= "PRODID:-// OpenSTAManager\n";
foreach ($rs as $r) {
$richiesta = str_replace("\r\n", "\n", $r['richiesta']);
$richiesta = str_replace("\r", "\n", $richiesta);
$richiesta = str_replace("\n", '\\n', $richiesta);
$r['summary'] = str_replace("\r\n", "\n", $r['summary']);
$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";
}
$response['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'));
2019-02-22 16:37:59 +01:00
$period_start = date('Y-m-d', strtotime($today.' -2 months'));
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,
2019-02-22 16:37:59 +01: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`,
2018-08-29 18:06:51 +02:00
(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`
2019-02-22 16:37:59 +01:00
WHERE EXISTS(SELECT `orario_fine` FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` AND `orario_fine` BETWEEN :period_start AND :period_end)";
2018-05-18 23:42:20 +02:00
2019-02-22 16:37:59 +01:00
// TODO: rimosse le seguenti clausole
2018-05-18 23:42:20 +02:00
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,
2019-02-22 16:37:59 +01:00
':period_start' => $period_start,
2018-07-27 12:17:17 +02:00
];
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-09-03 10:44:11 +02:00
break;
// Elenco articoli dell'intervento per l'applicazione
case 'articoli_intervento':
$query = 'SELECT id, idarticolo AS id_articolo, idintervento AS id_intervento, IF(idautomezzo != 0, idautomezzo, NULL) AS id_automezzo, qta, created_at as data FROM mg_articoli_interventi WHERE `idintervento` = :id_intervento';
$parameters = [
':id_intervento' => $request['id_intervento'],
];
2018-05-18 23:42:20 +02:00
break;
}
return [
'sync',
2018-06-26 14:30:26 +02:00
'interventi',
2018-07-31 18:12:02 +02:00
'sessioni_intervento',
2018-09-03 10:44:11 +02:00
'articoli_intervento',
2018-06-26 14:30:26 +02:00
];