package space.nstart.pcp.pcp_types_lib.utils.json

import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.databind.JsonSerializer
import com.fasterxml.jackson.databind.SerializerProvider
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter

class LocalDateTimeTimeZoneSerializer: JsonSerializer<LocalDateTime?>() {

    companion object {
        val fmt: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSxxx")
    }

    override fun serialize(p0: LocalDateTime?, p1: JsonGenerator, p2: SerializerProvider) {

        //todo: проверить корректность зоны по нормальным правилам
//        p1.writeString(p0?.atZone(ZoneId.of("Europe/Moscow"))?.format(fmt))
        p1.writeString(p0?.atZone(ZoneId.systemDefault())?.format(fmt))
    }
}