// Custom Date serializer for local timezone
export class DateSerializer {
  static toLocalTime(date: Date): string | null {
    if (!date) return null;

    // Convert UTC date to Thailand timezone (+07:00)
    const offset = 7 * 60; // Thailand is UTC+7
    const localTime = new Date(date.getTime() + offset * 60 * 1000);

    // Format as ISO string but replace Z with +07:00
    const isoString = localTime.toISOString();
    return isoString.replace("Z", "+07:00");
  }

  static setupDateSerialization() {
    // Override Date.prototype.toJSON to use local time
    Date.prototype.toJSON = function (): any {
      // Check for Invalid Date - return null for invalid dates
      if (isNaN(this.getTime())) return null;

      const offset = 7 * 60; // Thailand timezone offset in minutes
      const localTime = new Date(this.getTime() + offset * 60 * 1000);
      const isoString = localTime.toISOString();
      return isoString.replace("Z", "+07:00");
    };
  }
}
