. */ use Modules\Interventi\Intervento; include_once __DIR__.'/../../core.php'; $tecnici = []; if (!empty($id_record)) { $documento = Intervento::find($id_record); $sessioni = $documento->sessioni; foreach ($sessioni as $sessione) { $id_tecnico = $sessione->idtecnico; $inizio = $sessione->orario_inizio; $fine = $sessione->orario_fine; if (!isset($tecnici[$id_tecnico])) { $tecnici[$id_tecnico] = []; } $tecnici[$id_tecnico][] = [ 'inizio' => $inizio, 'fine' => $fine, ]; } } // Lettura dei dati da URL $tecnici_selezionati = filter('tecnici'); if (!empty($tecnici_selezionati)) { $inizio = filter('inizio'); $fine = filter('fine'); foreach ($tecnici_selezionati as $id_tecnico) { if (empty($id_tecnico)) { continue; } if (!isset($tecnici[$id_tecnico])) { $tecnici[$id_tecnico] = []; } $tecnici[$id_tecnico][] = [ 'inizio' => $inizio, 'fine' => $fine, ]; } } // Blocco dei controlli se non sono presenti tecnici if (empty($tecnici)) { return; } // Individuazione dei conflitti con altri interventi $elenco_conflitti = []; foreach ($tecnici as $id_tecnico => $ore) { $query = 'SELECT idintervento, orario_inizio, orario_fine FROM in_interventi_tecnici WHERE idtecnico = '.prepare($id_tecnico).($id_record ? ' AND idintervento != '.prepare($id_record) : ''); // Conflitti ristretti per orario foreach ($ore as $orario) { $query_conflitto = $query.' AND ((orario_inizio > '.prepare($orario['inizio']).' AND orario_inizio < '.prepare($orario['fine']).') OR (orario_fine > '.prepare($orario['inizio']).' AND orario_fine < '.prepare($orario['fine']).') OR (orario_inizio < '.prepare($orario['inizio']).' AND orario_fine > '.prepare($orario['inizio']).') OR (orario_inizio < '.prepare($orario['fine']).' AND orario_fine > '.prepare($orario['fine']).'))'; $conflitto = $database->fetchArray($query_conflitto); if (!empty($conflitto)) { $elenco_conflitti[$id_tecnico][] = [ 'inizio' => $orario['inizio'], 'fine' => $orario['fine'], 'conflitti' => $conflitto, ]; } } } if (empty($elenco_conflitti)) { return; } echo '
'.tr('Sono presenti dei conflitti con le sessioni di lavoro di alcuni tecnici').'.
'.tr('Tecnico/attività ').' | '.tr('Orario di conflitto').' |
---|---|
'.$anagrafica_tecnico['ragione_sociale'].' '.(!empty($anagrafica_tecnico['deleted_at']) ? '('.tr('Eliminato').')' : '').' | '.timestampFormat($conflitto['inizio']).' - '.timestampFormat($conflitto['fine']).' |
'.Modules::link('Interventi', $intervento->id, $intervento->getReference()).' | '.timestampFormat($conflitto_intervento['orario_inizio']).' - '.timestampFormat($conflitto_intervento['orario_fine']).' |