where('bus_id', $busId) ->select('bus_date_format') ->first(); if ($company && !empty($company->bus_date_format)) { $_SESSION['bus_date_format'] = $company->bus_date_format; self::$cachedFormat = $company->bus_date_format; return self::$cachedFormat; } } catch (\Exception $e) { // Log error if needed, but return default for now } } // Fallback default self::$cachedFormat = self::$defaultFormat; return self::$cachedFormat; } /** * Converts a formatted date back to MySQL format (Y-m-d). * * @param string $date Formatted date string * @return string|null Y-m-d formatted date or null on failure */ public static function toMySQL(string $date): ?string { if (empty($date)) { return null; } // If already Y-m-d (contains - and no /) if (strpos($date, '-') !== false && strpos($date, '/') === false) { return $date; } // Try to parse from company format $format = self::getCompanyDateFormat(); $d = \DateTime::createFromFormat($format, $date); if ($d && $d->format($format) === $date) { return $d->format('Y-m-d'); } // Try common fallback formats $formats = ['d/m/Y', 'm/d/Y', 'Y/m/d']; foreach ($formats as $fmt) { $d = \DateTime::createFromFormat($fmt, $date); if ($d && $d->format($fmt) === $date) { return $d->format('Y-m-d'); } } return null; } }