Skip to content

Commit 1962ea9

Browse files
committed
fix: salvataggio date sessioni api app
1 parent ba32f64 commit 1962ea9

1 file changed

Lines changed: 30 additions & 3 deletions

File tree

src/API/App/v1/SessioniInterventi.php

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ protected function aggiornaSessione($sessione, $data)
160160
$id_tipo = $data['id_tipo_intervento'];
161161
$sessione->setTipo($id_tipo);
162162

163-
// Campi di base
164-
$sessione->orario_inizio = $data['orario_inizio'];
165-
$sessione->orario_fine = $data['orario_fine'];
163+
// conversione delle date dal fuso orario dell'app al fuso orario locale
164+
$sessione->orario_inizio = $this->convertToLocalTimezone($data['orario_inizio']);
165+
$sessione->orario_fine = $this->convertToLocalTimezone($data['orario_fine']);
166166
$sessione->km = $data['km'];
167167

168168
// Prezzi
@@ -180,4 +180,31 @@ protected function aggiornaSessione($sessione, $data)
180180

181181
return [];
182182
}
183+
184+
/**
185+
* Converte una data dal formato ISO con timezone al fuso orario locale del server.
186+
*
187+
* @param string $isoDateTime Data in formato ISO (es: "2025-11-11T08:00:00.000+01:00")
188+
* @return string Data convertita nel fuso orario locale in formato Y-m-d H:i:s
189+
*/
190+
protected function convertToLocalTimezone($isoDateTime)
191+
{
192+
if (empty($isoDateTime)) {
193+
return null;
194+
}
195+
196+
try {
197+
// Crea un oggetto Carbon dalla data ISO con timezone
198+
$carbonDate = Carbon::parse($isoDateTime);
199+
200+
// Converte al fuso orario locale del server (Europe/Rome)
201+
$localDate = $carbonDate->setTimezone('Europe/Rome');
202+
203+
// Restituisce la data nel formato standard del database
204+
return $localDate->format('Y-m-d H:i:s');
205+
} catch (\Exception $e) {
206+
// In caso di errore, restituisce la data originale
207+
return $isoDateTime;
208+
}
209+
}
183210
}

0 commit comments

Comments
 (0)